Sensordata integreren in een Raspberry Pi: Een praktische gids
Samenvatting
Leer hoe u data van een GPS-module en een MPU-9150 IMU op een Raspberry Pi kunt verbinden en uitlezen via I²C- en UART-interfaces, en de informatie in realtime verwerkt voor autonome navigatie.
Trefwoorden: I2C-communicatie, UART-communicatie, Adafruit Ultimate GPS Breakout, Sparkfun MPU-9150 Breakout, Raspberry Pi Setup
Inleiding
Sensor-data-acquisitie is de ruggengraat van elk digitaal besturingssysteem. Wanneer een embedded controller deze inputs verwerkt, wordt de keuze van de communicatieinterface kritiek. Voor een robotnavigatieproject zijn continue GPS-locatie-updates en accurate koersmetingen essentieel. Deze tutorial demonstreert hoe u een GPS-module en een magnetometer aan een Raspberry Pi kabelt, de data extern bekijkt en integreert in besturingssoftware.
Doel
Deze geavanceerde tutorial veronderstelt bekendheid met Raspbian en basis bash-commando's. Het begeleidt u door het uitlezen van accelerometer- en GPS-data via de seriële interfaces van de Pi, het bedraden van de sensoren en het configureren van de benodigde hardware-drivers.
Informatie
Hardware
- Sparkfun 9-Degrees-of-Freedom Breakout (MPU-9150)
- Adafruit Ultimate GPS Breakout
De MPU-9150 is een multi-chip-module die een MPU-6050 (3-as gyroscoop & accelerometer) en een AK8975 digitale kompas combineert. Het wordt wijd gebruikt in smartphones en tablets vanwege zijn lage stroomverbruik en hoge prestaties.
De Adafruit Ultimate GPS is gebouwd rond een MTK3339-chip, met een 10 Hz-updaterate, 22-satelliet-tracking en een externe antennepoort. De rode LED geeft signaalstatus aan: 1 Hz tijdens zoeken en 15-seconde knipperingen wanneer een fix bereikt is.
Communicatiestandaarden
I²C gebruikt twee bidirectionele lijnen (SDA & SCL) om een master (de Pi) met meerdere slaves te verbinden, elk met een uniek adres.
UART transmiteert data asynchroon in 5–8-bit frames op een door de programmeur gedefinieerde baudrate, met afzonderlijke TxD- en RxD-lijnen.
Onderdelenlijst
- Raspberry Pi
- Voeding
- Wi-Fi-dongle
- Sparkfun MPU-9150 breakout
- Adafruit Ultimate GPS breakout
- USB-naar-TTL-adapter (optioneel)
- Breadboard
- M-naar-F jumper wires
Aannames
- Internettoegang is beschikbaar.
- Raspbian is geïnstalleerd en ingesteld op desktop-modus.
- Een muis, toetsenbord en HDMI-monitor zijn aangesloten.
Procedures
- Identificeer de GPIO-pins van de Pi: UART gebruikt GPIO 14 (Tx) & 15 (Rx); I²C gebruikt GPIO 2 (SDA) & 3 (SCL).
- GPS bedraden: Verbind de GPS's Tx met Pi's Rx, Rx met Pi's Tx, voorzie 3,3 V of 5 V aan Vin, en verbind GND met de ground van de Pi.
- MPU-9150 bedraden: Verbind Vcc met 3,3 V, GND met ground, SDA met GPIO 2, en SCL met GPIO 3.
- I²C op de Pi inschakelen:
- Voer
sudo apt-get update && sudo apt-get install i2c-tools libi2c-devuit. - Installeer WiringPi:
git clone git://git.drogon.net/wiringPi && cd wiringPi && sudo nano /etc/modulesen voegsnd-bcm2835,i2c-bcm2708,i2c-devtoe. - Bewerk
/boot/config.txtomdtparam=i2c1=onendtparam=i2c_arm=ontoe te voegen, herstart daarna.
- Voer
- MPU-6050 demo installeren:
- Kloon
git://github.com/richardghirst/PiBits.git, navigeer naarMPU6050-Pi-Demo, installeerlibgtkmm-3.0-dev. - Bewerk
I2Cdev.cppensetup-i2c.shom/dev/i2c-0te vervangen door/dev/i2c-1. - Compileer met
make, voer./setup-i2c.shuit, verifieer metsudo i2cdetect -y 1. - Voer de demo uit met
./demo_rawom ruwe gyro- en accelerometerdata te bekijken.
- Kloon
- GPS-data-acquisitie instellen:
- Adafruit's GPS Daemon-gids is een startpunt, maar voor custom handling gebruiken we de open-source libgps-bibliotheek.
- Kloon
git://github.com/wdalmut/libgps.git, compileer metmake && sudo make install. - Test met het meegeleverde
position_logger.cvoorbeeld: compileer viagcc -o position_logger position_logger.c -lgps -lmen voer./position_loggeruit. Wanneer een fix verkregen is, print latitude en longitude in decimale graden.
Conclusie
Deze tutorial dekte de hardware-bedrading, het inschakelen van communicatieprotocollen en de basissoftware-setup voor twee gangbare sensoren op een Raspberry Pi. Hoewel de voorbeelden zich richten op dataweergave, strekken dezelfde principes zich uit naar het integreren van sensoroutputs in geavanceerde navigatie- of besturingsalgoritmes. Beheersing van elke sensorbibliotheek en een solide greep op C/C++-ontwikkeling zullen complexere, realtime sensorfusie mogelijk maken.
Referenties
- Kevin Townsend. Adafruit Ultimate GPS on the Raspberry Pi, 15 juli 2014.
- Walter Dal Mut. UART NMEA GPS library for Raspberry Pi, 08 sept 2014.
- InvenSense. MPU-9150 Datasheet, 18 sept 2013.
Productieproces
- Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
- Professionele temperatuurbewaking met Raspberry Pi en DS18B20
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- Een Goedkope Raspberry Pi Grondvochtigheidssensor Bouwen voor Slimme Irrigatie
- Real-time Pan/Tilt gezichtsvolging op een Raspberry Pi – Praktische Gids
- Een Lego Mindstorms NXT-ultrasone sensor direct verbinden met een Raspberry Pi
- Een HC-SR04 ultrasone sensor verbinden met een Raspberry Pi – Een praktische gids
- Bouw je eerste IoT-project met Raspberry Pi, DHT11 en ThingSpeak
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana