Wie man den Lunokhod selbst macht

Wenn Sie in Ihrer Kindheit kein Fahrrad hatten und jetzt einen Bentley,
Trotzdem hatten Sie in Ihrer Kindheit kein Fahrrad.

Es ist einfach so passiert, dass es in meiner Kindheit keinen Lunokhod gab . Und dann wurde ein Baby geboren. Im Allgemeinen dachte ich und beschloss, ein Spielzeug für uns beide zu machen.


Ich wollte keine exakte Kopie erstellen und weiß nicht, wie ich Fälle zu Hause drucken soll. Daher habe ich mich darauf beschränkt, ähnliche Funktionen neu zu erstellen. Außerdem schien es mir unmenschlich, aus dem Gedächtnis in das „Bewegungsprogramm“ einzutreten und nicht zu verstehen, was genau passiert ist, also fügte ich eine Anzeige hinzu.

Version 1




Zur Hand war ein preiswertes Chassis mit Ebay und Arduino Uno.



Um die Motoren zu steuern, nahm ich das PWM-Servoschild und löte den L293D + PCF8574 auf das Steckbrett:



Zum Lesen von der Tastatur nahm ich PCF8574 und eine Handvoll Dioden:



Die Tastatur selbst wurde aus einer Leiterplatte hergestellt:



Damit die Tastatur in meinen Händen nicht auseinander fällt, habe ich das Overlay oben befestigt. Sie musste beim "Fräsen" bestellen :)



Zur Anzeige des Programms wird eine herkömmliche 4-stellige Anzeige 20 verwendet. Ja, auch über PCF8574;)

Zuerst habe ich 4 Batterien für die Stromversorgung verwendet, aber sie gingen zu schnell aus und ich habe sie durch ein Paar 18650-Batterien ersetzt:



Ich habe zum Laden TP4056-Module verwendet, die ich über ein Relais an die Batterien angeschlossen habe, wenn auch nicht sehr erfolgreich.

Der schnellste Weg war, Firmware zu schreiben. Leider stellte sich heraus, dass die I2C-LCD-Bibliothek eine GPL-Lizenz besitzt und der Code in den Papierkorb verschoben wurde. Etwa zur gleichen Zeit wurde mir klar, dass das Arduino Uno nicht die beste Option ist und dass eine Handvoll PCF8574 für das Löten sehr unpraktisch ist.

Und ich beschloss, von vorne zu beginnen.

Version 2




Ich habe frühere Erfahrungen berücksichtigt, die darauf hindeuteten, dass es mehrere Probleme gibt:

  • Das Chassis mit Ebay besteht aus Plexiglas und ist sehr (!) Zerbrechlich (ich habe die Getriebemontageschraube gezogen und die Halterung ist gerade gebrochen).
  • Es gibt viele Befestigungslöcher im Gehäuse, aber keine geeignete.
  • Zusammen mit dem Chassis sind Gänge 1:48, aber sie sind zu schnell.
  • Im Allgemeinen reicht das Chassis nicht aus.
  • Arduino Uno hat wenige Beine.
  • Es gibt kein Soundmodul (und es wird für den Feuerbefehl benötigt).
  • Im Internet werden Horrorgeschichten über Li-ion geschrieben. Ich möchte einem Kind kein potenziell gefährliches Gerät geben.

Als Ergebnis kaufte ich:


Außerdem:


Achtung! Achtung! Achtung! Diese Links dienen lediglich der Veranschaulichung und Vereinfachung der weiteren Suche nach Details. Ich kann nicht garantieren, dass der Verkäufer das Los plötzlich nicht mehr in ein anderes ändert, den Preis, die Menge usw. nicht ändert.

Eisen


Ich habe die Tastatur auf die Leiterplatte übertragen (vielleicht ist dies das einzige schwer zu wiederholende Element). Das Tastatur-Overlay wurde auf meine Bestellung gefräst.

Die Frage blieb: Woraus soll das Chassis bestehen? Es gab keinen geeigneten Kunststoff, es ist schwierig, Metall zu verarbeiten ... Und wenn Sie Sperrholz nehmen? „Aber das ist nicht ästhetisch ansprechend!“, Dachte ich. Aber als ich nach einer halben Stunde ein normales Chassis bekam, änderte ich meine Meinung. Das Chassis war nicht sehr präsentabel und ging in den Korb, aber ich mochte die Verarbeitungsgeschwindigkeit so sehr, dass ich mich entschied, weiterhin Sperrholz zu verwenden.

Zwar habe ich erst mit dem Sägen des zweiten Blattes begonnen, nachdem ich einen groben Plan gezeichnet hatte:



Um die Motoren zu montieren, habe ich ein Stück Aluminiumecke geschnitten und gebohrt:



Bretter auf sechseckigen Gestellen befestigt und durch Schlaufen miteinander verbunden.


(hier sehen Sie einen 5V Stabilisator und einige Stromkontakte).

Die Stromkabel erwiesen sich als etwas viel, also habe ich aus dem Stripboard eine Stromversorgungsplatine gemacht (Details hier ). Ich vermute, dass Sie ein normales Sensorschild nehmen können, das viele Stromanschlüsse hat.



Da es keine E / A-Erweiterungen mehr gab, musste die Tastatur erneuert werden ( Quelle ). Ich habe Dioden und Pull-up-Widerstände darauf übertragen:





Als Geschwindigkeitssensor habe ich einen geschlitzten Optokoppler und ein Zahnrad verwendet (mit einem dauerhaften Marker versehen):



Als drittes Rad habe ich einen Ball benutzt:



Am Träger befand sich zunächst eine Stütze in Form eines Rades, die mit dem Fahrgestell geliefert wurde. Als sich jedoch die Bewegungsrichtung änderte, begann sich das Rad im unerwartetsten Moment zu drehen und warf den Wagen zur Seite.

Schaltplan


Schauen Sie sich am besten die Dateien consts.h und lcd.ino an, sie enthalten die relevantesten Informationen. Die Verbindungen sehen so aus, wie sie jetzt sind:

Das Bild ist anklickbar.

Firmware


Firmware ist im Wesentlichen ein gewöhnliches Programm, das in der Arduino IDE geschrieben ist. Es gibt zwei Betriebsarten: Bearbeitung und Ausführung. Während der Bearbeitung wird der Befehl + Anzahl der Wiederholungen von der Tastatur akzeptiert. All dies wird in einen 16-Bit-Wert gepackt und einem Array im RAM hinzugefügt. Wenn ein Programm ausgeführt wird, werden Werte aus dem Array entfernt und ausgeführt. Das Ausführen eines Schritts (in einer sehr vereinfachten Form) sieht folgendermaßen aus:

  ( )      ( >=  ),                    = *    
( ) ( >= ), = *

Die zurückgelegte Strecke wird durch die Anzahl der Impulse vom Optokoppler bestimmt, die durch Unterbrechen des Timers überprüft werden.

Die einzige Ausnahme ist das Abspielen von Ton. Wenn der Befehl "shot" auftritt, wird die einfachste for Schleife gestartet, die die Werte aus der WAV-Datei (die im selben Flash-Speicher wie das Programm geflasht wird) abruft und an den R-2R-DAC ausgibt. Wenn die Werte enden, kehrt es zum normalen Programmausführungsprozess zurück.

Leider unterscheidet sich die reale Welt geringfügig von dem Softwaremodell, für das die Firmware entwickelt wurde. Daher habe ich eine Reihe von Verzögerungen hinzugefügt, die es ermöglichen, die Trägheit des Gehäuses zu berücksichtigen.

Ich habe absichtlich die MIT-Lizenz gesetzt. Nach meinem Verständnis kann Firmware mit einer solchen Lizenz frei verwendet werden, ohne dass weitere Änderungen veröffentlicht werden müssen (ich möchte niemanden zwingen, etwas zu tun).

Bedienungsanleitung;)


Die Tastatur unterscheidet sich geringfügig vom "klassischen" Lunokhod:



  • Auf der linken Seite befindet sich ein Befehlsblock (grün - wohin gehen, rot - Pause, unten - raus, feuern, wiederholen).
  • In der Mitte stehen Zahlen mit der Anzahl der Wiederholungen.
  • Rechts befinden sich 8 Steuertasten (schwarz - letzten Befehl löschen, rot - alles löschen, grün - starten, gelb - letzten Befehl starten, blau - testen, grau - ersparen).

Nochmals mit einem Schild:
Auf dem BildÜbersetzungBedeutung
FwdVorwärts fahren
BwdFahren Sie zurück
LinksBiegen Sie links ab
RichtigRechts abbiegen
PauseEinfrieren
RausNicht implementiert, für die Zukunft übrigHabe wie im Lunokhod
FeuerFeuerErzeugt den Sound von "pih!"
SchleifeZyklusWiederholen Sie mehrere vorherige Befehle einmal
0-9Anzahl der SchritteMaximal 20
BspLetzten Befehl löschen
DelLöschen Sie das gesamte ProgrammGo Bestätigung erforderlich!
T1, T2TestFühren Sie das Testprogramm aus
Überprüfen SieMach den letzten Schritt
Geh!Führen Sie alle Schritte aus

Das Programm wird durch abwechselndes Drücken von "Team" und "Nummer" aufgerufen. Dann drücken wir das grüne "Starten" und sehen uns das Ergebnis an. Das Löschen erfolgt durch Drücken der roten Taste, jedoch nicht sofort: Sie müssen Ihre Entscheidung durch Drücken der grünen Taste "Start" bestätigen. Beim Ausschalten wird das Programm gelöscht.

Der Befehl Wiederholen enthält einen Parameter: Wie viele Schritte müssen [einmal] wiederholt werden? Beispiel: Fwd1, Pause1, Bwd1, Loop3; Infolgedessen werden die Befehle Fwd1, Pause1, Bwd1 zweimal ausgeführt. Das erste Mal, weil sie im Programm sind, das zweite Mal - weil es im Cycle-Befehl so angegeben ist.

Nur für den Fall, dass die Batterieladung überwacht wird. Wenn es zu klein ist, wird eine Warnung angezeigt und das Spielzeug fährt nicht.

GUI


Es ist schwierig, das gesamte Programm im Auge zu behalten, deshalb habe ich einen einfachen Indikator vermasselt, der die Eingabeinformationen dupliziert.

Nach dem Start wird eine Eingabeaufforderung angezeigt:



Wenn Sie einen Befehl eingeben, werden das Befehlssymbol und die Anzahl der Wiederholungen in der oberen linken Ecke angezeigt:



Wenn mehr als ein Befehl eingegeben wird, lautet die folgende Liste (tatsächlich das Programm), und der von Ihnen eingegebene Befehl wird weiterhin oben angezeigt:



Warum ist das so passiert?


Das Spielzeug wurde aus dem hergestellt, was zur Hand war oder leicht zu bekommen war. Ich möchte auch über Arduino sagen. Es wird aus mehreren Gründen ausgewählt:

  • Sie hat eine angemessene Anzahl von Schlussfolgerungen, und sie brauchen viel (43):
    • 6 zur Steuerung von Motoren;
    • 8 + 4 für die Tastatur;
    • 11 für LCD;
    • 3 für DAC;
    • 8 für Ultraschallsensoren;
    • 2 für Geschwindigkeitssensoren;
    • 1 zur Messung der Batteriespannung.
  • Ich bin mit dieser Plattform vertraut.
  • Es wird mit einem Klick genäht.
  • Der Mikrocontroller benötigt keine gigantischen Geschwindigkeiten oder Speichervolumen.
  • Und besondere Effizienz ist auch nicht erforderlich, weil 90% des Stroms wird von Motoren verbraucht.

Was kann verbessert werden


Chassis Mit einem scharfen Start werden die Räder „poliert“ und das Spielzeug verirrt sich. Sie können versuchen, ein sechsrädriges Chassis oder sogar ein Crawler-Chassis herzustellen (es gibt es bei Aliexpress, aber ich habe es noch nicht ausprobiert).

GUI Jetzt zeigt der Indikator nur die minimale Menge an Informationen an, und dies geschieht auf einfachste Weise.

Code Ich werde definitiv keinen Pulitzer bekommen.

Der Ton . Es gibt billige und sehr kleine MP3-Player. Sie können den R-2R DAC sicher werfen und durch einen vorgefertigten Player ersetzen.

Backup-Schaltflächen . Sie können das fertige Programm im EEPROM aufzeichnen, damit es beim Ausschalten nicht verloren geht. Die Implementierung kann wie im Radio sein: Mit einem langen Druck wird das Programm gespeichert, mit einem kurzen Drucklauf.

Out-Taste . Derzeit nicht implementiert. Sie können so etwas wie ein Relais / Servo an einen der Arduino-Pins schrauben.

Danksagung


  • Das Kind, das mich die ganze Zeit motiviert hat.
  • Meine Frau, die geduldig wartete, während ich genug spielte, und bei Corel Draw half!
  • Sergey Dudnikov, der eine Tastaturüberlagerung zeichnete.
  • Andrei Shishkov, der genau diesen Fleck gefräst hat.
  • Anton, der mich zu einem großartigen MP3 mit dem Sound von "wow!" Gemacht hat.
  • hudbrog , für die Idee, einen PID-Regler zu implementieren!
  • Chatik Heimwerker, die mich mental unterstützten und gezwungen waren, sich die Zwischenergebnisse der Arbeit anzuschauen;)

Schlechte Duplikate


Ich mag Filme mit Jackie Chan, weil es am Ende einige erfolglose Einstellungen gibt. Ich könnte auch nicht ohne sie auskommen. Was mich am meisten überraschte war die Tatsache, dass ein Rundbohrer mit zwei Rillen ein dreieckiges Loch ergibt;)








Source: https://habr.com/ru/post/de423409/


All Articles