Hallo.
In diesem Artikel möchte ich den Prozess des Zusammenbaus meines ersten Roboters mit Arduino beschreiben. Das Material wird fĂŒr andere AnfĂ€nger von Nutzen sein, die wie ich einen âautomatischen Wagenâ herstellen möchten. Der Artikel beschreibt die Schritte der Arbeit mit meinen ErgĂ€nzungen zu verschiedenen Nuancen. Ein Link zum endgĂŒltigen Code (wahrscheinlich nicht der perfekte) befindet sich am Ende des Artikels.

So oft wie möglich bezog ich meinen Sohn (8 Jahre) in das Projekt ein. Was genau mit ihm gelungen ist und was nicht, habe ich in einem Teil des Artikels festgehalten; vielleicht ist es fĂŒr jemand anderen hilfreich.
Allgemeine Beschreibung des Roboters
ZunĂ€chst einige Worte ĂŒber den Roboter (die Idee). Etwas Typisches von Anfang an zu bauen, war nicht mein Ziel. Gleichzeitig war das Set an Komponenten ziemlich standardmĂ€Ăig â Chassis, Motoren, Ultraschallsensor, Linienensor, LEDs, Summer. ZunĂ€chst entstand aus diesem âSĂŒppchenâ ein Roboter, der sein Gebiet bewacht. Er fĂ€hrt auf den Eindringling zu, der die Linie des Kreises ĂŒberquert hat, und kehrt dann in die Mitte zurĂŒck. In dieser Variante war jedoch eine gezeichnete Linie erforderlich, plus zusĂ€tzliche Mathematik, um stĂ€ndig im Kreis zu bleiben.
Nach einigem Ăberlegen Ă€nderte ich die Idee und beschloss, einen JĂ€ger-Roboter zu bauen. Zu Beginn dreht er sich um seine Achse, um ein Ziel in der NĂ€he (eine Person) zu wĂ€hlen. Wenn das âOpferâ entdeckt wird, schaltet der âJĂ€gerâ das Blinklicht und die Sirene ein und fĂ€hrt darauf zu. Wenn die Person sich entfernt/weggeht, wĂ€hlt der Roboter ein neues Ziel und verfolgt es weiter, und so weiter. Ein solcher Roboter benötigt keinen begrenzten Kreis und kann auf offenem GelĂ€nde arbeiten.
Wie Sie sehen, Ă€hnelt dies sehr dem Spiel âFangenâ. Obwohl der Roboter letztlich nicht besonders flink geworden ist, interagiert er ehrlich mit den Menschen um ihn herum. Besonders Kindern gefĂ€llt das (manchmal hat man jedoch den Eindruck, dass sie ihn gleich zertreten werden, da schlĂ€gt das Herz schnellerâŠ). Ich denke, das ist eine gute Lösung zur Popularisierung des technischen Bauens.
Struktur des Roboters
Also, wir haben uns mit der Idee entschieden, lassen Sie uns zur ZusammenstellungĂŒbergehen. Die Liste der Elemente wird aus dem gebildet, was der Roboter können sollte. Das ist alles ziemlich offensichtlich, also schauen wir uns gleich die Nummerierung an:

Der "Gehirn" des Roboters ist eine Arduino Uno-Platine (1); sie war im aus China bestellten Set enthalten. FĂŒr unsere Zwecke ist sie völlig ausreichend (wir orientieren uns an der Anzahl der verwendeten Pins). Aus demselben Set haben wir das fertige Chassis (2) genommen, an dem zwei AntradsĂ€tze (3) und ein hinteres Rad (frei drehend) (4) befestigt sind. Im Set war auch ein fertiges Batteriefach (5) enthalten. Vorne am Roboter befindet sich ein Ultraschallsensor (HC-SR04) (6), hinten â ein Motorentreiber (L298N) (7), in der Mitte â eine blinkende LED (8), und etwas abseits â ein Lautsprecher (9).
In der Phase der Montage schauen wir:
â dass alles passt
â dass es ausgewogen ist
â dass es sinnvoll platziert ist
Teils haben dies bereits unsere chinesischen Kollegen fĂŒr uns ĂŒbernommen. So ist das schwere Batteriefach in die Mitte gesetzt, und ungefĂ€hr darunter befinden sich die AntradsĂ€tze. Alle anderen Platinen sind leicht und können an der Peripherie platziert werden.
Details:
- Im Chassis des Sets gibt es viele werkseitige Löcher, aber wie die angeordnet sind â das habe ich nicht herausgefunden. Die Motoren und der Akkumulatorblock wurden problemlos gesichert, danach begann das "Anpassen" mit dem Bohren neuer Löcher, um die eine oder andere Platine zu befestigen.
- Die Messinghalter und andere Befestigungselemente aus dem Vorrat haben uns sehr geholfen (manchmal musste man improvisieren).
- Ich habe die DrĂ€hte jeder Platine durch Klemmen gefĂŒhrt (die habe ich ebenfalls im Vorrat gefunden). Es ist sehr praktisch, alle DrĂ€hte liegen ordentlich und wackeln nicht.
Einzelne Blöcke
Jetzt gehe ich auf die Blöcke ein und erzĂ€hle persönlich ĂŒber jeden.
Batteriefach
Es ist klar, dass der Roboter eine gute Energiequelle benötigt. Die Optionen können unterschiedlich sein, ich habe die Variante mit 4 AA-Batterien gewÀhlt. Insgesamt liefern sie etwa 5 V, und diese Spannung kann direkt auf den 5V-Pin der Arduino-Platine (um den Spannungsregler herum) gegeben werden.
Ein gewisses Misstrauen hatte ich natĂŒrlich, aber diese Lösung ist durchaus funktionsfĂ€hig.
Da ĂŒberall eine Stromversorgung benötigt wird, habe ich zur Bequemlichkeit in der Mitte des Roboters zwei AnschlĂŒsse gemacht: einer "verteilt" die Masse (rechts), der andere â 5 V (links).

Motoren und Treiber
ZunĂ€chst zur Motorbefestigung. Die Halterung ist werkseitig, aber mit groĂen Toleranzen gefertigt. Mit anderen Worten, die Motoren können sich um ein paar Millimeter nach links und rechts winden. FĂŒr unsere Anwendung ist das nicht kritisch, aber irgendwo könnte es Einfluss haben (der Roboter könnte vom Kurs abkommen). Vorsichtshalber habe ich die Motoren ganz parallel ausgerichtet und mit Kleber fixiert.

Zur Steuerung der Motoren, wie ich bereits erwĂ€hnt habe, wird der Treiber L298N verwendet. Laut Dokumentation hat er drei Pins fĂŒr jeden Motor: einen zur GeschwindigkeitsĂ€nderung und ein Paar Pins zur Drehungsrichtung. Hier gibt es einen wichtigen Punkt. Es stellt sich heraus, dass die Geschwindigkeitsregelung einfach nicht funktioniert, wenn die Versorgungsspannung 5 V betrĂ€gt! Das bedeutet, entweder dreht sich nichts oder es dreht sich maximal. Das war so eine Eigenheit, wegen der ich ein paar Abende "verloren" habe. SchlieĂlich fand ich irgendwo in einem Forum einen Hinweis darauf.
Generell brauchte ich eine niedrige Drehgeschwindigkeit beim Wenden des Roboters â damit er Zeit hat, den Raum zu scannen. Aber da es mit dieser Idee nicht geklappt hat, musste ich anders vorgehen: kleiner Dreh, Stopp, Dreh, Stopp usw. Wiederum nicht so elegant, aber funktional.
AuĂerdem fĂŒge ich hier hinzu, dass der Roboter nach jeder Verfolgung eine zufĂ€llige Richtung fĂŒr die neue Drehung wĂ€hlt (im oder gegen den Uhrzeigersinn).
Ultraschallsensor

Ein weiteres Bauteil, bei dem ich nach einer Kompromisslösung suchen musste. Der Ultraschallsensor liefert bei realen Hindernissen instabile Werte. Das war eigentlich zu erwarten. Er funktioniert perfekt bei Wettbewerben, wo es glatte, ebenmĂ€Ăige und rechtwinklige FlĂ€chen gibt, aber wenn vor ihm "herumwackeln" die Beine von jemandem â hier braucht man zusĂ€tzliche Verarbeitung.
Als solche Verarbeitung habe ich eingesetzt fĂŒr drei Messungen. Basierend auf Tests mit echten Kindern (wĂ€hrend der Tests hat kein Kind Schaden genommen!) war das vollkommen ausreichend zur Normalisierung der Daten. Die Physik ist hier einfach: Wir haben Signale, die von den benötigten Objekten (die den geforderten Abstand geben) und von weiter entfernten, zum Beispiel WĂ€nden, reflektiert werden. Letztere stellen zufĂ€llige AusreiĂer in den Messungen dar, wie 45, 46, 230, 46, 46, 45, 45, 310, 46⊠Genau diese schneidet der Medianfilter heraus.
Nach der gesamten Verarbeitung erhalten wir den Abstand zum nÀchsten Objekt. Ist er kleiner als ein gewisser Schwellenwert, aktivieren wir das Alarmsystem und fahren direkt zum "Verstörer".
Blinklicht und Sirene
Vielleicht die einfachsten Elemente aus allem, was aufgefĂŒhrt wurde. Sie sind auf den obigen Fotos zu sehen. Ăber die Hardware gibt es hier nicht viel zu sagen, also kommen wir jetzt zu dem Code.
Steuerprogramm
Es macht keinen Sinn, den Code im Detail zu erlÀutern, die, die es brauchen, finden den Link am Ende des Artikels, dort ist alles recht verstÀndlich. Aber es wÀre gut, die allgemeine Struktur zu erklÀren.
Das erste, was ich verstehen musste: Ein Roboter ist ein Echtzeitsystem. Genauer gesagt, ich musste mich daran erinnern, denn ich mache schon immer Elektronik. Somit vergessen wir sofort den Aufruf delay(), den viele gerne in Beispielen verwenden und der das Programm fĂŒr einen bestimmten Zeitraum einfach "einfriert". Stattdessen, wie erfahrene Leute raten, verwenden wir Timer fĂŒr jedes Modul. Ist der erforderliche Zeitraum um, fĂŒhren wir die Aktion aus (Helligkeit der LEDs erhöht, Motor aktiviert usw.).
Die Timer können miteinander verknĂŒpft sein. So arbeitet beispielsweise die Hupe synchron mit dem Blinklicht. Das vereinfacht das Programm etwas.
NatĂŒrlich teilen wir alles in separate Funktionen auf (Blinklicht, Ton, Drehung, VorwĂ€rtsbewegung usw.). Wenn man das nicht macht, kann man spĂ€ter nicht mehr herausfinden, was woher kommt und wohin geht.
Nuancen der PĂ€dagogik
Alles, was oben beschrieben wurde, habe ich in meiner Freizeit abends gemacht. In einem entspannten Tempo habe ich etwa drei Wochen am Roboter gearbeitet. An dieser Stelle könnte ich aufhören, aber ich habe Ihnen auch versprochen, ĂŒber die Arbeit mit dem Kind zu erzĂ€hlen. Was ist in diesem Alter machbar?
Arbeiten nach Anleitung
Jedes Teil haben wir zuerst einzeln getestet â LEDs, Hupe, Motoren, 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, ĂŒberprĂŒfen, dass es funktioniert, und beginnen dann, es fĂŒr unsere Aufgabe anzupassen. Die Verdrahtung nach dem Schema und unter meiner gewissen Kontrolle macht das Kind selbst. Das ist gut. Man muss auch in der Lage sein, genau nach Anleitung zu arbeiten.
Arbeitsablauf ("vom Speziellen zum Allgemeinen")
Das ist ein komplizierter Punkt. Man muss sich daran gewöhnen, 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 ("ein Programm finden", "eine Platine anschlieĂen", "die Firmware hochladen" ...) bestehen. Indem wir mehr oder weniger verstĂ€ndliche Aufgaben auf der unteren Ebene erledigen, "schlieĂen" wir die Aufgaben auf der mittleren Ebene ab, und daraus ergibt sich das Gesamtergebnis. Ich habe es erklĂ€rt, aber ich denke, dass das VerstĂ€ndnis noch nicht bald kommen wird. Vielleicht irgendwo im Teenageralter.
Montage
Bohren, Gewinde, Schrauben, Muttern, Löten und der Geruch von Kolophonium â wo kĂ€me man ohne so etwas hin? Das Kind hat die Grundfertigkeit "Arbeiten mit dem Lötkolben" erlernt â es ist gelungen, einige Verbindungen zu löten (ich habe ein wenig geholfen, das verschweige ich nicht). Vergessen Sie nicht, die Sicherheitstechnik zu erklĂ€ren.
Arbeiten am Computer
Das Programm fĂŒr den Roboter habe ich geschrieben, aber es sind dennoch einige Nebenergebnisse erzielt worden.
Erstens: Englisch. In der Schule haben sie gerade erst begonnen, also haben wir "mĂŒhevoll" geklĂ€rt, was pishalka, migalka, yarkost und andere Transliterationen sind. Wenigstens haben wir das verstanden. Ich habe bewusst keine englischen Wörter verwendet, da wir das Niveau noch nicht erreicht haben.
Zweitens: effektives Arbeiten. Wir haben heiĂe Tastenkombinationen gelernt, um typische VorgĂ€nge schnell auszufĂŒhren. Gelegentlich, wenn wir das Programm schrieben, haben wir die PlĂ€tze gewechselt, und ich habe gesagt, was zu tun ist (Ersetzungen, Suchen usw.). Ich musste immer wieder wiederholen: "Markiere mit Doppelklick", "halte die Umschalttaste gedrĂŒckt", "halte die Strg-Taste gedrĂŒckt" usw. Der Lernprozess geht hier nicht schnell voran, aber ich denke, die FĂ€higkeiten werden allmĂ€hlich ins Unterbewusstsein aufgenommen.
Versteckter TextSie könnten sagen, dass das oben Beschriebene fast offensichtlich ist. Aber ehrlich, diesen Herbst hatte ich die Gelegenheit, Informatik in der 9. Klasse an einer Schule zu unterrichten. Das ist schrecklich. Die SchĂŒler wissen nicht einmal solche grundlegenden Dinge wie Ctrl + Z, Ctrl + C und Ctrl + V, das Markieren von Text mit gedrĂŒckter Umschalttaste oder das Doppelklicken auf ein Wort usw. Und das, obwohl sie im dritten Jahr Informatikunterricht hatten... Machen Sie sich Ihr eigenes Urteil.
Drittens: schnelles Schreiben. Die Kommentare im Code habe ich dem Kind anvertraut (soll es ĂŒben). Wir haben gleich die HĂ€nde richtig positioniert, damit sich die Finger allmĂ€hlich an die Tastenanordnung gewöhnen.
Wie Sie sehen, fĂ€ngt bei uns alles erst ganz auf an. FĂ€higkeiten und Wissen werden wir weiter verfeinern; sie werden im Leben nĂŒtzlich sein.
Ăbrigens, zur PerspektiveâŠ
Weiterentwicklung
Der Roboter ist fertig, fĂ€hrt, blitzt und piepst. Was kommt jetzt? Begeistert von dem Erreichten planen wir, ihn weiterzuentwickeln. Es gibt die Idee, eine Fernbedienung zu realisieren â Ă€hnlich wie bei einem Mondfahrzeug. Es wĂ€re interessant, von einem hypothetischen Controller aus die Bewegung eines Roboters zu steuern, der an einem ganz anderen Ort fĂ€hrt. Aber das wird eine separate Geschichte seinâŠ
Und schlieĂlich die Protagonisten dieses Artikels (Video bei Klick):
Vielen Dank fĂŒr Ihre Aufmerksamkeit!
â
Quelle: habr.com
