Im Hackspace gibt es viele verschiedene Raspberry Pi, mit denen wir Kindern das Programmieren in Python, das Herstellen von Robotern und verschiedene nützliche Geräte beibringen. Natürlich machen wir dasselbe auf dem Arduino. In den drei Lebensjahren, Seele an Seele mit diesen extrem unterschiedlichen Plattformen, hatten wir verschiedene Ideen, wie man einen Trainingsroboter unter Berücksichtigung der Vor- und Nachteile jedes Eisenstücks korrekter machen kann. All diese Gedanken materialisierten sich in einem neuen Gerät, das später besprochen wird.
Im Wesentlichen haben wir ein Arduino-kompatibles Erweiterungsmodul für RPi entwickelt, das einen Motortreiber und einen Leistungsregler enthält. Es ist klar, dass dieses Modul eine autarke Steuerung für einen Lernroboter ist, aber es ist das RPi + Arduino-Sandwich, das den ideologisch korrekten Ansatz zur Erstellung von Robotern demonstriert. Lesen Sie weiter, wie dieses Ding aussieht, welche Eigenschaften es hat und wo es angewendet werden kann.4 Raspberry Pi Model B. , RPi . , — RPi. .., -, .
, Arduino. , . , Raspberry Pi, Arduino.
Unser erster RPi-basierter Roboter wurde speziell als Handbuch für die Arbeit mit Schülern entwickelt. Es war ein zweirädriger Roboter, an dem die Jungs die Arbeit mit Motoren und Sensoren aller Art übten und sich gleichzeitig auf den Wettbewerb vorbereiteten. Als Fahrgestell wurde ein Tamiya-Getriebemotor verwendet. Der Lokführer war drv8833 von TI. In der Version für den LineFollower-Roboter gab es zwei selbstgemachte Reflexionssensoren. Auf dem Oberdeck des Roboters wurde ein lötfreies Steckbrett mit 400 Punkten installiert.
Der Roboter erwies sich als ausgezeichnet, so dass die Plattform im Laufe der Zeit ein anderes Kit anprobierte. Zusätzlich zu LineFollower, das wir auf unsere Weise als Tracker bezeichnen, trug der Roboter optische Reflexionssensoren, Ultraschall-Entfernungsmesser, die mit einem Filzstift auf Papier gemalt wurden, und schließlich wurde er über WLAN gesteuert und übertrug das Bild von einer Webcam.Im Laufe der Zeit wurde klar, dass der Getriebemotor nicht der beliebteste, aber auch sehr laut war. Der Körper des Roboters war nicht für alle Wunschliste geeignet und nicht mit gängigen Designern kompatibel. Und vor allem kam die Idee auf, ein Erweiterungsmodul für RPi zu entwickeln, das den Roboter vor unnötigen „routinemäßigen“ Kommunikationen und Geräten bewahrt. So begann das Projekt eines fahrbaren Roboters mit dem Codenamen MR-K-1 und dann MR-K-2. Von Anfang an haben wir begonnen, Landebohrungen für beide Plattformen bereitzustellen, und das Robotermodell mit Arduino an Bord wird unten vorgestellt.
Dies ist eine Modifikation für den Kampf, bei dem Schüler, die einen Roboter über Bluetooth steuern, dazu neigen, auf einer feindlichen Maschine montierte Ballons zu platzen. Der Rahmen wurde vergrößert, der Getriebemotor durch einen üblichen chinesischen gelben (und manchmal weißen) Motor ersetzt. Das Gehäuse wurde für den Multiplo-Konstruktor angepasst und ist jetzt mit quadratischen Löchern bedeckt. Das alles dauerte mehrere Wochen. Die Arbeiten am Erweiterungsmodul haben sich jedoch etwas verzögert. Das Problem lag nicht so sehr in der Komplexität der Implementierung, sondern im Zeitmangel, der durch Perfektionismus noch verstärkt wurde :)Das RPiDuino-ErweiterungsmodulAlexander Vasiliev, der führende äußerst nützliche Blog alex-exe.ru , wurde zum Hauptentwickler des Moduls. Zu Beginn des Projekts verfügte er bereits über umfangreiche Erfahrung in der Entwicklung von Motortreibern, Leistungsstabilisatoren und vielen anderen für die Robotik interessanten Geräten. Das Board wurde als RPiDuino bezeichnet, da es eine Symbiose aus Raspberry Pi und Arduino bieten sollte.Also, was wir beschlossen haben, an die Tafel zu setzen.Das Modul musste die direkte Steuerung des Motortreibers, der Servos und der Sensoren übernehmen. All dies erfordert einen Mikrocontroller. Und da wir einen Lernroboter bauen und dieser Controller von unseren Schülern leicht geflasht werden sollte, fiel die Wahl auf den bekannten atmega328 mit einem Arduino-Bootloader an Bord. Das Vorhandensein von atmega macht das Modul zu einer eigenständigen Steuerung zur Steuerung kleiner Trainingsroboter.
Da die Atmosphäre auf der Platine erschien, wurde auch eine USB-UART-Brücke benötigt, für die wir CP2102 eingestellt haben. Ein weiteres Zeichen für Arduino-Kompatibilität sind die bekannten Anschlüsse an den Seiten der Platine, mit denen Sie Erweiterungsmodule nach oben schieben können.Das Modul muss die Motoren steuern, damit der entsprechende Treiber angezeigt wird. Moderne Treiber sind vollständig mikroskopisch klein geworden, sodass sie problemlos auf das Board passen, ohne dass benachbarte Komponenten stark beschädigt werden. Sie entschieden sich für den DRV8833 von Pololu, da sie bereits einige Erfahrungen mit ihnen hatten. Der Treiber ist zweikanalig mit einem Arbeitsstrom des Kanals - 1A.
Schließlich wurde einfach ein Spannungsregler auf der Platine benötigt. Ursprünglich sollte der Computerteil und die Servos getrennt mit Strom versorgt werden, aber wir hatten kleinere Probleme mit dem Layout. Es gab also nur einen LM2596-Stabilisator, der den RPi, den Mikrocontroller, den logischen Teil des Motortreibers und die Sensoren speist.
Auch der Netzschalter und der Summer fanden ihren Platz auf der Platine, mit deren Hilfe sich der Roboter über seine Probleme beschwert.
Der RPiDuino wird wie alle ähnlichen Module in den GPIO-Steckplatz des Raspberry Pi eingesteckt. Atmega328 und RPi kommunizieren über UART.
Die verbleibenden Beine des GPIO werden direkt durchgezogen, sodass sie nach eigenem Ermessen verwendet werden können.RPiDuino-Hauptfeature-TabelleErnährung |
Versorgungsspannung | 7.5-24 ( ) 7.5-10.5 ( ) |
| 0,5 4, , , |
|
| 5 |
: // | 1.5/2/3 |
| 1% |
| 5.52.1 |
|
| 2,7-10,5 |
/ | 1/2 |
| 50 |
|
| 855622 855633 ( RaspberryPi)
|
| 49 |
Ferngesteuerter Roboter basierend auf RPi + RPiDuinoEine gute Demonstration der Fähigkeiten von RPi ist ein ferngesteuerter Roboter. Es kann die koordinierte Arbeit von RPi und Arduino zeigen, bei der die ältere Plattform mit der Videoverarbeitung und der Benutzeroberfläche befasst ist und die zweite ihre routinemäßigen Roboteraufgaben ausführt.
Jetzt verfügt der Roboter über eine Webcam mit Hardware-Unterstützung für die MJPG-Komprimierung, die über USB mit Raspberry verbunden ist. Der Roboter klammert sich über den USB-Router TL-WN722N an WLAN. Die Motoren sind im Verhältnis 1: 120 verstärkt. Die Räder sind groß mit weichem Gummi, um in unserem Hackspace am Linoleum zu haften. Encoder an Motoren helfen dabei, die Variation des Motorschubs auszugleichen. All dies wird von zwei LiIon-Batterien der Größe 18650 angetrieben.So funktioniert allesAuf RPiDuino dreht sich ein Programm, das die Bewegungsbefehle vom UART abhört und Telemetrie zurücksendet. In meinen Projekten verwende ich die SerialFlow- Bibliothek , die für meinen ersten Quadrocopter geschrieben wurde. Programmcode für RPiDuino finden Sie auch auf github.Auf der Raspberry Pi-Seite sind die Dinge etwas komplizierter. Erstens wird der Roboter über die Weboberfläche gesteuert, sodass ich einen kleinen Webserver in Python einrichten musste. Der Steuerbildschirm verfügt über Pfeile zum Einstellen der Bewegungsrichtung, einen Geschwindigkeitsregler, eine Telemetrie und ein Fenster zum Anzeigen des Streams von der Webcam. Um das Video zu senden, verwende ich traditionell mjpg-streamer.Wenn Sie etwas Ähnliches auf Ihrem Roboter wiederholen möchten, lautet der Installationsalgorithmus wie folgt.1) Installieren Sie mjpg-streamer und konfigurieren Sie die Übertragung des Videostreams auf http.2) Installieren Sie das Pyserial-Paket.3) Laden Sie das Archiv mit dem Serverteil des Steuerungsprogramms herunter und entpacken Sie es.4) Wir füllen die RPIDuino-Steuerungsskizze aus.5) Konfigurieren Sie WLAN auf RPi.6) Konfigurieren Sie den Autorun des Steuerprogramms auf RPi.RPiDuino und ROSEin weiterer Grund, warum wir dieses Erweiterungsmodul brauchten, war die Fähigkeit, unseren Schülern das richtige Roboterkonzept zu zeigen. Jetzt klingt es ungefähr so: „Guck mal, der Roboter hat einen Host-Computer, der komplexe Berechnungen verwaltet. Es kann Bilder erkennen, eine Karte mit Lidar und SLAM erstellen. All dies nimmt ihm eine Menge Ressourcen weg, so dass er die Räder eines bodengestützten Roboters nicht mehr empfindlich steuern kann, und Gott bewahre, dass er den Quadrocopter im Flug stabilisiert. Für diese Operationen auf der Ebene des Rückenmarks gibt es einen anderen Computer, der sich auf bestimmte einfache Aufgaben spezialisiert hat und von nichts anderem abgelenkt wird. "Diese beiden Computer sind über einen Datenbus verbunden, über den sie miteinander und mit anderen Modulen kommunizieren."Hier kommt das Konzept von ROS ins Spiel. In diesem Fall dreht sich der Kern des Systems auf RPi, und RPiDuino ist der ROS-Knoten. Übrigens haben wir bereits ein kleines Paket für die Verwaltung von RPIDuino über ROS erstellt. In Kürze werden wir einen separaten Artikel zu diesem Thema veröffentlichen.Was weiter?Die Beta-Version des Moduls hat sich als würdig erwiesen. Jetzt können Sie eine kleine Anzahl von Boards in unserem Hackspace erhalten , schreiben Sie in eine Person, die interessiert ist. Wir planen, die nächste Version mit neuen Motortreibern, zusätzlichen Indikatoren und einigen anderen Extras zu erstellen. Der Quellcode des Boards wird sicherlich veröffentlicht. Wir freuen uns über jede Kritik und Teilnahme!