From b2738a2d0d52124ee834acd24cced22c14571280 Mon Sep 17 00:00:00 2001 From: MuedeHydra Date: Thu, 7 May 2026 19:59:41 +0200 Subject: [PATCH] add sens hat --- MOBKOM_Daten_mit_4G.typ | 7 +++-- src/gps_hat.py | 63 +++++++++++++++++++++++++++++++++++++++++ src/main.py | 58 ++++++------------------------------- src/sens_hat.py | 35 +++++++++++++++++++++++ 4 files changed, 111 insertions(+), 52 deletions(-) create mode 100644 src/gps_hat.py create mode 100644 src/sens_hat.py diff --git a/MOBKOM_Daten_mit_4G.typ b/MOBKOM_Daten_mit_4G.typ index f6c9a04..3325f52 100644 --- a/MOBKOM_Daten_mit_4G.typ +++ b/MOBKOM_Daten_mit_4G.typ @@ -9,7 +9,8 @@ #show: metropolis-theme.with( aspect-ratio: "16-9", config-info( - title: [Daten mit 4G], + title: [GPS-Tracking und Impact-Detection mit Raspberry Pi], + // title: [Daten mit 4G], subtitle: [Mobile Kommunikationsnetze], author: [NOAH BALSIGER, THOMAS ZWICKER], date: datetime.today(), @@ -107,6 +108,9 @@ == öffentliche IP == Carrier-Grade NAT (CGNAT) +======= +== Öffentliche IP & Carrier-Grade NAT (CGNAT) +>>>>>>> Stashed changes #grid(columns: (1fr,)*1, gutter: 10pt, [#align(center)[#image("img/cgnat.png", width: 80%)]], ) @@ -125,7 +129,6 @@ == Security mqtt - == GPS == Aufbau diff --git a/src/gps_hat.py b/src/gps_hat.py new file mode 100644 index 0000000..a93bc90 --- /dev/null +++ b/src/gps_hat.py @@ -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() diff --git a/src/main.py b/src/main.py index a93bc90..b6643d0 100644 --- a/src/main.py +++ b/src/main.py @@ -1,63 +1,21 @@ -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) - +from gps_hat import GPS_DATA +from sens_hat import SENS_HAT if __name__ == "__main__": - gps = GPS_DATA("/dev/ttyUSB0") + # gps = GPS_DATA("/dev/ttyUSB0") + gps = GPS_DATA("/dev/serial0") + sens = SENS_HAT() try: while True: if gps.get_gps_info(): print(gps) - # gps.get_sat_count() + print(sens.temp) time.sleep(2) except KeyboardInterrupt: gps.ser.close() + + diff --git a/src/sens_hat.py b/src/sens_hat.py new file mode 100644 index 0000000..7687b63 --- /dev/null +++ b/src/sens_hat.py @@ -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"] +