logo wereldvanmachines          Start       Contact

sensor print

instellingen

Digitaal kompas

Digitaal kompas

Digitaal kompas

Digitaal kompas

Boordcomputer versie 2. Rechtstreeks aan Raspberry.

Over mijn boordcomputer ben ik erg enthousiast.
Elke trip neem ik hem mee en heeft me nog nooit in de steek gelaten.
De Raspberry en OpenCPN draaien prima en met het herstelscript die ik gebruik ook geen verlies van settings meer. Ook de extra sensors deden hun werk prima en is leuk om op het scherm te hebben.

OpenCPN scherm

Maar de oplossing met de Arduino voelde nog niet helemaal goed. Toch niet handig.
Vooral omdat de Arduino stabiliteitsproblemen veroorzaakt en ook extra ruimte inneemt.
Ondanks dat de Arduino een sterk apparaatje is gaat hij zwakjes om met i2c devices.
Als er maar ergens een glitch ontstaat in de communicatie loopt de Arduino er op vast en kan zichzelf dan niet meer herstellen, ook niet met een watchdog.
Daarom had ik ook een aparte reset knop nodig op mijn boordcomputer om de Arduino af en toe weer een klap te geven. Heel onhandig allemaal terwijl de Raspberry het echt zelf ook wel kan maar dan moet er software voor komen. Kortom, aan de programmeer maar weer.

Wat ik gedaan heb is alle sensoren direct aan de Raspberry koppelen inclusief 3v3 stroomvoorziening. Daarna heb ik de Arduino code overgebouwd in Python3.
Dit script draait op de achtergrond en wordt gestart tijdens de boot van de Rpi.

Ook in dit script wordt alle sensordata weer opgehaald en in NMEA0183 sentences omgezet. Het doorzetten naar OpenCPN kan nu niet meer via de USB omdat de Arduino er tussenuit gehaald is.
Waar ik nu voor gekozen heb is om de Python code de sentences op een UDP poort te zetten. Vervolgens in OpenCPN bij verbindingen een UDP poort 10120 als input configureren en tadaa daar is alles weer.
Deze oplossing is ook nog eens veel stabieler omdat Rpi veel beter omgaat met de I2C verbindingen. Er is geen uitval meer geweest en met het vertrek van de Arduino kon ook de resetknop weg en een USB kabel. Het script wordt automatisch gestart bij de opstart van de Raspberry en blijft op de achtergrond lopen. Als je niet alle sensors gebruikt dan is er geen probleem, het script blijft gewoon lopen alleen ontvang je lege waardes.

De code staat onderaan deze pagina voor als je zelf aan de gang wil, de aansluitingen zijn eenvoudig:
Raspberry 4
GND
3v3
GPIO2
GPIO3
Modules
GND
VCC
SDA
SCL


Opstartscript:
sudo nano /home/pi/.config/autostart/gyro.desktop

[Desktop Entry]
  Name=Start i2c Gyro
  Comment=Start i2c Gyro 
  Exec=/home/pi/gyro.py
  Type=Application


Solozeiler deed het Webdesign en alle content is © auteursrechtelijk beschermd door "solozeiler.nl".