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

Anschließen eines Lego Mindstorms NXT Ultraschallsensors an den Raspberry Pi

Zusammenfassung

Schließen Sie einen Lego Mindstorms NXT Ultraschallsensor direkt an einen Raspberry Pi an. Ein TCA9517 I2C-Buspuffer und ein zusätzlicher GPIO-Pin für SCL sind erforderlich. Ein kurzes C++-Programm zum Auslesen der gemessenen Distanz wird mitgeliefert.

Einführung

Raspberry Pi (Pi) ist trotz einiger Mängel definitiv mein Lieblings-SBC. Die mit Abstand größte Community und jedes einzelne Detail ist gut dokumentiert. Lego Mindstorms hingegen, mein Lieblingsroboterbaukasten. Im Gegensatz zu anderen Roboterbausätzen bietet es unbegrenzte Möglichkeiten, Roboter zu bauen. Heute ein Autobot, morgen ein getrackter Bot und am nächsten Tag ein 6-Achs-Roboterarm – alles ist möglich. Die NXT-Version des Kits verfügt über einen leistungsstarken ARM-basierten Mikrocontroller, der für die meisten einfachen Roboteranwendungen ausreicht, aber nicht für fortgeschrittene Projekte wie Computer Vision. Vor kurzem hat Lego EV3 veröffentlicht, ein neues Kit mit einem weitaus leistungsfähigeren Gehirn, das wie der Raspberry Pi von Linux angetrieben wird. Aber immer noch ist dieses Gehirn nicht in der Lage, hochauflösende Bilder mit angemessener Geschwindigkeit zu berechnen. Daher möchte ich nach wie vor die Kraft von Himbeer-Pi mit den unbegrenzten Möglichkeiten von Lego kombinieren. Meines Wissens gibt es ein Projekt, das dies erreicht, namens BrickPi. Obwohl recht erfolgreich, weist es meiner Meinung nach einige Mängel auf, die ich in diesem und den folgenden Artikeln ansprechen möchte. Zunächst einmal ist es nur mit den älteren I2C-basierten NXT-Sensoren kompatibel und nicht mit den neuen UART-basierten EV3-Sensoren. Darüber hinaus verbindet es die Sensoren nicht direkt mit dem Pi, sondern verwendet zwei Atmega-Mikrocontroller (Arduino-kompatibel), um mit den Sensoren zu kommunizieren. Das Hinzufügen neuer Sensoren oder andere Änderungen erfordern eine neue Firmware. Darüber hinaus verwendet der BrickPi L293D-Motortreiber, die nur Ströme von etwa 0,6 A liefern können, während ein Lego NXT-Motor im Stillstand bis zu 2 A verbraucht [Eigenschaften des NXT-Motors]. In diesem Artikel möchte ich dir zeigen, wie man einen Lego Mindstorms direkt anschließt Ultraschallsensor (US-Sensor) zum Pi ohne Verwendung eines zusätzlichen Mikrocontrollers.

Herausforderungen

Mein erster Versuch, den US-Sensor an den Pi anzuschließen, war einfach. Verbinden Sie einfach beide I2C-Signalleitungen mit einem einfachen Level-Shifter mit zwei n-FETs [AppNote]. Der Levelshifter sollte notwendig sein, da der US-Sensor 5 V Logikpegel verwendet und der Pi nur 3,3 V. Dann 5V und 9V an den Sensor anschließen und ein einfaches Testprogramm starten und – nichts bekommen. Nachdem ich Kabel und Software zweimal überprüft hatte, schloss ich den Logikanalysator an und stellte fest, dass der US-Sensor keine Anfrage beantworten kann, nicht einmal seine eigene Adresse bestätigen. Die erste und größte Herausforderung ist die Hardwareverbindung zwischen dem Pi und dem Sensor. Die Hardware- und Softwareprotokolle sind von Lego gut beschrieben, einschließlich Schaltplänen [Lego HDK] und obwohl es I2C verwendet, können wir den Sensor nicht direkt mit dem Pi verbinden. Wie Sie in Schema 1 sehen können, hat der Sensor sehr schwache Pullup-Widerstände (82 k) und sehr starke Serienwiderstände (4,7 k) auf seinen I2C-Leitungen. Die zweiten Widerstände sind unser Hauptproblem. Wie Sie vielleicht wissen, verwendet der Pi starke 1,8-k-Pullup-Widerstände auf seinen I2C-Leitungen. Aufgrund des Vorwiderstands kann der Sensor keine der I2C-Leitungen herunterziehen und kann daher keine Anfragen des I2C-Masters beantworten. Abbildung 1 zeigt eine grobe Simulation dieser Situation. Die blaue Linie zeigt die Daten, die der Sensor zu senden versucht, die grüne Linie zeigt die vom Pi empfangenen Daten. Wie Sie sehen, kann der Sensor die simulierte Datenleitung nicht auf Low ziehen. Beachten Sie auch, dass in diesem Zustand keine Pegelverschiebungsschaltung erforderlich ist, da der starke Pull-Up-Widerstand auf 3,3 V die Leitung auch bei hohem Pegel dominiert. Die einzige Lösung für dieses Problem, die ich bisher gefunden habe, ist die Verwendung eines TCA9517, eines bidirektionalen 2-Kanal-Puffers für I2C. Außerdem sorgt dieser Chip für die Pegelverschiebung. Die zweite Herausforderung ergibt sich aus einem Firmware-Bug im US-Sensor. Beschrieben wird es beispielsweise hier in den mbed-Foren. Es gibt auch einen Artikel, der beschreibt, wie man die Kommunikation zwischen Lego Mindstorms NXT und dem US-Sensor mit einem Logikanalysator analysiert (deutsch). Zusammenfassend lässt sich sagen, dass zwischen dem Schreiben des Registers in den Sensor und dem tatsächlichen Lesen der Daten vom Sensor ein zusätzlicher Taktzyklus (Umschalten auf der SCL-Leitung) erforderlich ist. Dies ist natürlich mit keiner Standard-I2C-Hardware- oder -Softwareimplementierung kompatibel. Sie können eine spezielle Software-I2C-Implementierung mit einem beliebigen GPIO-Paar schreiben, aber es ist einfacher, einfach einen anderen GPIO vom Pi an die SCL-Leitung anzuschließen und zwischen dem Schreiben des Registers in den Sensor und dem Lesen des Registerinhalts umzuschalten.

Hardware

Notwendige Hardware für einen einfachen Prototyp: Für diesen Prototyp habe ich ein Steckbrett mit einem kleinen maßgeschneiderten Lego Mindstorms Sensor Breakout Board verwendet. Dieses Board ahmt die 9-V-Steuerung und den Sensorport-Schutz des Lego Mindstorms NXT [Lego HDK] nach. Für einen einfachen Prototyp braucht man weder den 9V-Schaltkreis (die beiden Fets) noch die zusätzlichen Vorwiderstände und die Dioden auf den I2C-Leitungen. Sie können einfach 9V an Pin 1 des Kabels, GND an Pin 2 und 3, 5 V an Pin 4 (ohne Diode D1), SCL_5V an Pin 5 und SDA_5V an Pin 6 anschließen Ultraschallsensor zum Raspberry Pi

Herstellungsprozess

  1. Einfaches IoT – RaspberryPI HDC2010 wie es geht
  2. Himbeer-Pi-Temperaturlogger
  3. Temperaturüberwachung auf dem Raspberry Pi
  4. Python- und Raspberry Pi-Temperatursensor
  5. Raspberry Pi Wetterstation
  6. Integration von Sensordaten mit Raspberry Pi-Mikroprozessor
  7. Ultraschallsensor (HC-SR04) + Raspberry Pi
  8. Bewegungssensor mit Raspberry Pi
  9. Raspberry Pi Bodenfeuchtigkeitssensor
  10. Raspberry Pi Temperatur- und Lichtsensor