
| DU LERNST HIER... | 
| wie du ein Gerät über eine serielle Schnittstelle anschliessen kannst. Als wichtige Anwendung verwendest du ein GPS-Modul zur Lokalisierung des aktuellen Standorts und stellst die Daten über das Internet zur Verfügung. | 
| DAS RS-232-PROTOKOLL | 
| Beim RS232C-Protokoll werden die 0-1-Werte eines Bytes zeitlich hintereinander übermittelt, wobei die einzelnen Bits eine bestimmte zeitliche Dauer haben, die durch die Baudrate (bits/s) festgelegt ist. 
 | 
| In MicroPython wird  die serielle Kommunikation durch die Klasse UART modelliert. Dabei fasst man die  Schnittstelle als ein Objekt der Klasse UART auf und gibt im Konstruktor  eine ID, die Baudrate sowie die verwendeten  TX- und RX-Ports an (als ID muss auf der Oxocard 1 gewählt werden). Mit der  Methode write(data) sendest du einen  Bytearray data auf die Schnittstelle.  Empfangene Daten werden in einem Receiverbuffer gespeichert. Mit any() erhältst du die Anzahl empfangener  Datenbytes  und mit data = read(nbBytes) holst du sie ab. Programm: from machine import UART from time import sleep from oxocard import * uart = UART(1, baudrate = 9600, tx = 18, rx = 19) txdata = 'Hello Python' uart.write(txdata) sleep(1) nbChars = uart.any() rxdata = uart.read(nbChars) # bytes rxStr = rxdata.decode('utf-8') bigTextScroll(rxStr) | 
| GLOBAL POSITION SYSTEM (GPS) | 
| Ein GPS-Modul bestimmt die Entfernungen zu mindestens 3 GPS-Satelliten und berechnet daraus die geografische Position mit Triangulation. 
 Programm: from machine import UART def parseGPS(data): s = data.split(",") if s[6] == '0': print("no GPS data available") return None time = s[1][0:2] + ":" + s[1][2:4] + ":" + s[1][4:6] lat = convert(s[2]) dirLat = s[3] lon = convert(s[4]) dirLon = s[5] alt = s[9] + " m" sat = s[7] return time, lat, dirLat, lon, dirLon, alt, sat def convert(coord): # DDDMM.MMMMM -> DD deg MM.MMMMM min v = coord.split(".") head = v[0] tail = v[1] deg = head[0:-2] min = head[-2:] return deg + " deg " + min + "." + tail + " min" uart = UART(1, baudrate = 9600, rx = 19) # tx not used print("starting") inLine = False while True: ch = uart.read(1) if ch == None: continue if ch == b'$': line = bytearray() inLine = True if inLine: line += ch if ch == b'\n': inLine = False line = bytes(line).decode('utf-8') #print(line) if line[0:6] == "$GPGGA": parsed = parseGPS(line) if parsed != None: time, lat, dirLat, lon, dirLon, alt, sat = parsed print("Time(UTC): %s--Latitude:%s(%s)--Longitude:%s(%s)\ -- Altitute:%s--(%s satellites)" %(time, lat, dirLat, lon, dirLon, alt, sat)) | 
| MERKE DIR... | 
| Das RS232-Protokoll verwendet eine serielle Datenübertragung, bei dem die binären Daten bitweise zeitlich hintereinander mit einer zwischen Sender- und Empfänger vereinbarten Geschwindigkeit (Baudrate) übertragen werden. Auch hier wird die objektorientierte Programmierung (OOP) erfolgreich eingesetzt und die Schnittstelle mit einem Objekt der Klasse UART modelliert. | 
| ZUM SELBST LÖSEN | 
| 
 
 
 |