add sens hat
This commit is contained in:
parent
8d5ed7e9b8
commit
b2738a2d0d
@ -9,7 +9,8 @@
|
|||||||
#show: metropolis-theme.with(
|
#show: metropolis-theme.with(
|
||||||
aspect-ratio: "16-9",
|
aspect-ratio: "16-9",
|
||||||
config-info(
|
config-info(
|
||||||
title: [Daten mit 4G],
|
title: [GPS-Tracking und Impact-Detection mit Raspberry Pi],
|
||||||
|
// title: [Daten mit 4G],
|
||||||
subtitle: [Mobile Kommunikationsnetze],
|
subtitle: [Mobile Kommunikationsnetze],
|
||||||
author: [NOAH BALSIGER, THOMAS ZWICKER],
|
author: [NOAH BALSIGER, THOMAS ZWICKER],
|
||||||
date: datetime.today(),
|
date: datetime.today(),
|
||||||
@ -107,6 +108,9 @@
|
|||||||
== öffentliche IP
|
== öffentliche IP
|
||||||
|
|
||||||
== Carrier-Grade NAT (CGNAT)
|
== Carrier-Grade NAT (CGNAT)
|
||||||
|
=======
|
||||||
|
== Öffentliche IP & Carrier-Grade NAT (CGNAT)
|
||||||
|
>>>>>>> Stashed changes
|
||||||
#grid(columns: (1fr,)*1, gutter: 10pt,
|
#grid(columns: (1fr,)*1, gutter: 10pt,
|
||||||
[#align(center)[#image("img/cgnat.png", width: 80%)]],
|
[#align(center)[#image("img/cgnat.png", width: 80%)]],
|
||||||
)
|
)
|
||||||
@ -125,7 +129,6 @@
|
|||||||
|
|
||||||
== Security mqtt
|
== Security mqtt
|
||||||
|
|
||||||
|
|
||||||
== GPS
|
== GPS
|
||||||
|
|
||||||
== Aufbau
|
== Aufbau
|
||||||
|
|||||||
63
src/gps_hat.py
Normal file
63
src/gps_hat.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import serial
|
||||||
|
import time
|
||||||
|
|
||||||
|
class GPS_DATA:
|
||||||
|
breitengrad = ""
|
||||||
|
laengengrad = ""
|
||||||
|
datum = ""
|
||||||
|
zeit_UTC = ""
|
||||||
|
hoehe: float = 0
|
||||||
|
geschwindigkeit_km_h: float = 0
|
||||||
|
|
||||||
|
def __init__(self, port, baud = 115200):
|
||||||
|
self.port = port
|
||||||
|
self.ser = serial.Serial(port, baud, timeout=1)
|
||||||
|
self.ser.write(b'AT+CGPS=1\r\n')
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"N = {self.breitengrad}\t E = {self.laengengrad} \t Datum = {self.datum}\t Zeit = {self.zeit_UTC} \t höhe = {self.hoehe} \t geschwindigkeit = {self.geschwindigkeit_km_h}"
|
||||||
|
|
||||||
|
|
||||||
|
def get_gps_info(self):
|
||||||
|
self.ser.write(b'AT+CGPSINFO\r\n')
|
||||||
|
result = self.ser.read_all().decode()
|
||||||
|
|
||||||
|
if "+CGPSINFO: ,,,,,,,," in result:
|
||||||
|
print("Suche Satelliten...")
|
||||||
|
return False
|
||||||
|
|
||||||
|
if "+CGPSINFO:" in result:
|
||||||
|
raw_data = result.split("\n")[1]
|
||||||
|
raw_data_list = str(raw_data).removeprefix("+CGPSINFO: ").removesuffix(",\r").split(",")
|
||||||
|
self.breitengrad = raw_data_list[0]
|
||||||
|
self.laengengrad = raw_data_list[2]
|
||||||
|
self.datum = raw_data_list[4]
|
||||||
|
self.zeit_UTC = raw_data_list[5]
|
||||||
|
self.hoehe = float(raw_data_list[6])
|
||||||
|
self.geschwindigkeit_km_h = float(raw_data_list[7]) * 1.852 # knoten zu km/h
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
print("Suche Satelliten...")
|
||||||
|
|
||||||
|
def get_sat_count(self):
|
||||||
|
# self.ser.write(b'AT+CPSI?\r\n')
|
||||||
|
self.ser.write(b'AT+CGPSGSV\r\n')
|
||||||
|
time.sleep(0.1)
|
||||||
|
result = self.ser.read_all().decode()
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
gps = GPS_DATA("/dev/ttyUSB0")
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
if gps.get_gps_info():
|
||||||
|
print(gps)
|
||||||
|
# gps.get_sat_count()
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
gps.ser.close()
|
||||||
58
src/main.py
58
src/main.py
@ -1,63 +1,21 @@
|
|||||||
import serial
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
class GPS_DATA:
|
from gps_hat import GPS_DATA
|
||||||
breitengrad = ""
|
from sens_hat import SENS_HAT
|
||||||
laengengrad = ""
|
|
||||||
datum = ""
|
|
||||||
zeit_UTC = ""
|
|
||||||
hoehe: float = 0
|
|
||||||
geschwindigkeit_km_h: float = 0
|
|
||||||
|
|
||||||
def __init__(self, port, baud = 115200):
|
|
||||||
self.port = port
|
|
||||||
self.ser = serial.Serial(port, baud, timeout=1)
|
|
||||||
self.ser.write(b'AT+CGPS=1\r\n')
|
|
||||||
time.sleep(2)
|
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"N = {self.breitengrad}\t E = {self.laengengrad} \t Datum = {self.datum}\t Zeit = {self.zeit_UTC} \t höhe = {self.hoehe} \t geschwindigkeit = {self.geschwindigkeit_km_h}"
|
|
||||||
|
|
||||||
|
|
||||||
def get_gps_info(self):
|
|
||||||
self.ser.write(b'AT+CGPSINFO\r\n')
|
|
||||||
result = self.ser.read_all().decode()
|
|
||||||
|
|
||||||
if "+CGPSINFO: ,,,,,,,," in result:
|
|
||||||
print("Suche Satelliten...")
|
|
||||||
return False
|
|
||||||
|
|
||||||
if "+CGPSINFO:" in result:
|
|
||||||
raw_data = result.split("\n")[1]
|
|
||||||
raw_data_list = str(raw_data).removeprefix("+CGPSINFO: ").removesuffix(",\r").split(",")
|
|
||||||
self.breitengrad = raw_data_list[0]
|
|
||||||
self.laengengrad = raw_data_list[2]
|
|
||||||
self.datum = raw_data_list[4]
|
|
||||||
self.zeit_UTC = raw_data_list[5]
|
|
||||||
self.hoehe = float(raw_data_list[6])
|
|
||||||
self.geschwindigkeit_km_h = float(raw_data_list[7]) * 1.852 # knoten zu km/h
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
print("Suche Satelliten...")
|
|
||||||
|
|
||||||
def get_sat_count(self):
|
|
||||||
# self.ser.write(b'AT+CPSI?\r\n')
|
|
||||||
self.ser.write(b'AT+CGPSGSV\r\n')
|
|
||||||
time.sleep(0.1)
|
|
||||||
result = self.ser.read_all().decode()
|
|
||||||
print(result)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
gps = GPS_DATA("/dev/ttyUSB0")
|
# gps = GPS_DATA("/dev/ttyUSB0")
|
||||||
|
gps = GPS_DATA("/dev/serial0")
|
||||||
|
sens = SENS_HAT()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
if gps.get_gps_info():
|
if gps.get_gps_info():
|
||||||
print(gps)
|
print(gps)
|
||||||
# gps.get_sat_count()
|
print(sens.temp)
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
gps.ser.close()
|
gps.ser.close()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
35
src/sens_hat.py
Normal file
35
src/sens_hat.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
from sense_hat import SenseHat
|
||||||
|
|
||||||
|
|
||||||
|
class SENS_HAT:
|
||||||
|
temp = 0
|
||||||
|
humidity = 0
|
||||||
|
pressure = 0
|
||||||
|
|
||||||
|
roll = 0
|
||||||
|
picht = 0
|
||||||
|
yaw = 0
|
||||||
|
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
z = 0
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.sense = SenseHat()
|
||||||
|
|
||||||
|
def get_sensor_data(self):
|
||||||
|
self.temp = self.sense.get_temperature()
|
||||||
|
self.humidity = self.sense.get_humidity()
|
||||||
|
self.pressure = self.sense.get_pressure()
|
||||||
|
|
||||||
|
orientation = self.sense.get_orientation() # Liefert dir pitch, roll und yaw.
|
||||||
|
acceleration = self.sense.get_accelerometer_raw()
|
||||||
|
|
||||||
|
self.roll = orientation["roll"]
|
||||||
|
self.picht = orientation["picht"]
|
||||||
|
self.yaw = orientation["yaw"]
|
||||||
|
|
||||||
|
self.x = acceleration["x"]
|
||||||
|
self.y = acceleration["y"]
|
||||||
|
self.z = acceleration["z"]
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user