Hallo.
In diesem Artikel möchte ich den Prozess der Konstruktion meines ersten Roboters mit Arduino beschreiben. Das Material wird auch fĂŒr andere AnfĂ€nger wie mich nĂŒtzlich sein, die eine Art "selbstfahrenden Wagen" bauen möchten. Der Artikel bietet eine Beschreibung der Arbeitsschritte mit meinen ErgĂ€nzungen zu verschiedenen Details. Ein Link zum endgĂŒltigen Code (wahrscheinlich nicht der perfekte) ist am Ende des Artikels zu finden.

Soweit es möglich war, habe ich meinen Sohn (8 Jahre alt) in das Projekt einbezogen. Was genau mit ihm funktionierte und was nicht, habe ich in einem Abschnitt des Artikels festgehalten. Vielleicht wird es fĂŒr jemand anderen von Nutzen sein.
Allgemeine Beschreibung des Roboters
ZunĂ€chst ein paar Worte ĂŒber den Roboter (die Idee). Es reizte mich nicht besonders, etwas Typisches zu Beginn zu bauen. Gleichzeitig war das Set an Komponenten ziemlich standardisiert â Chassis, Motoren, Ultraschallsensor, Linien-sensor, LEDs, Summer. Aus diesem "Suppen-Mix" wurde zunĂ€chst ein Roboter erfunden, der sein Territorium bewacht. Er fĂ€hrt zu einem Eindringling, der die Linie des Kreises ĂŒberschreitet, und kehrt dann ins Zentrum zurĂŒck. In dieser Variante war jedoch eine gezeichnete Linie nötig, plus etwas zusĂ€tzliche Mathematik, um stĂ€ndig im Kreis zu bleiben.
Nach reiflicher Ăberlegung habe ich die Idee etwas angepasst und beschlossen, einen "JĂ€ger-Roboter" zu entwickeln. Zu Beginn dreht er sich um seine Achse und sucht in der NĂ€he nach einem Ziel (einer Person). Wenn die âBeuteâ entdeckt wird, aktiviert der âJĂ€gerâ seinBlinklicht und die Sirene und macht sich auf den Weg dorthin. Wenn die Person sich entfernt, wĂ€hlt der Roboter ein neues Ziel und verfolgt es weiter. Dieser Roboter benötigt keinen festen Bereich und kann auf offenem GelĂ€nde arbeiten.
Wie Sie sehen, erinnert das in vielerlei Hinsicht an das Spiel âFangenâ. Auch wenn der Roboter letztlich nicht besonders flink geworden ist, interagiert er ehrlich mit den Menschen um ihn herum. Besonders Kinder finden das faszinierend (manchmal scheint es, als wĂŒrden sie ihn gleich zertrampeln, das lĂ€sst einem das Herz stockenâŠ). Ich denke, das ist eine gute Lösung, um technisches Konstruieren populĂ€r zu machen.
Struktur des Roboters
Nachdem wir uns also auf die Idee geeinigt haben, kommen wir zu der Zusammenstellung. Die Liste der Elemente wird aus dem erstellt, was der Roboter können muss. Hier ist alles ganz klar, also schauen wir sofort auf die Nummerierung:

Der "Gehirn" des Roboters ist das Arduino Uno Board (1), das in dem aus China bestellten Set enthalten war. FĂŒr unsere Zwecke reicht es völlig aus (wir orientieren uns an der Anzahl der verwendeten Pins). Aus demselben Set haben wir das fertige Chassis (2) entnommen, an dem zwei HauptrĂ€der (3) und ein freilaufendes Hinterrad (4) befestigt sind. Im Set war auch ein fertiges Batteriefach (5) enthalten. An der Vorderseite des Roboters befindet sich ein Ultraschallsensor (HC-SR04) (6), hinten der Motorcontroller (L298N) (7), in der Mitte eine blinkende LED (8) und etwas abseits ein Summer (9).
In der Montagephase achten wir auf:
â dass alles reinpasst
â dass es ausgewogen ist
â dass es sinnvoll angeordnet ist
Teilweise wurde dies bereits von unseren chinesischen Kollegen ĂŒbernommen. So ist das schwere Batteriefach in der Mitte platziert, und die HauptrĂ€der stehen ungefĂ€hr darunter. Alle anderen Boards sind leicht und können am Rand platziert werden.
Details:
- Im Chassis des Sets gibt es viele werkseitige Ăffnungen, aber ich konnte die Logik dahinter nicht erkennen. Die Motoren und der Akkublock wurden problemlos befestigt, danach begann das âAnpassenâ mit dem Bohren neuer Löcher, um das jeweilige Board zu befestigen.
- Die MessingstĂŒtzen und andere Befestigungen aus dem Vorrat haben mir sehr geholfen (manchmal musste ich improvisieren).
- Ich habe die DrĂ€hte jeder Platte durch Klemmen gefĂŒhrt (die fand ich ebenfalls im Vorrat). Das ist sehr praktisch, alle Kabel liegen ordentlich und wackeln nicht.
Einzelne Blöcke
Jetzt werde ich die Blöcke durchgehen und jeweils im Detail erklÀren.
Batteriefach
Es ist klar, dass der Roboter eine zuverlĂ€ssige Energiequelle benötigt. Die Optionen können unterschiedlich sein, ich habe mich fĂŒr die Variante mit 4 AA-Batterien entschieden. Insgesamt liefern sie etwa 5 V, und diese Spannung kann direkt an den Pin 5V der Arduino-Platine angeschlossen werden (ohne den Spannungsregler).
Ein gewisses Zögern hatte ich natĂŒrlich, aber diese Lösung funktioniert einwandfrei.
Da die Stromversorgung ĂŒberall benötigt wird, habe ich zur Vereinfachung in der Mitte des Roboters zwei AnschlĂŒsse geschaffen: einer gibt die Masse (rechts) ab, der andere â 5 V (links).

Motoren und Treiber
Zuerst zur Motorbefestigung. Die Befestigung ist werkseitig, jedoch mit groĂen Toleranzen gefertigt. Mit anderen Worten, die Motoren können sich um ein paar Millimeter nach links und rechts âbewegenâ. FĂŒr unser Vorhaben ist das nicht kritisch, könnte aber woanders Einfluss haben (die Robotersteuerung könnte abdriften). Vorsichtshalber habe ich die Motoren genau parallel ausgerichtet und mit Kleber fixiert.

Zur Steuerung der Motoren, wie oben beschrieben, kommt der L298N-Treiber zum Einsatz. Laut Dokumentation hat er drei Pins fĂŒr jeden Motor: einen zur GeschwindigkeitsĂ€nderung und zwei fĂŒr die Drehrichtung. Hier gibt es einen wichtigen Punkt. Es stellte sich heraus, dass die Geschwindigkeitsregelung bei einer Versorgungsspannung von 5 V einfach nicht funktioniert! Das bedeutet, dass der Motor entweder gar nicht dreht oder maximal dreht. Solch eine Eigenheit, wegen der ich ein paar Abende âverlorenâ habe. SchlieĂlich fand ich eine ErwĂ€hnung dazu in einem Forum.
Im Grunde genommen benötigte ich eine niedrige Drehgeschwindigkeit, um den Roboter zu wenden â damit er genug Zeit hat, den Raum zu scannen. Da dies jedoch nicht funktioniert hat, musste ich es anders handhaben: kleiner Dreh â Stopp â Dreh â Stopp und so weiter. Wieder einmal nicht besonders elegant, aber funktional.
Ich fĂŒge hier noch hinzu, dass der Roboter nach jeder Verfolgung eine zufĂ€llige Richtung fĂŒr die nĂ€chste Wendung wĂ€hlt (im oder gegen den Uhrzeigersinn).
Ultraschallsensor

Eine weitere Komponente, bei der ich nach einer Kompromisslösung suchen musste. Der Ultraschallsensor liefert an echten Hindernissen instabile Zahlen. TatsĂ€chlich war das zu erwarten. Idealerweise funktioniert er bei Wettbewerben, wo es glatte, ebene und rechtwinklige OberflĂ€chen gibt, aber wenn vor ihm jemandes Beine 'flackern', muss eine zusĂ€tzliche Verarbeitung eingefĂŒhrt werden.
Als solche Verarbeitung habe ich einen fĂŒr drei Messungen. Basierend auf Tests an echten Kindern (wĂ€hrend der Tests wurde kein Kind verletzt!) war es mehr als ausreichend zur Normalisierung der Daten. Die Physik hier ist einfach: Wir haben Signale, die von den benötigten Objekten reflektiert werden (die den gewĂŒnschten Abstand geben) und von weiter entfernten, beispielsweise WĂ€nden. Letztere stellen zufĂ€llige AusreiĂer in den Messungen dar, wie 45, 46, 230, 46, 46, 45, 45, 310, 46⊠Genau diese werden durch den Medianfilter herausgefiltert.
Nach aller Verarbeitung erhalten wir den Abstand zum nÀchsten Objekt. Wenn dieser kleiner ist als ein bestimmter Schwellenwert, aktivieren wir das Alarmsignal und fahren direkt zum "Verursacher".
Blinklicht und Sirene
Zweifellos die einfachsten Elemente aus allem, was aufgezĂ€hlt wurde. Sie sind auf den obigen Fotos zu sehen. Ăber die Hardware gibt es hier nichts zu sagen, also kommen wir nun zum Code.
Steuerprogramm
Eine detaillierte Beschreibung des Codes halte ich fĂŒr nicht notwendig; wer interessiert ist, findet den Link am Ende des Artikels, dort ist alles recht gut lesbar. Eine allgemeine Struktur zu erklĂ€ren, wĂ€re jedoch sinnvoll.
Das Erste, was ich ĂŒberdenken musste: Ein Roboter ist ein Echtzeitsystem. Genau genommen musste ich mich erinnern, denn ich beschĂ€ftige mich schon immer mit Elektronik. Das heiĂt, wir vergessen sofort den Aufruf delay(), der in Beispiel-Sketches oft verwendet wird und einfach das Programm fĂŒr einen bestimmten Zeitraum âeinfriertâ. Stattdessen, wie erfahrene Leute raten, verwenden wir Timer fĂŒr jeden Block. Nach dem erforderlichen Zeitraum fĂŒhren wir die Aktion aus (erhöhen die Helligkeit der LED, schalten den Motor ein, und so weiter).
Timer können miteinander verbunden sein. So arbeitet zum Beispiel der Piezo-Lautsprecher synchron mit der LED. Das vereinfacht das Programm etwas.
NatĂŒrlich teilen wir alles in separate Funktionen auf (Blinklicht, Ton, Drehung, VorwĂ€rtsbewegung usw.). Wenn wir das nicht tun, ist es spĂ€ter schwer nachzuvollziehen, was woher kommt und wohin es geht.
Nuancen der PĂ€dagogik
Alles, was ich oben beschrieben habe, habe ich in meiner Freizeit abends gemacht. In einem gemĂ€chlichen Tempo habe ich etwa drei Wochen an dem Roboter gearbeitet. An dieser Stelle könnte ich aufhören, aber ich habe Ihnen auch versprochen, ĂŒber die Arbeit mit dem Kind zu sprechen. Was ist in diesem Alter umsetzbar?
Arbeiten nach Anleitung
Jedes Teil haben wir zunĂ€chst einzeln geprĂŒft â die LEDs, den Summer, die Motoren, die Sensoren usw. Es gibt viele fertige Beispiele â einige direkt in der Entwicklungsumgebung, andere findet man im Internet. Das ist zweifellos erfreulich. Wir nehmen den Code, schlieĂen das Teil an, vergewissern uns, dass es funktioniert, und beginnen dann schon, es an unsere Aufgabe anzupassen. Die AnschlĂŒsse nach Schema und unter meiner Kontrolle macht das Kind selbst. Das ist gut. Man muss auch lernen, genau nach Anleitung zu arbeiten.
Arbeitsablauf (âvom Einzelnen zum Allgemeinenâ)
Das ist ein komplizierter Punkt. Man muss lernen, dass ein groĂes Projekt (âeinen Roboter bauenâ) aus kleinen Aufgaben (âeinen Sensor anschlieĂenâ, âMotoren anschlieĂenââŠ) besteht, die wiederum aus noch kleineren Schritten bestehen (âein Programm findenâ, âeine Platine anschlieĂenâ, âdie Firmware hochladenââŠ). Durch das Erledigen mehr oder weniger verstĂ€ndlicher Aufgaben auf niedrigerer Ebene schlieĂen wir die Mittelstufenaufgaben ab und aus diesen ergibt sich das Gesamtergebnis. Ich habe es erklĂ€rt, aber ich denke, das VerstĂ€ndnis wird noch nicht bald kommen. Vielleicht so etwa im Teenageralter.
Montage
Bohren, Gewinde, Schrauben, Unterlegscheiben, Löten und der Geruch von Kolophonium â das gehört einfach dazu. Mein Kind hat die grundlegende FĂ€higkeit "Arbeiten mit dem Lötkolben" erlernt und es ist gelungen, einige Verbindungen zu löten (ich habe ein wenig geholfen, das will ich nicht leugnen). Vergessen Sie nicht, die Sicherheitsvorkehrungen zu erklĂ€ren.
Arbeiten am Computer
Das Programm fĂŒr den Roboter habe ich selbst geschrieben, aber es konnten dennoch einige nĂŒtzliche Ergebnisse erzielt werden.
Erstens: Englisch. In der Schule haben wir gerade erst damit angefangen, weshalb wir uns schwer taten, Begriffe wie pishalka, migalka, yarkost und andere Transliterationen zu verstehen. Zumindest haben wir das begriffen. Ich habe bewusst keine eigenen englischen Begriffe verwendet, da wir dieses Niveau noch nicht erreicht haben.
Zweitens: effektives Arbeiten. Wir haben die wichtigen Tastenkombinationen gelernt, um gĂ€ngige Operationen schnell auszufĂŒhren. Gelegentlich haben mein Sohn und ich beim Programmieren die PlĂ€tze gewechselt, und ich erklĂ€rte, was zu tun ist (Ersetzen, Suchen usw.). Ich musste immer wieder sagen: "Doppelklick, um auszuwĂ€hlen", "Shift gedrĂŒckt halten", "Ctrl gedrĂŒckt halten" und so weiter. Der Lernprozess ist hier nicht schnell, aber ich denke, die FĂ€higkeiten werden allmĂ€hlich "im Unterbewusstsein" verankert.
Versteckter TextVielleicht kann man sagen, dass das oben Beschriebene fast offensichtlich ist. Aber ehrlich gesagt, in diesem Herbst war ich Lehrer fĂŒr Informatik in der 9. Klasse an einer Schule. Es ist schrecklich. Die SchĂŒler wissen nicht einmal so grundlegende Dinge wie Ctrl + Z, Ctrl + C und Ctrl + V, wie man Text mit gedrĂŒckter Shift-Taste markiert oder mit einem Doppelklick auf ein Wort auswĂ€hlt. Dabei sind sie im dritten Jahr im Informatikunterricht⊠Machen Sie sich selbst ein Bild.
Drittens: Blindschreiben. Ich habe einem Kind anvertraut, die Kommentare im Code zu tippen (lass es ĂŒben). Wir haben sofort die HĂ€nde richtig positioniert, damit die Finger allmĂ€hlich die Tastenanordnung lernen.
Wie Sie sehen, fĂ€ngt bei uns alles erst an. Die FĂ€higkeiten und das Wissen werden wir weiter verfeinern, sie werden im Leben nĂŒtzlich sein.
Ăbrigens, zur PerspektiveâŠ
Weitere Entwicklungen
Der Roboter ist fertig, fĂ€hrt, blinkt und piept. Und jetzt? Inspiriert von dem Erreichten planen wir, ihn weiter zu verbessern. Es gibt die Idee, eine Fernsteuerung zu entwickeln â Ă€hnlich wie bei einem Mondfahrzeug. Es wĂ€re interessant, von einem hypothetischen Controller aus die Bewegung des Roboters zu steuern, der sich an einem ganz anderen Ort befindet. Aber das wird eine eigene Geschichte seinâŠ
Und schlieĂlich, die Helden dieses Artikels (Video beim Klicken):
Vielen Dank fĂŒr Ihre Aufmerksamkeit!
â
Quelle: habr.com
