Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

De integratie van sensorgegevens met Raspberry Pi-microprocessor

Abstract


Om verschillende sensoren op een geïntegreerd robotsysteem te implementeren, zijn een programmeeromgeving en geldige communicatiemethoden nodig die gedigitaliseerde sensorgegevens kunnen invoeren en gebruiken in de regelkring.

Trefwoorden:I2C-communicatie, UART-communicatie, Adafruit Ultimate GP Breakout, Sparkfun MPU-9150 Breakout, Raspberry Pi Setup


Inleiding


Het verzamelen en koppelen van sensorgegevens zijn cruciale onderdelen voor een digitaal besturingssysteem. Aangezien een ingebouwde digitale controller wordt gebruikt om alle sensorgegevensinvoer te verwerken, heeft de communicatie-interface, die deze gegevens leesbaar en bruikbaar maakt op de microprocessor, de eerste prioriteit op programmeerniveau. Een autonoom
navigatiesysteem, voor het teamproject, vereist een continue tracking op gps-locatie en consistente meting van de koershoek. Daarom besluit de groep een gps-module te gebruiken om de huidige locatie (in breedte- en lengtegraad) van de robot te meten en een magnetometer te gebruiken om de koers te meten. Gegevens die door beide modules worden verzameld, kunnen worden bekeken op een externe gebruikersinterface en kunnen ook worden gebruikt in besturingssoftware.

Doelstelling

Dit is een geavanceerde tutorial die ervan uitgaat dat de gebruiker enkele basismanipulaties kent in het Raspbian-besturingssysteem, bijvoorbeeld een bibliotheek installeren of een scriptbestand maken met Unix-terminal in bash-opdrachten op de opdrachtregel. Het doel van deze toepassingsnotitie is om een ​​methode te begeleiden waarmee de gebruiker versnellingsmetergegevens en gps-gegevens van verschillende communicatie-interfaces met de Raspberry Pi in het echt kan lezen. Naast de instructies op de opdrachtregel behandelt deze tutorial ook de details van het bedraden van sensoren naar de Pi en de hardwareconfiguratie voor de sensoren.

Informatie

Hardware
○ Sparkfun 9 Degrees of Freedom Breakout MPU9150

De traagheidsmeetsensor die voor dit project wordt gebruikt, is de Invensense MPU-9150 met breakout-bord ontworpen door sparkfun. De MPU-9150 is een multi-chipmodule die bestaat uit twee matrijzen die in een enkel pakket zijn geïntegreerd. Eén dobbelsteen is MPU-6050 met een 3-assige gyroscoop en een 3-assige versnellingsmeter. De andere matrijs bevat de AK8975 3-assige digitale kompas/magnetometer van Asahi Kasei Microdevices Corporation. Deze chip is ontworpen voor een laag stroomverbruik, lage kosten en hoge prestaties en wordt momenteel op veel plaatsen gebruikt, waaronder smartphones en tablets.

Adafruit Ultimate GPS Breakout

De uitbraak is gebouwd rond de derde generatie MTK3339-gebaseerde module die externe antenne-ondersteuning en Pulse-Per-Second-uitgang heeft. Het heeft een updatesnelheid van 10 Hz en kan tot 22 satellieten op 66 kanalen volgen. Deze gps-module is gebouwd voor een embedded systeem dat een laag ingangsvermogen (3,3 – 5V) biedt en de ENABLE-pin kan worden gebruikt om de module uit te schakelen met behulp van een microcontroller-pin. Er is ook een kleine rode LED die de signaalstatus kan aangeven. De LED knippert met 1 Hz tijdens het zoeken naar satellieten en knippert eens per
15 seconden wanneer er een oplossing is gevonden. Deze gps werkt alleen op een open veld als er geen bebouwing in de buurt is. Telkens wanneer het een FIX-signaal ontvangt, worden de koers-, lengtegraad-, breedtegraad- en hoogtegegevens bijgewerkt met een door de gebruiker gedefinieerde
frequentie.

Communicatiestandaarden


○ I2C-communicatie
I2C staat voor Inter-Integrated Circuit Bus. I2C gebruikt een microcontroller als master en maakt verbinding met meerdere slaves met unieke adressen via een single-ended computerbus. Het gebruikt slechts twee bidirectionele opendrain-lijnen:Serial Data Line (SDA) en een Serial Clock (SCL). SDA stelt het overgedragen bit in terwijl SCL laag is en de gegevens worden ontvangen wanneer SCL hoog is.
○ UART-communicatie
UART staat voor universele asynchrone ontvanger/zender. Het verzendt/ontvangt gegevens serieel van een byte (5-8 bits) gegevens die naar een register zijn geschreven/opgeslagen. Alle gegevens worden gelezen met een bepaalde baudrate die vooraf is gedefinieerd door de programmeur. De UART-transmissie vereist drie signaaltypes:een Transmit Data (TxD), een Receive Data (RxD) en Signal Ground (SG). Aangezien dit soort transmissie niet bidirectioneel is, zijn twee aparte ontvangst- en zendlijnen nodig.

Onderdelenlijst
Voor hardwareconfiguratie en programmering op Raspberry Pi zijn de volgende onderdelen
vereist:
● Een Raspberry Pi
● Een voeding
● Een Wifi-dongle
● Een Sparkfun MPU9150-gyroscoop en versnellingsmeter
● Een Adafruit Ultimate GPS Breakout
● Een USB naar TTL-adapterkabel (optioneel)
● Een breadboard
● MF-jumpers
Aannames
Voordat je aan deze tutorial begint, zijn er verschillende aannames die gemaakt moeten worden. Aangezien deze applicatie-opmerkingen zich alleen zullen richten op een bepaald facet van het hele project, wordt de basisinstellingsprocedure voor de nieuwe-out-of-box Raspberry Pi en draadloze netwerkconfiguratie hier genegeerd. Hieronder volgen enkele onderliggende aannames die door deze toepassing worden opgemerkt op basis van:
● een geldige internettoegang
● een geïnstalleerd Raspian-besturingssysteem en het opstartgedrag voor de Pi is ingesteld op desktopmodus
● een muis en een toetsenbord zijn aangesloten op de usb-poorten van de Raspberry Pi, en een monitor is aangesloten via een HDMI-adapter om de grafische weergave te garanderen.

Procedures:

  1. De Raspberry Pi GPIO-configuratie kennen voor seriële communicatie. De seriële pinnen die in een later deel van deze tutorial worden gebruikt, zijn GPIO 14&15 voor UART en GPIO 2&3 voor I2C.
  1. De Adafruit GPS aansluiten op de Raspberry Pi
    Zoek de Tx/Rx-, Vin- en gnd-pinnen op uw adafruit-gps-module. De Tx- en Rx-pin kruiselings verbinden met Rx- en Tx-pinnen op Raspberry Pi. Lever vervolgens 5V of 3,3V van de Pi naar de Vin-pin en sluit de GND-pin kort met de aarde van de Pi.
  1. De MPU9150 aansluiten op de Raspberry Pi
    Sluit de bovenste vier pinnen van de MPU9150 breakout aan op de Raspberry Pi. Sluit GPIO 2 aan op SDA (datalijn) en GPIO 3 op SCL (kloklijn). Lever 3,3 V van de Pi naar de Vcc-pin van de versnellingsmeter en sluit de GND-pin naar de grond.
  1. De Pi voorbereiden voor I2C-communicatie
    a. Open een terminal in Raspberry Pi en voer de volgende bash-commando's in:
    sudo apt-get update
    sudo apt-get install i2c-tools libi2c-dev
    b. WiringPi is een zeer krachtige C++-bibliotheek die is ontworpen voor de RasPi en die een breed scala aan GPIO-tools voor de PI bevat. Voer de volgende opdrachten in om WiringPi te installeren:
    git clone git://git.drogon.net/wiringPi
    cd bedradingPi
    sudo nano /etc/modules
    c. Voeg de volgende drie regels toe aan de onderkant van het bestand (/etc/modules) als ze er nog niet zijn
    snd-bcm2835
    i2c-bcm2708
    i2c-dev
    d . Pas vervolgens de opstartparameters aan om de i2c aan het begin aan te zetten. Typ het bash-commando:
    sudo nano /boot/config.txt
    e. Voeg de volgende regels toe aan de onderkant van dit bestand:
    dtparam=i2c1=on
    dtparam=i2c_arm=on
    f. Start je Raspberry Pi opnieuw op
  2. De MPU-6050-Pi-Demo-software installeren en uitvoeren
    a. Voer de volgende bash-commando's in een terminalvenster in:
    git clone git://github.com/richardghirst/
    PiBits.git
    cd PiBits/MPU6050-Pi-Demo
    sudo apt-get install libgtkmm-3.0-dev
    b. Sommige bronbestanden moeten worden bewerkt om met de Pi te werken. We moeten zowel I2Cdev.cpp- als setup-i2c.sh-bestanden wijzigen. Gebruik de bash
    -opdrachten "nano" om het bestand te bewerken.
    c. Wijzig alle verwijzingen naar "/dev/i2c-0" om "/dev/i2c-1" in dit bestand te lezen en op te slaan.
    d. Voer de volgende bash-commando's in om de broncode te compileren:
    make
    ./setup-i2c.sh
    e. Wacht tot de bronnen klaar zijn met compileren en voer dan het volgende bash-commando in:
    sudo i2cdetect -y 1
    f. U zou de volgende uitvoer moeten zien

G. Voer nu het voorbeeldprogramma “demo_raw” uit in deze map door het volgende bash-commando te typen:
./demo_raw
h. Deze demo toont onbewerkte gyro- en accelwaarden in terminal
a/g:Ax Ay Az Gx Gy Gz

  1. Om de gegevens van de Adafruit GPS-module te verkrijgen, heeft Adafruit hun eigen zelf ontwikkelde software genaamd GPS Daemon (gpsd). De tutorial is beschikbaar via de link:https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi
  2. Aangezien gpsd geen open-sourcesoftware is, is het beter om software van derden te gebruiken waarmee gebruikers hun eigen bestand kunnen wijzigen en maken om van gps te lezen. "libgps" is een open-source gps-bibliotheek die voornamelijk is gemaakt voor gebruik op Raspberry ARM-borden en is getest met Adafruit Ultimate GPS Breakout. We gebruiken deze bibliotheek in ons project.
  3. Het libgps-pakket installeren en compileren.
    a. Om libgps te installeren, typt u de volgende opdrachten:
    git clone git://github.com/wdalmut/libgps.git
    cd libgps
    b. Nadat u naar de map libgps hebt geleid, bouwt u de bestanden om libgps.a te verkrijgen door te typen:
    make
    sudo make install
  4. U kunt een voorbeeldcode vinden in de voorbeeldmap met de naam "position_logger.c" om de verbinding te testen
    a. Compileer het met
    gcc -o position_logger position_logger.c -lgps
    -lm
    b. Voer het uit met
    $ ./position_logger
    c. Als er een geldig gps-signaal is (de fix-LED knippert niet bij 1 Hz),
    moet je de decimale graden voor breedte- en lengtegraden
    direct in de console zien, zoals het volgende:
    45.071060 7.646363
    45.071082 7.646385
    45.071078 7.646387
    45.071060 7.646373
    45.071048 7.646358
    45.071052 7.646372
    45.071057 7.646392
    644597631062
    45.071073 7.646395
    45.071082 7.646403
    Conclusie
    Deze toepassingsnotitie nam twee sensoren als voorbeeld en begeleidde de gebruiker bij het instellen van seriële communicatie tussen de sensoren en de Pi vanaf de eerste stap. Het legde ook kort de opdrachtregelmethode uit om een ​​bestand te bewerken, compileren en uit te voeren. Om die sensorgegevens in een algoritme te schrijven, is echter veel meer inspanning nodig dan ze alleen te bekijken. Het uiteindelijke doel, of met andere woorden, de meer geavanceerde afleiding van deze toepassingsnotitie zou moeten zijn om verschillende sensorbibliotheken aan te pakken vanuit een enkel
    scriptbestand. Dit vereist een dieper begrip van de coderingsprincipes achter elk sensorsoftwarepakket.
    Referentie:
  5. Kevin Townsend. Adafruit Ultimate GPS op de Raspberry Pi, 15 juli 2014.
    Web. https://learn.adafruit.com/downloads/pdf/adafruit-ultimate-gps-on-theraspberry-pi.pdf
  6. Walter Dal Mut. UART NMEA GPS-bibliotheek voor Raspberry Pi. 08 sept. 2014.
    Web. https://github.com/wdalmut/libgps
  7. InvenSense. MPU-9150-gegevensblad, 18 september 2013. Web. http://
    www.invensense.com/mems/gyro/documents/PS-MPU-9150A-00v4_3.pdf

Bron:de integratie van sensorgegevens met Raspberry Pi-microprocessor


Productieproces

  1. Meet temperaturen met een 1-draads DS18B20-sensor en Raspberry Pi
  2. Temperatuurbewaking op de Raspberry Pi
  3. Temperatuur bewaken met Raspberry Pi
  4. Bewegingssensor met Raspberry Pi
  5. Raspberry Pi Bodemvochtsensor
  6. Pan / Tilt face-tracking met de raspberry pi
  7. Hoe sluit je een Lego Mindstorms NXT ultrasone sensor aan op de Raspberry Pi
  8. HC-SR04 ultrasone bereiksensor op de Raspberry Pi
  9. Bouw je eerste IOT met een Raspberry Pi, DHT11-sensor en Thingspeak.
  10. Aerocultuur met Raspberry Pi en vochtigheidssensor
  11. Raspberry Pi-temperatuursensor