Guten Tag.
In diesem Artikel möchte ich den Zusammenbau meines ersten Arduino-Roboters beschreiben. Das Material wird fĂŒr andere Neulinge wie mich nĂŒtzlich sein, die eine Art âselbstfahrenden Wagenâ bauen möchten. Der Artikel beschreibt die Arbeitsschritte mit meinen ErgĂ€nzungen zu verschiedenen Nuancen. Ein Link zum resultierenden Code (höchstwahrscheinlich nicht der idealste) befindet sich am Ende des Artikels.

Soweit möglich habe ich meinen Sohn (8 Jahre alt) involviert. Was genau mit ihm passiert ist und was nicht - dafĂŒr habe ich einen Teil des Artikels hervorgehoben, vielleicht wird sich jemand als nĂŒtzlich erweisen.
Allgemeine Beschreibung des Roboters
ZunÀchst ein paar Worte zum Roboter selbst (
Idee ). Ich wollte am Anfang nicht wirklich etwas Typisches sammeln. Gleichzeitig war der Satz von Komponenten ziemlich Standard - Chassis, Motoren, Ultraschallsensor, Liniensensor, LEDs, Hochtöner. Aus diesem âSuppensetâ wurde zunĂ€chst ein Roboter erfunden, der sein Territorium schĂŒtzt. Er geht zu dem Eindringling, der die Kreislinie ĂŒberquert hat, und kehrt dann in die Mitte zurĂŒck. In dieser Version wurde jedoch eine gezeichnete Linie sowie zusĂ€tzliche Mathematik benötigt, um stĂ€ndig im Kreis zu bleiben.
Daher habe ich nach einiger Ăberlegung die Idee ein wenig geĂ€ndert und beschlossen, einen âJĂ€gerâ -Roboter zu bauen. Zu Beginn dreht er sich um seine Achse und wĂ€hlt ein Ziel (eine Person) in der NĂ€he aus. Wenn ein âOpferâ entdeckt wird, schaltet der âJĂ€gerâ einen Blinker und eine Sirene ein und beginnt darauf zu reiten. Wenn sich eine Person entfernt / weglĂ€uft, wĂ€hlt der Roboter ein neues Ziel aus und verfolgt es usw. Ein solcher Roboter benötigt keinen begrenzten Kreis und kann in einem offenen Bereich arbeiten.
Wie Sie sehen können, Ă€hnelt dies dem Aufholspiel. Obwohl sich der Roboter am Ende nicht als schnell genug herausstellte, interagiert er ehrlich mit den Menschen um ihn herum. Kinder mögen es besonders (manchmal scheint es jedoch, als wĂŒrden sie es mit FĂŒĂen treten, schon springt das Herz ...). Ich denke, dies ist eine gute Lösung, um technisches Design bekannt zu machen.
Roboterstruktur
Also haben wir uns fĂŒr die Idee entschieden, gehen wir zum
Layout ĂŒber . Die Liste der Elemente wird aus dem gebildet, was der Roboter können sollte. Hier ist alles ganz offensichtlich, schauen Sie sich also sofort die Nummerierung an:

"Gehirne" des Roboterbretts arduino uno (1); war in einem Set aus China bestellt. FĂŒr unsere Zwecke ist es völlig ausreichend (wir konzentrieren uns auf die Anzahl der verwendeten Pins). Aus demselben Satz haben wir das fertige Fahrgestell (2) genommen, an dem zwei AntriebsrĂ€der (3) und ein Heck (frei drehend) angebracht sind (4). Ebenfalls im Kit enthalten war ein fertiges Batteriefach (5). An der Vorderseite des Roboters befindet sich ein Ultraschallsensor (HC-SR04) (6), an der RĂŒckseite ein Motortreiber (L298N) (7), in der Mitte ein LED-Blinker (8) und etwas seitlich ein Hochtöner (9).
In der Bauphase schauen wir:
- damit alles passt
- ausgeglichen sein
- rational platziert werden
Teilweise haben unsere chinesischen Kollegen dies bereits fĂŒr uns getan. Das schwere Batteriefach befindet sich also in der Mitte und ungefĂ€hr darunter befinden sich AntriebsrĂ€der. Alle anderen Boards sind leicht und können an der Peripherie platziert werden.
Nuancen:
- Es gibt viele Werkslöcher im Chassis des Sets, aber welche Logik steckt darin - ich habe es immer noch nicht herausgefunden. Die Motoren und der Akku wurden ohne Probleme repariert, dann begann der âSitzâ mit dem Bohren neuer Löcher, um die eine oder andere Platine zu reparieren.
- Die Messinggestelle und andere Befestigungselemente aus den LagerrÀumen waren ziemlich gerettet (manchmal mussten sie raus).
- Ich fĂŒhrte die Reifen von jedem Brett durch die Klammern (wieder fand ich sie in den LagerrĂ€umen). Sehr praktisch, alle DrĂ€hte sind wunderschön und hĂ€ngen nicht rum.
Einzelne Blöcke
Jetzt werde ich durch die
Blöcke gehen und Ihnen persönlich ĂŒber jeden erzĂ€hlen.
BatteriefachEs ist klar, dass der Roboter eine gute Energiequelle haben muss. Die Optionen können unterschiedlich sein, ich habe die Option mit 4 AA-Batterien gewÀhlt. Insgesamt ergeben sie etwa 5 V, und diese Spannung kann direkt an den 5-V-Pin der Arduino-Platine angelegt werden (unter Umgehung des Stabilisators).
NatĂŒrlich war ich etwas vorsichtig, aber diese Lösung ist durchaus praktikabel.
Da ĂŒberall Strom benötigt wird, habe ich der Einfachheit halber zwei AnschlĂŒsse in der Mitte des Roboters hergestellt: einen âverteiltâ den Boden (rechts) und den zweiten - 5 V (links).
Motoren und FahrerZunĂ€chst zur Montage von Motoren. Die Halterung ist werkseitig, jedoch mit groĂen Toleranzen hergestellt. Mit anderen Worten, Motoren können einige Millimeter von links nach rechts âwackelnâ. FĂŒr unsere Aufgabe ist dies nicht kritisch, aber irgendwo kann es beeinflussen (der Roboter beginnt wegzulaufen). FĂŒr alle FĂ€lle habe ich die Motoren streng parallel eingestellt und mit Klebstoff fixiert.

Zur Steuerung der Motoren wird, wie oben beschrieben, der L298N-Treiber verwendet. Laut Dokumentation hat er drei Stifte fĂŒr jeden Motor: einen zum Ăndern der Drehzahl und ein Paar Stifte fĂŒr die Drehrichtung. Es gibt einen wichtigen Punkt. Es stellt sich heraus, dass bei einer Versorgungsspannung von 5 V die Drehzahlregelung einfach nicht funktioniert! Das heiĂt, entweder dreht sich ĂŒberhaupt nicht oder dreht sich maximal. Hier ist eine solche Funktion, wegen der ich ein paar Abende "getötet" habe. Am Ende fand ich irgendwo in einem der Foren eine ErwĂ€hnung.
Im Allgemeinen brauchte ich beim Drehen des Roboters eine niedrige Drehzahl, damit er einen gewissen Spielraum zum Scannen des Raums hatte. Aber da nichts von einer solchen Idee kam, musste ich es anders machen: eine kleine Kurve - Stopp - Kurve - Stopp usw. Auch hier ist es nicht so elegant, aber effizient.
Ich möchte hier auch hinzufĂŒgen, dass der Roboter nach jeder Verfolgung eine zufĂ€llige Richtung einer neuen Kurve auswĂ€hlt (im oder gegen den Uhrzeigersinn).
Ultraschallsensor
Ein weiteres StĂŒck Eisen, bei dem ich nach einer Kompromisslösung suchen musste. Ein Ultraschallsensor an realen Hindernissen liefert instabile Zahlen. Eigentlich wurde es erwartet. Idealerweise funktioniert es irgendwo bei Wettbewerben, bei denen glatte, ebene und senkrechte OberflĂ€chen vorhanden sind. Wenn jedoch die Beine eines anderen vor ihm âflackernâ, mĂŒssen Sie eine zusĂ€tzliche Verarbeitung einfĂŒhren.
Als solche Verarbeitung habe ich den
Medianfilter auf drei Stichproben eingestellt. Basierend auf Tests an echten Kindern (bei den Tests wurde kein einziges Kind verletzt!) Hat sich herausgestellt, dass dies völlig ausreicht, um die Daten zu normalisieren. Die Physik hier ist einfach: Wir haben Signale, die von den
notwendigen Objekten (unter Angabe der erforderlichen Entfernung) reflektiert und von weiter entfernten WĂ€nden reflektiert werden. Die zweiten sind zufĂ€llige AusbrĂŒche bei Messungen der Form 45, 46,
230 , 46, 46, 45, 45,
310 , 46 ... Es ist ihr Medianfilter, der abschneidet.
Nach der gesamten Verarbeitung erhalten wir die Entfernung zum nĂ€chsten Objekt. Wenn es unter einem bestimmten Schwellenwert liegt, schalten wir den Alarm ein und gehen direkt zum âEindringlingâ.
Blinker und SireneVielleicht die einfachsten Elemente von allen oben genannten. Sie sind auf den Fotos oben zu sehen. Hier gibt es nichts ĂŒber Eisen zu schreiben, also gehen wir jetzt zum
Code ĂŒber .
Management-Programm
Ich sehe keinen Sinn darin, den Code im Detail aufzuschreiben, wer ihn braucht - der Link befindet sich am Ende des Artikels, dort ist alles gut lesbar. Aber die allgemeine Struktur wÀre schön zu erklÀren.
Das erste, was ich verstehen musste: Der Roboter ist ein EchtzeitgerÀt. Genauer gesagt, denken Sie daran, denn vorher und jetzt mache ich immer noch Elektronik. Dies bedeutet, dass wir den Aufruf von
delay () sofort vergessen, den wir gerne in Beispielskizzen verwenden und der das Programm einfach fĂŒr einen bestimmten Zeitraum âeinfriertâ. Stattdessen fĂŒhren wir, wie erfahrene Leute raten, Timer fĂŒr jeden Block ein. Das erforderliche Intervall ist abgelaufen - sie haben die Aktion ausgefĂŒhrt (die Helligkeit der LED erhöht, den Motor eingeschaltet usw.).
Timer können miteinander verbunden sein. So arbeitet beispielsweise der Hochtöner synchron mit einem Blinker. Dies macht das Programm etwas einfacher.
NatĂŒrlich teilen wir alles in separate Funktionen (Blinker, Sound, Rotation, VorwĂ€rtsbewegung usw.). Wenn Sie dies nicht tun, werden Sie nicht verstehen, was von wo kommt.
Die Nuancen der PĂ€dagogik
Alles, was oben beschrieben wurde, habe ich abends in meiner Freizeit gemacht. Im gemÀchlichen Modus verbrachte ich ungefÀhr drei Wochen mit dem Roboter. Dies hÀtte enden können, aber ich habe auch versprochen, Ihnen von der Arbeit mit einem Kind zu erzÀhlen. Was ist in diesem Alter machbar?
Arbeiten Sie an AnweisungenWir haben zunĂ€chst jedes Teil einzeln ĂŒberprĂŒft - LEDs, Hochtöner, Motoren, Sensoren usw. Es gibt eine Vielzahl vorgefertigter Beispiele - einige direkt in der Entwicklungsumgebung, andere im Internet. Das ist zweifellos erfreulich. Wir nehmen den Code, verbinden das Teil, stellen sicher, dass es funktioniert, dann beginnen wir bereits, uns fĂŒr unsere Aufgabe zu Ă€ndern. Verbindungen nach dem Schema und unter meiner Kontrolle stellt das Kind selbst her. Das ist gut. Sie mĂŒssen in der Lage sein, klar gemÀà den Anweisungen zu arbeiten.
Die Reihenfolge der Arbeit ("von privat zu allgemein")Dies ist ein schwieriger Punkt. Es muss gelehrt werden, dass ein groĂes Projekt (âRoboter bauenâ) aus kleinen Aufgaben besteht (âSensor anschlieĂenâ, âMotoren anschlieĂenâ ...) und diese wiederum aus noch kleineren Schritten bestehen (âProgramm findenâ, â Board anschlieĂen â,â Firmware herunterladen â...). Wenn wir mehr oder weniger verstĂ€ndliche Aufgaben der unteren Ebene ausfĂŒhren, "schlieĂen" wir die Aufgaben der mittleren Ebene, und das allgemeine Ergebnis besteht bereits aus ihnen. Er erklĂ€rte, aber ich denke, das Bewusstsein wird nicht bald kommen. Irgendwo, wahrscheinlich bis zur PubertĂ€t.
InstallationBohren, Gewinde, Schrauben, Muttern, Löten und der Geruch von Kolophonium - wo ohne. Das Kind erhielt die Grundfertigkeit "Arbeiten mit einem Lötkolben" - ich habe es geschafft, mehrere Verbindungen zu löten (ich habe ein wenig geholfen, ich werde mich nicht verstecken). Vergessen Sie nicht die SicherheitserklÀrung.
ComputerarbeitIch habe ein Programm fĂŒr den Roboter geschrieben, aber es ist mir gelungen, die damit verbundenen Ergebnisse zu erzielen.
Erstens: Englisch. Es wurde gerade in der Schule angefangen, also haben wir "gequietscht", was Pishalka, Migalka, Yarkost und andere Ăbersetzungen sind. Zumindest das haben wir verstanden. Ich habe meine englischen Muttersprachler absichtlich nicht verwendet, da wir dieses Niveau noch nicht erreicht haben.
Zweitens: effektive Arbeit. Sie lehrten Tastenkombinationen, wie man typische Operationen schnell ausfĂŒhrt. Als sie das Programm schrieben, wechselten wir regelmĂ€Ăig die PlĂ€tze mit meinem Sohn, und ich sagte, was zu tun ist (Ersetzen, Suchen usw.). Ich musste immer wieder wiederholen: "Doppelklick", "Umschalttaste gedrĂŒckt halten", "Strg gedrĂŒckt halten" und so weiter. Der Lernprozess hier ist nicht schnell, aber ich denke, die FĂ€higkeiten werden nach und nach beiseite gelegt.
Versteckter TextMan kann sagen, dass das oben Genannte fast offensichtlich ist. Aber ehrlich gesagt hatte ich diesen Herbst die Gelegenheit, Informatik in der 9. Klasse an derselben Schule zu betreiben. Das ist schrecklich. Die SchĂŒler kennen keine grundlegenden Dinge wie Strg + Z, Strg + C und Strg + V, Textauswahl mit gedrĂŒckter Umschalttaste oder Doppelklick auf ein Wort und mehr. Dies trotz der Tatsache, dass sie in ihrem dritten Studienjahr in Informatik waren ... Ziehen Sie selbst eine Schlussfolgerung.
Drittens: Tippen berĂŒhren. Ich vertraute die Kommentare im Code dem tippenden Kind an (lassen Sie es ĂŒben). Legen Sie sofort die rechten HĂ€nde so, dass sich die Finger allmĂ€hlich an die Position der Tasten erinnern.
Wie Sie sehen, fangen wir gerade erst an. Wir werden unsere FĂ€higkeiten und Kenntnisse weiter verbessern und uns im Leben als nĂŒtzlich erweisen.
Ăbrigens ĂŒber die Aussicht ...
Weiterentwicklung
Der Roboter ist gemacht, fÀhrt, blinkt und quietscht. Was jetzt? Inspiriert von dem Erreichten planen wir, es weiter zu verfeinern. Es gibt eine Idee, eine Fernbedienung herzustellen - wie einen Mondrover. Es wÀre interessant, an einer bedingten Konsole zu sitzen und die Bewegung des Roboters zu steuern, der sich an einem völlig anderen Ort bewegt. Aber das wird eine andere Geschichte sein ...
Und am Ende tatsÀchlich die Helden dieses Artikels (Video per Klick):

Vielen Dank fĂŒr Ihre Aufmerksamkeit!
â
Link zum Code