add sens hat
This commit is contained in:
parent
8d5ed7e9b8
commit
b2738a2d0d
@ -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
|
||||
|
||||
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
|
||||
|
||||
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()
|
||||
|
||||
|
||||
|
||||
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