Stap 3: GPS
Hier ben ik met behulp van de één intel verstrekt aan me als onderdeel van de wedstrijd. Het is een SIM28-chip met een antenne op breakout board dat Grove (http://www.seeedstudio.com/depot/grove-gps-p-959.html?cPath=144_145 verkoopt). Wat aardig is is dat er een stuk van de upm geschreven voor deze chip. Wat niet zo mooi (op het moment van dit schrijven) is dat de code werkt niet (hier is het relevante codevoorbeeld: https://github.com/intel-iot-devkit/upm/blob/2f1b... en het relevante ondersteuning forumthread: https://github.com/intel-iot-devkit/upm/blob/2f1b... (met mijn tijdelijke inefficiënte oplossing)).
Terug aan de gelukkige kant van dingen deze kleine chip doet alle het harde GPS opheffen voor uw en uitgangen NMEA zinnen in tekst zonder opmaak via een seriële verbinding van de UART. Alles wat je hoeft te doen is hen te parseren.
Zoals u in de bovenstaande foto's zien kunt is de hardwareconfiguratie voor dit vrij eenvoudig. Macht tot macht, tot grond, rx tx en tx naar rx (ja u leest dat juist, je kruis hen zodat wat het gps-apparaat verzendt wordt ontvangen op de pin ontvangen van de edison en vice een versa).
Ik ook laten hier zien hoe haak ik de sensoren van de grove hookup draad gebruikt (omdat de wedstrijd kit niet het grove schild hoefde en ik niet bestellen omdat het niet zou zijn gekomen in de tijd). Hier is de code die ik heb het uit ontleden:
#gps sensor #for use with the seeed grove gps sensor (SIM28 based) #uses UART (serial) 9600 8-N-1 import mraa
def getLocation(): u = mraa.Uart(0) u.setBaudRate(9600) GPSData = [0,0,0] while(True): if(u.dataAvailable()): buff = u.readStr(256) if buff.find("GPGGA") != -1: #this is the easiest to parse smallerbuff = buff[buff.find("GPGGA"): buff.find("\n")] splitbuff = smallerbuff.strip().split(",") #print(splitbuff) latnmea = splitbuff[2] latdir = splitbuff[3] lonnmea = splitbuff[4] londir = splitbuff[5] lat = float(latnmea[0:2]) + float(latnmea[2:])/60 lon = float(lonnmea[0:3]) + float(lonnmea[3:])/60 if londir == "W": lon = lon * -1 alt = float(splitbuff[9]) GPSData = [lat,lon,alt] return GPSData
Sommige todos die ik heb in deze afdeling zijn
- Omzetten in weg de standaard baud-rate van 9600 iets hoger. Waarschijnlijk meer reacties krijgen sneller, vooral met de inefficiënte manier krijg ik gegevens.
- Overstappen naar het gebruik van upm zodra het is update (er zijn verschillende threads op dit in de forums van intel en ze lijken enigszins responsieve hierover).
- Configureer de SIM28 naar enkele van de NMEA zinnen die moeten ook versnellen dingen-enige uitvoer. De eerste en de laatste op deze lijst kunnen worden bereikt door het duiken in de documentatie hier: ... http://www.seeedstudio.com/wiki/images/d/d7/SIMCo .