Inhaltsverzeichnis:

DIY Educational Micro: Bit Roboter - Gunook
DIY Educational Micro: Bit Roboter - Gunook

Video: DIY Educational Micro: Bit Roboter - Gunook

Video: DIY Educational Micro: Bit Roboter - Gunook
Video: Best DIY Robot kit for beginners - Micro:Bit 2024, Juli
Anonim
DIY pädagogischer Mikro: Bit-Roboter
DIY pädagogischer Mikro: Bit-Roboter
DIY pädagogischer Mikro: Bit-Roboter
DIY pädagogischer Mikro: Bit-Roboter

Dieses anweisbare zeigt Ihnen, wie Sie einen relativ zugänglichen, fähigen und billigen Roboter bauen. Mein Ziel bei der Entwicklung dieses Roboters war es, etwas vorzuschlagen, das sich die meisten Leute leisten können, um Informatik auf ansprechende Weise zu unterrichten oder etwas darüber zu lernen.

Sobald Sie diesen Roboter gebaut haben, können Sie seine Vielzahl von Sensoren und Aktoren genießen, um grundlegende, aber auch ziemlich fortgeschrittene Dinge zu tun, je nach Version, die Sie bauen (ich werde zwei Versionen bereitstellen). Mit diesem Roboter geben Sie dem micro:bit Augen (180° Sicht!) und Beine (mit präziser Bewegung möglich!), compas, aber auch Zugriff auf all das Zeug entweder mit MicroPython oder mit einer visuellen Programmiersprache ähnlich Scratch (eigentlich auch in C++ und Javascript, aber ich finde diese weniger geeignet für Bildung).

Ich werde auch an diesem instructable arbeiten, damit ich die Leser und Macher auf den richtigen Weg bringen kann, um mehr über mobile Robotik, Elektronik, Design und Holzschneiden zu erfahren. Dafür habe ich alles so modular wie möglich gestaltet. Zum Beispiel werde ich keinen Kleber verwenden, um das Auf- und Abbauen frei zu ermöglichen, was Upgrades sowie das Debugging einfacher macht. Ich werde die Schritte auch so inkrementell wie möglich machen, damit Sie nach und nach verstehen, was vor sich geht, überprüfen, ob die Dinge so funktionieren, wie sie sollten, und das Ende mit einem funktionierenden Roboter erreichen.

Schritt 1: Sammeln der Stücke

Sammeln der Stücke
Sammeln der Stücke

Für dieses Projekt benötigen Sie mindestens:

  • 5 mm dickes MDF-Holz und ein Laserschneider für das Skelett
  • 1x18650 Lithiumbatterie, 1x Batterieschild für die Energie und ein Unterbrecher
  • 1xMicro:Bit-Karte und 1xMicro:Bit-Erweiterungsplatine für das Gehirn (obwohl beide leicht durch einen Arduino ersetzt werden können)
  • 2x28BYJ-5V Schrittmotoren, 2xA4988 Schrittmotortreiber und 2x Entwicklungsboard zur Montage der Treiber für die Beine
  • 1x TOF10120 und 1x Mini 9g Servomotor für die AugenEinige Kabel und Schrauben
  • 1x Universalrad, Höhe = 15mm

Unter diesen sind nur drei Teile keine Standards, daher sind hier Links, um sie zu finden: Finden Sie die Erweiterungsplatine, die ich hier verwendet habe (aber ich würde Ihnen empfehlen, stattdessen diese für die saubere Version des Roboters zu verwenden ändern Sie fast nichts am Design und es wird die Verkabelung mit gebogenen Buchsen-Buchsen-Stiften), der Batterieabschirmung hier und dem Universalrad hier viel einfacher machen.

Idealerweise verfügen Sie außerdem über:

  • Ein Multimeter
  • Ein Steckbrett
  • Ein Lötkolben

Überprüfen Sie sowohl für diese als auch für den Laserschneider, ob Sie ein Fablab in Ihrer Nähe haben! Das sind großartige Orte, um einige inspirierende Macher zu treffen!

Schritt 2: Bereiten Sie die Beine vor

Die Beine vorbereiten
Die Beine vorbereiten
Die Beine vorbereiten
Die Beine vorbereiten
Die Beine vorbereiten
Die Beine vorbereiten
Die Beine vorbereiten
Die Beine vorbereiten

Ihre erste Mission, wenn Sie sie akzeptieren, besteht darin, unseren Schrittmotor mit dem micro:bit als Controller zum Drehen zu bringen! Warum ein Schrittmotor? Ich hätte mich für einen Gleichstrommotor mit Untersetzungsgetriebe entscheiden können, aber ich habe sie ausprobiert und finde es schwierig, billige Motoren mit niedriger Geschwindigkeit zu betreiben. Ich dachte auch, dass es schön wäre, genau zu wissen, mit welcher Geschwindigkeit sich meine Räder drehen. Aus diesen Gründen waren Schrittmotoren die beste Option.

Wie kann man nun einen 28BYJ-Motor mit einem 4988-Treiber steuern? Die Antwort ist… ein bisschen lang. Ich habe es nicht geschafft, es ordentlich in dieses instructable einzupassen, also habe ich ein anderes nur für diesen Zweck gemacht, das Sie hier finden. Ich lade Sie ein, diese Schritte bis zum Ende mit der Erstellung einer kleinen Prototyping-Platine 26x22mm groß mit 2x2mm Löchern 17 mm auseinander zu befolgen, um sie an den Seiten zu montieren, wie im Bild oben gezeigt (Beachten Sie, dass wie im referenzierten Artikel angegeben der gelbe Draht links herausragt, soll Sie daran erinnern, SLP und RST zusammenzulöten).

Nachdem ich dies mit einem Motor mit dem Prototyping-Board zum Laufen gebracht hatte, entwarf ich auch meine eigene Platine, um die Dinge etwas aufgeräumter zu machen. Die entsprechende easyEDA-Datei habe ich angehängt. Es handelt sich um eine TXT-Datei, die Sie jedoch mit der kostenlosen Online-Bearbeitungsplattform easyEDA öffnen können.

Schritt 3: Ich sehe das Licht !! (Optional)

Ich sehe das Licht !! (Optional)
Ich sehe das Licht !! (Optional)
Ich sehe das Licht !! (Optional)
Ich sehe das Licht !! (Optional)
Ich sehe das Licht !! (Optional)
Ich sehe das Licht !! (Optional)

Wenn Sie nur bauen möchten und nicht mehr, springen Sie zum vorletzten Absatz dieses Schritts, um zu sehen, wie Sie einen TOF10120 mit dem micro:bit verbinden. Wenn nicht, folgen Sie.

Da unser micro:bit weder mit einer Kamera noch mit einem Näherungssensor ausgestattet ist, ist es für jede mobile Robotik-Anwendung quasi blind. Es kommt jedoch mit einem Funksender und -empfänger, der es uns ermöglicht, das Skelett über dem zu bauen, was wir bereits haben, und einen ferngesteuerten Roboter zu erhalten. Aber wäre es nicht toll, unseren Roboter autonom zu machen? Ja, würde es ! Sehen wir uns also an, wie Sie dorthin gelangen.

Was uns jetzt interessiert, ist, unseren Roboter mit Sensoren auszustatten, damit unser Roboter einige Informationen über seine Umgebung erhält. Es gibt viele Arten von Sensoren, aber hier konzentrieren wir uns auf Näherungssensoren. Als ich diesen Roboter entworfen habe, war mein Ziel vor allem, dass der Roboter nicht gegen irgendetwas stößt, daher wollte ich, dass er Hindernisse erkennt. Auch hierfür gibt es einige Möglichkeiten. Eine erste, sehr einfache Möglichkeit könnte die Verwendung von Stoßfängern sein, aber ich finde die Informationen über die Umgebung etwas begrenzt. Auf der anderen Seite können Sie auch daran denken, eine Kamera (oder ein Lidar oder eine Kinect!) hinzuzufügen. Ich liebe Kameras, Computer Vision und all diese Dinge, aber leider unterstützt Micro:bit diese nicht (wir müssten einen Raspberry Pi verwenden, um solche Geräte zu unterstützen, nicht ein micro:bit oder Arduino).

Was unterstützt micro:bit zwischen einer Kamera und Stoßfängern? Es gibt kleine aktive Sensoren, die Licht an die Umgebung senden und überprüfen, was empfangen wird, um Informationen über die Welt zu erhalten. Der, den ich bereits kannte, war der GP2Y0A41SK0F, der eine Triangulationsmethode verwendet, um die Entfernung zu Hindernissen zu schätzen. Ich fragte mich jedoch, ob ich etwas Besseres finden könnte, also recherchierte ich und entdeckte schließlich den TOF10120 (und den GY-VL53L0XV2, aber ich habe ihn noch nicht erhalten:(). Hier ist ein schöner Artikel, damit Sie ihn entdecken können. Grundsätzlich sendet dieser Sensor ein Infrarotsignal aus, das an Hindernissen reflektiert und empfängt dann das reflektierte Licht. Je nach Zeit, die das Licht für den Hin- und Rückweg benötigt, kann der Sensor die Entfernung des Hindernisses abschätzen (daher der Name TOF = Flugzeit) Wegen seiner geringen Größe, Reichweite und Leistungsbedarf habe ich mich für den TOF10120 entschieden.

Während meine erste Idee darin bestand, drei davon auf dem Roboter zu platzieren (einen vorne und zwei an den Seiten), wollten das chinesische Neujahr und die COVID-19-Pandemie dies nicht so, da es Probleme mit den Lieferungen zu geben schien. Da ich also auf einen TOF10120 beschränkt war, den ich auch an den Seiten sehen wollte und noch einige Servomotoren herumliegen, habe ich mich entschlossen meinen Sensor auf einem Servo zu montieren. Jetzt fehlen also zwei Dinge: Wie verwende ich den TOF10120 mit dem micro:bit ? Und die gleiche Frage mit dem Servo.

Glücklicherweise ist das micro:bit mit dem I2C-Kommunikationsprotokoll ausgestattet und macht unser Leben wirklich einfach: Stecken Sie das rote Kabel an 3.3V, schwarz an Masse, grün an SCL und blau an SDA und das war's für den Hardware-Teil. Für die Software empfehle ich Ihnen, ein wenig über die I2C-Kommunikation zu lesen und den Python-Code auszuprobieren, den ich auf dem micro:bit angehängt habe. Dieses Programm sollte Ihnen den vom Sensor gemessenen Abstand auf der REPL (Read Evaluate Print Loop) ausdrucken. Das ist es. Wir haben gerade unser micro:bit zu Gesicht bekommen.

Lassen Sie uns jetzt den Hals umdrehen, wenn Sie mir erlauben, meine Analogien zur Tieranatomie fortzusetzen. Der einzige Gedanke, den wir dazu brauchen, ist, einen Servomotor mit dem micro:bit anzutreiben. Dieser Teil wird lang, daher gebe ich Ihnen nur diesen Link, der alle Informationen enthält, die Sie benötigen, und den Code, den ich zum Testen verwendet habe. Wenn Sie möchten, habe ich auch einen einfachen Code hinzugefügt, um das Servo mit Pin0 zu steuern. Vergessen Sie nur nicht, Ihr Servo mit 5V und nicht mit 3,3V zu versorgen.

Schritt 4: Hacken des Batterieschildes

Hacken des Batterieschilds
Hacken des Batterieschilds
Hacken des Batterieschilds
Hacken des Batterieschilds
Hacken des Batterieschilds
Hacken des Batterieschilds

Nachdem wir nun unsere Aktoren und Sensoren fertig gemacht haben, ist es an der Zeit, einen Blick auf das Batteriemanagementsystem zu werfen. Um mehr über das von mir gewählte Batterieschild zu erfahren, empfehle ich Ihnen, diesen Artikel zu lesen. Ich finde es sehr übersichtlich und zugänglich. Aus diesem Artikel können wir viele Vorteile dieses Batterieschilds sehen, aber einen wichtigen Nachteil wollte ich nicht akzeptieren: Der EIN/AUS-Schalter beeinflusst nur den USB-Ausgang. Dies bedeutet, dass beim Ausschalten des Schalters alle anderen 3,3-V- und 5-V-Pins mit Strom versorgt werden. Als Ergebnis, da wir diese Pins für unseren Roboter verwenden, wird der Schalter überhaupt nichts tun …

Aber ich möchte meinen Roboter ausschalten können, um meinen Akku nicht umsonst zu leeren, also musste ich das Batterieschild hacken. Es wird nicht schön sein, aber es funktioniert und es kostet nichts. Daher möchte ich, dass ein Schalter den Stromkreis öffnet oder schließt, damit er meine Batteriezelle vom Batterieschild trennt. Ich habe nicht die Ausrüstung, um die Platine zu berühren, aber ich habe überall Plastikstücke. Stellen Sie sich nun vor, ich schneide ein Stück Plastik so zu, dass es an einem Ende meiner Akkuzelle in die Abschirmung passt, wie im ersten Bild oben. Der Stromkreis ist jetzt geöffnet und mein Akku ist sicher verstaut.

Ja, aber ich möchte den Roboter nicht öffnen müssen, um auf den Batterieschutz zuzugreifen, um dieses Plastikstück zu platzieren und zu entfernen! Ganz einfach: Holen Sie sich einen Schalter und kleben Sie zwei kleine Quadrate aus Aluminium an jedes der mit dem Schalter verbundenen Drähte. Kleben Sie nun diese beiden Aluminiumstücke auf das Plastikstück, um die beiden Aluminiumstücke voneinander zu isolieren und das Aluminium an der Außenseite Ihres Systems freizulegen. Normalerweise sollte das reichen. Setzen Sie Ihre neue Kreation in das Batterieschild neben der Zelle ein, und der Schalter sollte es Ihnen ermöglichen, den mit der Zelle verbundenen Stromkreis zu öffnen oder zu schließen.

Eine letzte Sache: Um den Roboter leicht montieren und demontieren zu können, würde ich Ihnen raten, Buchsenleisten auf dem Batterieschild zu löten. Auf diese Weise können Sie das, was Sie mit den Motoren und ihren Treibern bauen, einfach ein- und ausstecken.

Schritt 5: 3D-Design und Schnitt

3D-Design und Schnitt
3D-Design und Schnitt
3D-Design und Schnitt
3D-Design und Schnitt

Jetzt fehlt nur noch die Struktur, die alle unsere Komponenten zusammenhält. Dazu habe ich die Online-Plattform tinkercad genutzt. Dies ist eine wirklich schöne Umgebung, um grundlegende CAD-Funktionen zu erstellen, die oft ausreichen, um Dinge für den Laserschneider zu entwerfen.

Nach einiger Zeit des Überlegens war es Zeit zu basteln. Um dies zu tun, habe ich angefangen, 3D-Modelle der verschiedenen Teile zusammenzustellen, die ich hatte (zuerst das Servo und das TOF aus der Gleichung heraushalten). Dazu gehören die Batterie und das Schild, die Schrittmotoren und die Motortreiber und natürlich das micro:bit mit seinem Erweiterungsboard. Ich habe alle entsprechenden 3D-Modelle als stl-Dateien angehängt. Um den Prozess zu erleichtern, habe ich beschlossen, meinen Roboter symmetrisch zu machen. Als Ergebnis habe ich nur mit der Hälfte des Roboters gebastelt und das im Bild oben gezeigte Design erreicht.

Daraus sind einige Versionen entstanden, von denen ich zwei ausgewählt habe:

  • Eine recht ordentlich, ohne den Näherungssensor, der es ermöglicht, dass keine Drähte erscheinen. Obwohl diese Version nicht autonom ist, kann sie beispielsweise über Bluetooth über ein iPad programmiert werden oder kann so programmiert werden, dass sie über Funksignale gesteuert wird, die beispielsweise von einem anderen micro:bit gesendet werden können, wie im obigen Video gezeigt.
  • Eine viel weniger aufgeräumte, die es ermöglicht, viel weiter in die mobile Robotik einzusteigen, da sie dank des auf einem Servomotor integrierten Näherungssensors die Entfernung von Hindernissen mit einer 180-Grad-Ansicht erfassen kann.

Um dies aufzubauen, gehen Sie zu Ihrem Lieblings-Fablab und verwenden Sie den Laserschneider, den Sie finden, um das Modell Ihrer Wahl zu schneiden: das erste, das den Dateien design1_5mmMDF.svg und design1_3mmMDF entspricht, die jeweils den Teilen entsprechen, die in das 5mm MDF geschnitten werden sollen Holz und diejenigen, die aus dem 3mm-Modell geschnitten werden müssen; die zweite entspricht der Datei design2_5mmMDF.svg. Legen Sie die zu schneidenden schwarzen Konturen und die zu gravierenden roten Konturen fest.

Randnotiz: Ich habe das rote Muster nur hinzugefügt, um es aufzumotzen. Dies ist eine Hilbert-Füllfunktion, die ich mit dem beigefügten Python-Code generiert habe.

Schritt 6: Montage des Tieres

Das Biest besteigen
Das Biest besteigen
Das Biest besteigen
Das Biest besteigen
Das Biest besteigen
Das Biest besteigen

Die Schritte, die ich befolgt habe, um die erste Version des Roboters zu montieren, sind die folgenden (die Bilder sollten normalerweise in der richtigen Reihenfolge sein):

  1. Entfernen Sie die blaue Kappe der Motoren und schneiden Sie sie ein wenig ab, damit das Kabel aus der Rückseite des Motors herausragt.
  2. Montieren Sie die Motoren auf jeder Seite mit M2-Schrauben und Bolzen.
  3. Montieren Sie das Prototyping Board an den Seiten mit den 2x2mm Löchern und einigen Schrauben und Bolzen.
  4. Setzen Sie die A4988-Treiber ein und kleben Sie die Motorkabel auf, um sie ordentlich zu halten.
  5. Montieren Sie das Universalrad unter dem Unterteil und fügen Sie die Seiten hinzu.
  6. Montieren Sie die Erweiterungsplatine des micro:bit auf dem Oberteil.
  7. Montieren Sie die Unterseite der flexiblen Frontabdeckung.
  8. Setzen Sie die Batterieabschirmung auf und schließen Sie alles an (da ich noch auf die Lieferung der gewünschten Erweiterungsplatine gewartet habe und nur eine mit herausstehenden Buchsenleisten hatte, habe ich ein IDE-Kabel von einem alten Computer recycelt, um dies zu erreichen dass meine Kabel nicht über die Platine ragen, um all dies durch die faltbare Frontabdeckung zu verdecken). Obwohl der von mir bereitgestellte Code sehr einfach anzupassen ist, müssen Sie zur direkten Verwendung den linken STEP mit Pin 2, den rechten STEP mit Pin 8, den linken DIR mit Pin 12 und den rechten DIR mit Pin 1 verbinden.
  9. Setzen Sie das micro:bit in die Erweiterung ein.
  10. Testen Sie, ob alles mit MoveTest.py funktioniert, bevor Sie fortfahren.
  11. Montieren Sie den Schalter am Oberteil und legen Sie das Plastikbit neben die Lithiumzelle.
  12. Schrauben Sie den oberen Teil der Frontabdeckung fest.
  13. Rückwand montieren, fertig! Puh! Mit so vielen Schritten habe ich nicht gerechnet! Es ist so viel einfacher, darüber nachzudenken und es zu tun, als es mit Worten zu erklären! (Und es werden sicher noch Informationen fehlen!)

Wenn Sie die zweite Version mit dem Näherungssensor bauen, dann:

  1. Befolgen Sie die obige Anweisung. Der einzige Unterschied besteht darin, dass Sie in Schritt 7 einige M2-Abstandshalter hinzufügen müssen (obwohl ich das getan habe, aber es ist nicht erforderlich), Schritt 8 und Schritt 13 ignorieren (da es keine Frontabdeckung gibt)
  2. Montieren Sie den Servomotor mit M2-Schrauben und verbinden Sie VCC und GND des Servos direkt mit den 5V des Batterieschirms und verbinden Sie den Steuereingang mit Pin 0 des micro:bit.
  3. Montieren Sie die beiden Holzstücke, die auf das Servo kommen, mit einer Schraube, schrauben Sie den TOF-Sensor darauf sowie das weiße Plastikstück, das mit dem Servo geliefert wird.
  4. Montieren Sie diese letzte Einheit auf dem Servo und verbinden Sie den Sensor mit I2C von micro:bit wie in Schritt 3 beschrieben.

Schritt 7: Programm

Das ist es ! Sie haben einen Roboter, den Sie entweder in micro:python oder in makecode programmieren können. Ich habe hier einen Beispielcode angehängt, mit dem ich die obigen Videos erstellt habe:

  • Beispiel 1: Legen Sie radioControl.py auf das micro:bit des Roboters und ReadAccelero.py auf ein anderes micro:bit, um den Roboter mit der Neigung des zweiten micro:bit zu steuern.
  • Beispiel 2: Setzen Sie Autonomous.py auf die Version 2 des Roboters, der die Umgebung erkunden wird.

Dies sind nur grundlegende Beispiele, mit denen Sie viel, viel weiter gehen können. Zum Beispiel mag ich die gleichzeitige Lokalisierung und Kartierung sehr, und normalerweise gibt es in der Version 2 dieses Roboters alles, was Sie dafür brauchen! Obwohl ein großer Nachteil für mich bei einem solchen Projekt darin besteht, dass der micro:bit PWM-Treiber ein Softwaretreiber ist, der für alle Kanäle denselben Timer verwendet, was bedeutet, dass alle von uns eingestellten PWMs die gleiche Frequenz haben müssen (was ich getan habe) weiß nicht, wann ich die Beispielcodes geschrieben habe, obwohl ich beim Schreiben von Autonomous.py etwas Seltsames entdeckt habe).

Schritt 8: Weiter gehen

Zögern Sie nicht, das Design zu verbessern, einige Probleme zu lösen, die ich nicht gesehen habe. Zum Beispiel möchte ich schließlich:

  • Fügen Sie einen IR-Sensor an der Unterseite des Roboters hinzu, damit er erkennt, ob der Boden schwarz oder weiß ist oder das Ende meines Schreibtisches erreicht.
  • Wechseln Sie das Batteriemanagementsystem, da ich damit noch nicht zufrieden bin. Um die Batterie aufzuladen, muss der Roboter derzeit tatsächlich zerlegt werden, um die Zelle oder das Batterieschild herauszunehmen… Ich plane daher: 1. einen Mini-USB-Anschluss auf der Rückseite des Roboters hinzuzufügen, den ich verbinde mich mit dem Batterieschild, damit ich es aufladen kann; 2. Schneiden Sie ein Loch an der Unterseite, um die LEDs des Batterieschilds zu sehen, um zu sehen, wann der Ladevorgang beendet ist.
  • Prüfen Sie, ob es eine akzeptable Möglichkeit gibt, PWMs mit unterschiedlichen Frequenzen auszugeben.
  • Probieren Sie den VL53L0XV2 aus, um den TOF10120 zu ersetzen, da dies eine billigere Option sein könnte, die es noch mehr Menschen zugänglich machen würde. Obwohl ich mehr über diesen Sensor gelesen habe und es scheint, dass die Firma, die ihn billig gemacht hat, es absichtlich sehr schwer gemacht hat, damit umzugehen…
  • Testen Sie verschiedene Designs für die Räder, um sie haltbarer zu machen (Im Moment würde ich erwarten, dass das Holz nach und nach beschädigt wird, wenn ich die Räder viele Male hinein- und herausnehme. Wenn ich das Holz elastischer mache und das Design ändere, könnte ich es tun länger halten können)

Ein großes Dankeschön an die Leute vom Mobile Robotics Team (jetzt Teil des Biorobotics Laboratory) der EPFL, die mir sehr geholfen haben, mein Wissen in Elektronik und Mechanik zu erweitern!

Empfohlen: