Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Integration von Sensordaten mit Raspberry Pi-Mikroprozessor

Zusammenfassung


Um verschiedene Sensoren in einem integrierten Robotersystem zu implementieren, werden eine Programmierumgebung und valide Kommunikationsverfahren benötigt, die in der Lage sind, digitalisierte Sensordaten einzugeben und diese Daten im Regelkreis zu verwenden.

Schlüsselwörter:I2C-Kommunikation, UART-Kommunikation, Adafruit Ultimate GP Breakout, Sparkfun MPU-9150 Breakout, Raspberry Pi Setup


Einführung


Sensordatenerfassung und -zuordnung sind kritische Teile für ein digitales Steuerungssystem. Da ein eingebetteter digitaler Controller verwendet wird, um alle Sensordateneingaben zu verarbeiten, hat die Kommunikationsschnittstelle, die diese Daten auf dem Mikroprozessor lesbar und nutzbar macht, auf der Programmierebene oberste Priorität. Ein autonomes
Navigationssystem für das Teamprojekt erfordert eine kontinuierliche Verfolgung des GPS-Standorts und eine konsistente Messung des Kurswinkels. Daher beschließt die Gruppe, ein GPS-Modul zu verwenden, um den aktuellen Standort (in Breiten- und Längengrad) des Roboters zu erfassen und ein Magnetometer zum Messen des Kurses zu verwenden. Die von beiden Modulen erfassten Daten wären auf einer Remote-Benutzeroberfläche einsehbar und können auch in der Steuerungssoftware verwendet werden.

Ziel

Dies ist ein fortgeschrittenes Tutorial, das davon ausgeht, dass der Benutzer einige grundlegende Manipulationen im Raspbian-Betriebssystem kennt, zum Beispiel eine Bibliothek installieren oder eine Skriptdatei mit dem Unix-Terminal in Bash-Befehlen in der Befehlszeile erstellen. Das Ziel dieser Anwendungsnotiz ist es, eine Methode zu erläutern, mit der der Benutzer Beschleunigungsmesserdaten und GPS-Daten von verschiedenen Kommunikationsschnittstellen mit dem Raspberry Pi in Echtzeit lesen kann. Zusätzlich zu den Befehlszeilenanweisungen behandelt dieses Tutorial auch die Details zur Verkabelung von Sensoren mit dem Pi und die Hardwarekonfiguration für die Sensoren.

Informationen

Hardware
○ Sparkfun 9 Freiheitsgrade Breakout MPU9150

Der für dieses Projekt verwendete Trägheitsmesssensor ist der Invensense MPU-9150 mit Breakout-Board von Sparkfun. Das MPU-9150 ist ein Multi-Chip-Modul, das aus zwei Chips besteht, die in einem einzigen Gehäuse integriert sind. Ein Chip ist MPU-6050 mit einem 3-Achsen-Gyroskop und einem 3-Achsen-Beschleunigungsmesser. Der andere Würfel beherbergt den 3-Achsen-Digitalkompass/Magnetometer AK8975 von Asahi Kasei Microdevices Corporation. Dieser Chip wurde für geringen Stromverbrauch, niedrige Kosten und hohe Leistung entwickelt und wird derzeit an vielen Orten verwendet, einschließlich Smartphones und Tablets.

Adafruit Ultimate GPS Breakout

Der Breakout basiert auf dem MTK3339-basierten Modul der dritten Generation, das über eine externe Antennenunterstützung und einen Pulse-Per-Second-Ausgang verfügt. Es hat eine Aktualisierungsrate von 10 Hz und kann bis zu 22 Satelliten auf 66 Kanälen verfolgen. Dieses GPS-Modul wurde für ein eingebettetes System entwickelt, das einen niedrigen Leistungseingang (3,3 – 5 V) bietet und der ENABLE-Pin verwendet werden kann, um das Modul mit einem beliebigen Mikrocontroller-Pin auszuschalten. Es gibt auch eine kleine rote LED, die den Signalstatus anzeigen kann. Die LED blinkt mit 1 Hz während der Suche nach Satelliten und blinkt alle
15 Sekunden einmal, wenn ein Fix gefunden wird. Dieses GPS funktioniert nur auf offenem Feld, wenn kein Gebäude in der Nähe ist. Immer wenn es ein FIX-Signal empfängt, werden die Kurs-, Längen-, Breiten- und Höhendaten mit der benutzerdefinierten
definierten Frequenz aktualisiert.

Kommunikationsstandards


○ I2C-Kommunikation
I2C steht für Inter-Integrated Circuit Bus. I2C verwendet einen Mikrocontroller als Master und verbindet sich mit mehreren Slaves mit eindeutigen Adressen über einen Single-Ended-Computerbus. Es verwendet nur zwei bidirektionale Opendrain-Leitungen:Serial Data Line (SDA) und eine Serial Clock (SCL). SDA setzt das übertragene Bit, während SCL niedrig ist und die Daten werden empfangen, wenn SCL hoch ist.
○ UART-Kommunikation
UART steht für universeller asynchroner Empfänger/Sender. Es überträgt/empfängt Daten seriell von einem Byte (5-8 Bits) von Daten, die in ein Register geschrieben/gespeichert werden. Alle Daten werden mit einer vom Programmierer vordefinierten Baudrate gelesen. Die UART-Übertragung erfordert drei Signaltypen:Sendedaten (TxD), Empfangsdaten (RxD) und Signalmasse (SG). Da diese Art der Übertragung nicht bidirektional ist, werden zwei separate Empfangs- und Sendeleitungen benötigt.

Teileliste
Für die Hardwareeinrichtung und Programmierung auf dem Raspberry Pi werden die folgenden Teile
erforderlich:
● Ein Raspberry Pi
● Ein Netzteil
● Ein WLAN-Dongle
● Ein Sparkfun MPU9150 Gyroskop und Beschleunigungsmesser
● Ein Adafruit Ultimate GPS Breakout
● Ein USB-auf-TTL-Adapterkabel (optional)
● Ein Steckbrett
● MF-Überbrückungskabel
Annahmen
Bevor Sie mit diesem Tutorial beginnen, müssen Sie einige Annahmen treffen. Da sich diese Anwendungshinweise nur auf eine bestimmte Facette des gesamten Projekts konzentrieren, wird die grundlegende Einrichtungsprozedur für den neuen Raspberry Pi und die Einrichtung eines drahtlosen Netzwerks hier ignoriert. Im Folgenden sind einige Annahmen aufgeführt, auf denen diese Anwendung basiert:
● ein gültiger Internetzugang
● ein installiertes Raspian-Betriebssystem und das Startverhalten des Pi wurde auf den Desktop-Modus eingestellt
● a Maus und Tastatur werden an die USB-Anschlüsse des Raspberry Pi angeschlossen, und ein Monitor wird über einen HDMI-Adapter angeschlossen, um die grafische Anzeige sicherzustellen.

Verfahren:

  1. Die Raspberry Pi GPIO-Konfiguration für die serielle Kommunikation kennen. Die seriellen Pins, die im späteren Teil dieses Tutorials verwendet werden, sind GPIO 14 &15 für UART und GPIO 2 &3 für I2C.
  1. Verdrahten des Adafruit-GPS mit dem Raspberry Pi
    Suchen Sie die Tx/Rx-, Vin- und Gnd-Pins an Ihrem Adafruit-GPS-Modul. Crossconnecting seiner Tx- und Rx-Pins mit Rx- und Tx-Pins auf Raspberry Pi. Versorgen Sie dann entweder 5 V oder 3,3 V vom Pi zum Vin-Pin und schließen Sie den GND-Pin mit der Masse des Pi kurz.
  1. Verdrahten des MPU9150 mit dem Raspberry Pi
    Verbinden Sie die oberen vier Pins des MPU9150-Breakouts mit dem Raspberry Pi. Verdrahten Sie GPIO 2 mit SDA (Datenleitung) und GPIO 3 mit SCL (Uhrleitung). Versorgen Sie 3,3 V vom Pi zum Vcc-Pin des Beschleunigungsmessers und schließen Sie den GND-Pin mit Masse kurz.
  1. Vorbereiten des Pi für die I2C-Kommunikation
    a. Öffnen Sie ein Terminal in Raspberry Pi und geben Sie die folgenden Bash-Befehle ein:
    sudo apt-get update
    sudo apt-get install i2c-tools libi2c-dev
    b. WiringPi ist eine sehr leistungsstarke C++-Bibliothek, die für den RasPi entwickelt wurde und eine Vielzahl von GPIO-Tools für den PI enthält. Um WiringPi zu installieren, geben Sie die folgenden Befehle ein:
    git clone git://git.drogon.net/wiringPi
    cd wiringPi
    sudo nano /etc/modules
    c. Fügen Sie die folgenden drei Zeilen am Ende der Datei (/etc/modules) hinzu, falls sie noch nicht vorhanden sind
    snd-bcm2835
    i2c-bcm2708
    i2c-dev
    d . Als nächstes ändern Sie die Boot-Parameter, um den i2c beim Start einzuschalten. Geben Sie den bash-Befehl ein:
    sudo nano /boot/config.txt
    e. Fügen Sie am Ende dieser Datei die folgenden Zeilen hinzu:
    dtparam=i2c1=on
    dtparam=i2c_arm=on
    f. Starten Sie Ihren Raspberry Pi neu
  2. Installieren und Ausführen der MPU-6050-Pi-Demo-Software
    a. Geben Sie die folgenden Bash-Befehle in ein Terminalfenster ein:
    git clone git://github.com/richardghirst/
    PiBits.git
    cd PiBits/MPU6050-Pi-Demo
    sudo apt-get install libgtkmm-3.0-dev
    b. Einige der Quelldateien müssen bearbeitet werden, um mit dem Pi zu arbeiten. Wir müssen sowohl die Dateien I2Cdev.cpp als auch setup-i2c.sh ändern. Verwenden Sie die bash
    Befehle „nano“, um die Datei zu bearbeiten.
    c. Ändern Sie alle Verweise auf „/dev/i2c-0“, um in dieser Datei „/dev/i2c-1“ zu lesen und zu speichern.
    d. Geben Sie die folgenden Bash-Befehle ein, um die Quelle zu kompilieren:
    make
    ./setup-i2c.sh
    e. Warten Sie, bis die Quellen kompiliert sind, und geben Sie dann den folgenden Bash-Befehl ein:
    sudo i2cdetect -y 1
    f. Sie sollten die folgende Ausgabe sehen

g. Führen Sie nun das Beispielprogramm „demo_raw“ in diesem Ordner aus, indem Sie den folgenden Bash-Befehl eingeben:
./demo_raw
h. Diese Demo zeigt rohe Gyro- und Beschleunigungswerte im Terminal an
a/g:Ax Ay Az Gx Gy Gz

  1. Um die Daten vom Adafruit GPS-Modul zu erhalten, verfügt Adafruit über eine eigene selbst entwickelte Software namens GPS Daemon (gpsd). Das Tutorial ist unter folgendem Link verfügbar:https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi
  2. Da gpsd keine Open-Source-Software ist, ist es besser, eine Drittanbieter-Software zu verwenden, die es Benutzern ermöglicht, ihre eigene Datei zum Lesen von GPS zu ändern und zu erstellen. „libgps“ ist eine Open-Source-GPS-Bibliothek, die hauptsächlich für die Verwendung auf Raspberry ARM-Boards entwickelt und mit Adafruit Ultimate GPS Breakout getestet wurde. Wir verwenden diese Bibliothek in unserem Projekt.
  3. Installieren und Kompilieren des libgps-Pakets.
    a. Um libgps zu installieren, geben Sie die folgenden Befehle ein:
    git clone git://github.com/wdalmut/libgps.git
    cd libgps
    b. Nachdem Sie zum libgps-Ordner geleitet haben, erstellen Sie die Dateien, um libgps.a zu erhalten, indem Sie Folgendes eingeben:
    make
    sudo make install
  4. Sie finden im Beispielordner „position_logger.c“ einen Beispielcode zum Testen der Verbindung
    a. Kompilieren Sie es mit
    gcc -o position_logger position_logger.c -lgps
    -lm
    b. Führen Sie es aus mit
    $ ./position_logger
    c. Wenn ein gültiges GPS-Signal vorhanden ist (die Fix-LED blinkt nicht mit 1 Hz),
    sollten Sie die Dezimalgrade für Breiten- und Längengrade
    direkt in der Konsole wie folgt sehen:
    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
    7.64 .45.071062 / 7.64 .45.071062 /
    45.071073 7.646395
    45.071082 7.646403
    Schlussfolgerung
    Dieser Anwendungshinweis nahm zwei Sensoren als Beispiel und führte den Benutzer vom ersten Schritt an durch die Einrichtung der seriellen Kommunikation zwischen den Sensoren und dem Pi. Es wurde auch kurz die Befehlszeilenmethode zum Bearbeiten, Kompilieren und Ausführen einer Datei erläutert. Diese Sensordaten in einen Algorithmus zu schreiben, erfordert jedoch viel mehr Aufwand, als sie nur anzuzeigen. Das ultimative Ziel, oder mit anderen Worten, die fortgeschrittenere Ableitung dieser Application Note sollte darin bestehen, verschiedene Sensorbibliotheken aus einer einzigen
    Skriptdatei zu adressieren. Dies erfordert ein tieferes Verständnis der Codierungsprinzipien hinter jedem Sensorsoftwarepaket.
    Referenz:
  5. Kevin Townsend. Adafruit Ultimate GPS auf dem 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-Bibliothek für Raspberry Pi. 08. September 2014.
    Web. https://github.com/wdalmut/libgps
  7. InvenSense. MPU-9150 Datenblatt, 18. September 2013. Web. http://
    www.invensense.com/mems/gyro/documents/PS-MPU-9150A-00v4_3.pdf

Quelle:Die Integration von Sensordaten mit dem Raspberry Pi Mikroprozessor


Herstellungsprozess

  1. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  2. Temperaturüberwachung auf dem Raspberry Pi
  3. Überwachen der Temperatur mit Raspberry Pi
  4. Bewegungssensor mit Raspberry Pi
  5. Raspberry Pi Bodenfeuchtigkeitssensor
  6. Schwenk-/Neige-Gesichtsverfolgung mit dem Himbeer-Pi
  7. Anschließen eines Lego Mindstorms NXT Ultraschallsensors an den Raspberry Pi
  8. HC-SR04 Ultraschall-Reichweitensensor auf dem Raspberry Pi
  9. Erstellen Sie Ihr erstes IOT mit einem Raspberry Pi, einem DHT11-Sensor und Thingspeak.
  10. Aeroponik mit Raspberry Pi und Feuchtigkeitssensor