Jag har sedan en längre tid flera Raspberry Pi (RPi) och GPS moduler liggande, tillsammans med ett antal Arduinovarianter. Arduino har jag använt i flera projekt medan Raspberry Pi mest har blivit mediacenter kopplat till TVn. Jag gissar att det är så de flesta RPi:er tillbringar sin tid.
Nu tänkte jag då ge mig på den GPIO, eller General Purpous Input Output, stiftpanel som sitter på dessa och se hur svårt det är att använda RPi i kommande projekt.
Det kommer att bli mer än ett inlägg totalt, men om jag fyller ut hela veckan vet jag inte nu när jag börjar skriva. Hänger du med så kommer du förhoppningsvis att lära dig hur du ansluter en GPS-modul och interagerar med knappar och lysdioder, för att sedan själv skapa dina egna RPi projekt baserade på Python. Jag går inte in på detaljer i hur du ansluter via ssh, eller hur du redigerar filer i Linux, så detta bör du redan känna till, eller vara beredd på att googla lite.
I det här första inlägget så tänker jag se till att RPi:n förstår signalerna som kommer från GPS-modulen.
När jag söker på Google så verkar väldigt många RPi + GPS projekt gå ut på att ansluta en GPS via USB, vilket det kan finnas många skäl till, men inte det jag vill. Min GPS modul (Adafruit Ultimate GPS V3) saknar dessutom USB så alla data skickas via en seriell kabel.
På RPi:n så finns det UART kretsar, som gör om ett flöde av ettor och nollor till information som vi har lättare att förstå och en sådan tänker jag använda för att göra om den seriella GPS signalen till tecken som jag sedan kan bearbeta.
Om man inte har UART kretsar som hårdvara så går det faktiskt att simulera detta med mjukvara. Det fungerar inte lika bra, men det är möjligt, vilket hjälpt mig i en del Arduino projekt tidigare.
Nåja, RPi:ns UART är som standard uppbunden av systemet i den ”Raspbian” version av operativsystemet som jag använder (standard Raspbian från https://www.raspberrypi.org/downloads/).
Detta måste ändras innan jag kan använda den.
För att jobba med RPi så får man antingen ansluta en skärm, tangentbord och eventuell mus och nätverkskabel, eller via ssh, då det räcker att koppla in nätverk och ström i RPi:n. Allt annat görs via terminalen i en annan dator. Första gången man startar RPi:n så måste man dock ha en skärm och ett tangentbord anslutet så att man kan konfigurera den, vilket inte är svårt och beskrivs på ett tydligt sätt på hemsidan för RPi.
Nåja. I RPi:n redigeras först /boot/cmdline.txt där jag raderar ”console=ttyAMA0,115200” från en av raderna. Det är denna port (/dev/ttyAMA0) som jag kommer att använda mig av för att ansluta GPS-modulen.
Dessutom så letar jag upp en rad på slutet i filen /etc/inittab, där ett ”#” tecken läggs till för att den inte skall köras.
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Nu behöver RPi:n startas om för att UART:en skall frigöras.
Anslut GPS
När jag tittar lite på GPIO kontakten och GPS-modulen så hittar jag att jag enkelt kan använda en rak kabel med fyra ledare för att koppla ihop dem.
Jag vill få över 5V (längst till vänster i den röda fyrkanten ovan) och jord (2:a från vänster) till GPS-modulen och GPS-modulens TX till RPi:ns RXD (längst till höger i markeringen ovan). Det tredje stiftet från vänster i markeringen ovan är TXD, eller ”ut” från RPi:n. Med min raka kabel så matchar detta RX på GPS-modulen, men jag kommer inte att använda funktionen, utan bara ta emot signaler.
Varning!
Min GPS-modul har en spänningsregulator som gör om 5V till 3.3V signaler som RPi kan hantera. Du måste själv säkerställa att de signaler du ansluter till din RPi bara skickar 3.3V. 5 volt på fel ställe kan skada, eller i värsta fall förstöra din RPi.
När modulen är ansluten så startar jag upp RPi:n och loggar in via ssh ( ssh pi@ip-address ).
För att lyssna på porten så installerar jag ”screen” med kommandot:
sudo apt-get install screen
Sedan behöver jag bara skriva ännu ett kommando för att (förhoppningsvis) data skall strömma in från GPS-modulen.
sudo screen /dev/ttyAMA0
Resultatet är vanliga NMEA strängar direkt i terminalen. Hurra!
Att avsluta screen tog lite tid då det är lite annorlunda kommandon som krävs. Ctrl+a följt av k och därefter y.
Jag tror att jag nöjer mig med detta för idag, så blir det en fortsättning i morgon. Då skall jag försöka få in GPS informationen i Python.
Any chance you will look into RTKLib in your project?
Sorry, but no. I don’t have the hardware for it. You really need higher quality gps, with capability to produce raw-gps to do RTKlib justice.
Coolt projekt, har själv precis börjat pilla med en ras den kanske behöver en gps puck också.. ;P