GeoRover och GPS/Kompass

För att köra GPS på raspberry pi så behöver man en GPS modul, jag har flera sådana. Sedan behöver man ta reda på vilken sladd eller pin som är Tx respektive Rx (transmit/receive). Egentligen så behöver man nog bara Tx, men jag kör med tvåvägskommunikation. Jord och strömförsörjning är också nödvändigt och då gäller det att se upp eftersom Raspberry Pi har 3.3V logik på ingångarna. Jag löser detta genom att mata GPS modulen med 3.3V för att vara säker, men många moduler har intern spänningsregulator för att hantera just 3.3V logik.

På GPIO stiften ansluter jag Rx från GPS till Tx, och Tx från GPS till Rx. Här finns även lite lägligt såväl jord som 3.3V ut.

På Pi’en behövs det sedan lite GPS program. Jag kör gpsd och gpsd-clients.

sudo apt install gpsd gpsd-clients

Innan något fungerar så måste man redigera filen /boot/cmdline.txt och ta bort hänvisningar till serial0 eller ttyAMA0. I mitt fall fick jag radera ”console=serial0,115200”

Då jag kör Raspbian Jessie och en Raspberry Pi 3 så skall jag sedan stänga av den seriella tjänsten:

sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service

Eftersom gpsd installerar en tjänst också så skall den stängas av på motsvarande sätt:

sudo systemctl stop gpsd.service
sudo systemctl disable gpsd.service

På grund av en sidoeffekt av blåtandskretsarna så måste man även ”låsa” CPU frekvensen för att inte ha en ”svajjande” serieport.

redigera /boot/config.txt och lägg till raden:

enable_uart=1

Sedan skall det bara vara att starta om Raspberry Pi’n.

Man kan testa om det ramlar in något med kommandot ”screen” (vilket kan behöva installeras).

screen /dev/ttyS0 9600

För att starta gpsd som ny tjänst på en socket så skriver man in följande:

sudo killall gpsd
sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock -n

Nu kan jag se GPS information i cgps eller gpsmon.

För att gpsd skall startas automatiskt när Pi’en startar så kan man göra på flera sätt, det sätt som fungerade för mig var att lägga till gpsd kommandot ovan i filen /etc/rc.local.

I denna fil kan man även lägga in anrop till andra skript som man vill skall köras när datorn startar.

Kompass

GPS modulen har även en kompass som skickar information via ett I2C gränssnitt. För att läsa detta behöver jag lägga till lite verktyg.

sudo apt install i2c-tools
sudo apt install python-smbus

För att testa att det fungerar så hämtar jag ett skript som jag senare kan använda som grund i mina egna skript så småningom. GPS modulens sladdar från kompassen ansluts sedan till SDA och SCL

https://github.com/ControlEverythingCommunity/HMC5883/blob/master/Python/HMC5883.py

När skriptet körs så får man flera svar, bland annat en kompassriktning.

Det lutar mer och mer åt att jag skall försöka bygga allt på Python skript. Det innebär även att jag troligen måste titta lite närmare på Django för att få till en interaktion med användaren via ett webbgränssnitt. Detta är dock väldigt omfattande så jag kommer att börja med att söka efter andra alternativ. Kanske Flask?

Annonser

Taggar:,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: