Arduino Projekt "RoboCar4W Robot Machine"

Sie verstehen ", erklärte der Herausgeber," es sollte unterhaltsam, frisch und voller interessanter Abenteuer sein ... damit der Leser nicht abspringen kann.
I. Ilf, E. Petrov "Wie wurde Robinson geschaffen" .


Der Einstieg in Arduino ist wie bei jeder anderen Software- oder Hardwareplattform von einem echten Projekt aus immer interessanter. Gleichzeitig schreiben Programmierer Code, der "Hallo Welt" anzeigt, Arduinisten blinken eine LED. Und alle sind als Kinder glücklich.


Ich beschloss, mit einem fortgeschrittenen Projekt zu beginnen, auch mit der geheimen Hoffnung, die junge Generation aus Counter-Strike herauszureißen (gescheitert).


Wie Sie dem Namen RoboCar4W entnehmen können, war das erste Projekt ein Allrad-Roboterauto. Als ich mit der Arbeit anfing, hatte ich bereits Programmiererfahrung, ich wusste einmal lange, wie man lötet, aber ich kannte die Pinbelegung von Arduino überhaupt nicht und las die Dokumentation überhaupt nicht. Ich habe im Laufe des Spiels alle Weisheiten studiert und Google geholfen.


Da das Projekt selbst grundsätzlich nicht neu ist, reichen solche Beschreibungen im Netzwerk aus, alle Komponenten sind bekannt, es wurden keine Überraschungen erwartet. Daher wurde die Idee allgemein formuliert und das Hauptziel bestand darin, mit Arduino als Plattform für Rapid Prototyping in die "Welt der Dinge" einzutauchen. In diesem Werk erkennt sich vielleicht jemand am Anfang der Reise.


Die gesamte Hardware wurde bei ebay gekauft, und aus eigener Erfahrung möchte ich sagen, dass es einfacher ist, ein Starter-Kit sofort zu kaufen (suchen Sie es in den Worten des Arduino Starter-Kits), als es im Detail zusammenzubauen. Ja, und alle kommen auf einmal zusammen. Es wurde beschlossen, nicht zu spielen, ein normales Chassis, normale Räder, normale Motoren zu kaufen, so dass es "teuer" war.


Das Hauptgeheimnis für erfolgreiche Einkäufe bei eBay besteht darin, bei erstklassigen Verkäufern einzukaufen und die Produktbeschreibung sorgfältig zu lesen. Es gibt viele Artikel darüber im Internet.


Welches Arduino Board soll man wählen?


Ich habe Arduino UNO genommen, viele Projekte mit Beschreibungen dafür. Aber jetzt würde ich das Arduino Mega 2560 nehmen, es hat mehr digitale und analoge Ausgänge und volle Kompatibilität bei Projekten mit UNO.


Allgemeine Beschreibung des Projekts


In der Welt der Softwareentwicklung wird dies auch als "Systemanforderungen" bezeichnet.


Die Idee des Projekts war wie folgt. Die erste Version der Robotermaschine namens RoboCar4W sollte einfache Aktionen ausführen:


  • vorwärts, rückwärts bewegen, Kurven ausführen
  • Abstand zu Hindernissen messen
  • in der Lage sein, die Hindernisse vor Ihnen automatisch zu umgehen.

Die zweite Version des Geräts muss manuell über Bluetooth von einem Android-Telefon aus gesteuert werden.


Damit Sie hier besser arbeiten können, wird das gesamte endgültige RoboCar4W-Projekt zusammengestellt (hier ohne Bluetooth).


Arduino RoboCar4W


Hier ist ein Video von Seeversuchen.


Im ersten Video fährt RoboCar4W automatisch mit Hindernisvermeidung auf zwei verschiedenen Versionen der "Firmware", d. H. Skizzieren Sie daher, wenn jemand am meisten interessiert ist und bemerkt, dass das Verhalten des Roboters in verschiedenen Episoden leicht unterschiedlich ist.


Roboterauto RoboCar4W


Im zweiten Video bewegt sich RoboCar4W mithilfe von Befehlen, die der „Fahrer“ über Bluetooth von einem Mobiltelefon unter Android überträgt. Auf dem Telefon ist „Bluetooth RC Car“ installiert. Wenn sich darüber hinaus ein Hindernis in der Nähe befindet, stoppt der Roboter, d.h. Das Rammen von etwas funktioniert nicht (es gibt jedoch eine "geheime" Schaltfläche, die den abgesicherten Modus deaktiviert).


Roboterauto RoboCar4W


Im dritten Video zeigt RoboCar4W ein vorprogrammiertes Demobewegungsprogramm mit Kurven. Das Demo-Programm wird auf Befehl von demselben Android-Handy aus aktiviert. Der Roboter fährt nur eine Weile und macht Kurven.


Roboterauto RoboCar4W


Bewegungssteuerungsalgorithmus


Es ist ein Fehler, unsere Methode als "Hindernisvermeidungsalgorithmus" oder "Pfadfindung" zu bezeichnen. Dies sind getrennte mathematische Disziplinen, reine Mathematik. Wenn Sie Mathematik wirklich, wirklich mögen, dann googeln Sie diese Sätze, Sie werden für sechs Monate mit Lesen versorgt.


In der Zwischenzeit interessieren wir uns für Dinge, die viel einfacher sind. Deshalb nennen wir es einfach - den Bewegungssteuerungsalgorithmus eines 4-Rad-Roboters. Natürlich sprechen wir von automatischer Steuerung ohne menschliches Eingreifen.


Hier ist dieser einfache Algorithmus in Worten geschrieben. Für komplexere Algorithmen ist es erforderlich (ob Sie es wollen oder nicht), Blockdiagramme zu erstellen.


Schauen Sie sich jetzt gleichzeitig den Quellcode für die Skizze RoboCar4W-1.ino an .


  1. Wir messen den Abstand zum Hindernis vor uns.
  2. Wenn dieser gemessene Abstand kleiner als der DST_TRH_BACK Wert ist (kurz für den Entfernungsschwellenwert), halten wir an und fahren beim Abbiegen rückwärts. Die Drehrichtung wird wie folgt gewählt: Wenn Sie zuvor nach links gedreht haben, biegen Sie nach rechts ab und umgekehrt.
  3. Wenn der gemessene Abstand größer als DST_TRH_BACK , aber kleiner als DST_TRH_TURN , drehen Sie ihn einfach. Die Drehrichtung wird zufällig gewählt.
  4. Wenn Sie weit vom Hindernis entfernt sind, fahren Sie einfach fort.
  5. Wir wiederholen noch einmal.

Was ist gut daran, dass wir 4 Räder und Allradantrieb haben? Wir können verschiedene Arten von Runden ausführen (programmieren):


  • Reibungslose Rotation. Alle Räder drehen sich, aber die Räder auf einer Seite drehen sich schneller.
  • Eine scharfe Kurve. Die Räder drehen sich nur einseitig.
  • Wenden Sie an Ort und Stelle. Wie bei einem Traktor drehen sich die Räder auf einer Seite rückwärts und auf der anderen vorwärts.

In der zweiten Version des Programms kann bei der Steuerung von einem Android-Telefon aus der abgesicherte Modus deaktiviert werden, wenn der Roboter versucht, Frontalkollisionen zu verhindern, wenn das Programm zweimal gedrückt wird
Knopf


und durch einmaliges Drücken wieder eingeschaltet.


Wichtiger Hinweis . Alle Logik steht unter der Kontrolle von Arduino. Android verhält sich hier wie eine Spielekonsole (ohne Verstand) von der Konsole aus. Seine Aufgabe besteht darin, dumm Tastendrücke (d. H. Befehle) über Bluetooth an den Arduino RoboCar4W zu übertragen.


Komponenten


Zu Beginn enthielt die Maschine einen Servoantrieb, der den Ultraschall-Entfernungsmesser für Messungen in drei Richtungen um einen bestimmten Winkel drehte. Während der Tests brannte das Servo aufgrund unachtsamer Handhabung aus, sodass der Abstandssensor jetzt einfach starr vor dem Gehäuse befestigt ist.


Es gibt keinen Silberstreifen, aber die Skizze ist etwas einfacher geworden.


Kaufen Sie für die Zukunft das einfachste und billigste Servo, spezielle Leistung, Geschwindigkeit und Drehgenauigkeit in einem bestimmten Winkel sind nicht erforderlich, und es ist recht einfach, ein Servo zu deaktivieren, wie sich herausstellte. SG90 im Wert von 2 US-Dollar passt gut.


Daher werden die Komponenten des RoboCar4W-Projekts in englischer Sprache beschrieben, um die Suche bei ebay und dergleichen zu erleichtern:


  • Arduino UNO R3
  • Fertiges Chassis Allrad-Mobilroboterplattform Smart Car Chassis Arduino-kompatibel
  • Gleichstrommotoren mit Drehung in beide Richtungen - 4 Stk.
  • Räder - 4 Stk.
  • Platine zur Steuerung von 4 Gleichstrommotoren Motor Drive Shield L293D
  • Ultraschall-Entfernungsmesser HC-SR04 Ultraschallmodul-Entfernungsmesssensor
  • Ni-MH 1,2 V Batterien - 8 Stk.
  • Kunststoffboxhalter für Batterien, Batterieboxhalter 4 AA Batterien - 2 Stck.
  • Batterietyp "Krona" 8,4 V - 1 Stck.
  • Optionaler Kippschalter - Netzschalter

Fahrgestell, Gleichstrommotoren und Räder wurden sofort im Kit und sogar mit Montageanleitung gekauft.


Pinbelegung


Die analogen Eingänge können als digitale Pins von E / A-Ports verwendet werden. Die den analogen Eingängen entsprechenden Arduino-Pins sind mit 14 bis 19 nummeriert. Dies gilt nur für die Arduino-Pins, nicht für die physischen Pin-Nummern des Atmega-Mikrocontrollers.


Sie müssen nicht zeichnen, Sie können einfach alles in einen Tisch legen. Ich habe es so gemacht.


Pinbelegung


Die Pins D4, D7, D8, D12 sind belegt, wenn Gleichstrommotoren oder Schrittmotoren verwendet werden.


Die Pins D9 (Servo # 1-Steuerung), D10 (Servo # 2-Steuerung) werden nur verwendet, wenn Servomotoren verwendet werden.


Der Arduino-Pin belegt nicht die Arduino-Pins zur Steuerung des Motor Drive Shield L293D.


Die Stromanschlüsse 3,3 V, 5 V und Masse sind in ausreichenden Mengen auf dem Motorantriebsschild dupliziert. Daher besteht kein Grund zur Sorge über ihren Mangel.


Wenn Sie immer noch schön zeichnen möchten, hilft Ihnen das kostenlose Fritzing-Programm.


Ernährung


Dies ist der zweite sehr wichtige Punkt. Viel hängt von der Ernährung ab. Beispielsweise verbraucht ein Servomotor beim Drehen der Welle in einem bestimmten Winkel viel Strom. Wenn das Servo von einem 5-V-Arduino gespeist wird, kommt es gleichzeitig zu einem "Spannungsabfall", und der Rest der Schaltung beginnt zu versagen, und der Arduino kann sogar gleichzeitig neu starten.


In jedem Fall wird ein Motor Drive Shield (oder eine ähnliche Schaltung) benötigt, wenn Sie Motoren im Fahrzeug verwenden.


Wir haben also 4 Gleichstrommotoren, einen Servoantrieb, das Arduino-Board selbst und mehrere Sensoren. Die Motoren sind am gefräßigsten, aber die Sensoren können erfolgreich über die Anschlüsse der Arduino-Platine selbst mit Strom versorgt werden, sodass mit ihnen alles einfach ist. Der Einfachheit halber habe ich die gesamte Wirtschaft in einem Tisch reduziert.


Empfohlene oder typische Spannung. StromaufnahmeMaximale SpannungWas soll gefüttert werden?Anmerkungen
Arduino UNO R3 Board7 - 12 V, 200 mA (Durchschnitt)6 - 20"Krone 9V" Li-Ion 650mAh, 8,4VMittelanschluss
Servomotor MG-9955-6 V, 0,1 - 0,3 A (Peak)4.8 - 7.2Batterien (5) Stck. Ni-Mh 1,2 V = 6 V.Essen nur aus einer separaten Quelle. Wenn Sie mit Arduino zusammenarbeiten, wird alles fehlschlagen. 4 Stück Ni-Mh Batteriespannungen * 1,2 V = 4,8 V reichen nicht aus. Einige argumentieren, dass dieses Servo nicht nur bei 6 Volt 4,8 verwendet werden sollte
Gleichstrommotoren (4 Stk.)6 - 8 V, Strom von 70 mA bis 250 mA3 - 12Batterien (5 + 3) Stck. Ni-Mh 1,2 V = 9,6 V.Sie können Motoren normalerweise nicht mit einer 9-V-Batterie starten, verschwenden Sie also nicht einmal Zeit (und Batterien)!
Motorantriebsabschirmung L293Dnicht erforderlich4,5 - 36nicht erforderlich
Bluetooth-Modul HC-05063,3 V, 50 mA1,8-3,6Mit Pin 3.3V Arduino Board
Ultraschall-Entfernungsmesser HC-SR045 V, 2 mA5Mit Pin 5V Arduino Board

Ich hatte keinen DC / DC-Spannungswandler. Krona 9V war keine sehr gute Energiequelle, ich hatte sie einfach schon.


Ich habe mich jedoch geweigert, Li-Ionen-Hochleistungsbatterien zu verwenden. Erstens ist es aufgrund der hohen Kosten und zweitens beim chinesischen Online-Shopping leicht, auf eine Fälschung zu stoßen. Genauer gesagt, nicht "einfach", sondern "immer". Darüber hinaus erfordert Li-Ion eine spezielle Handhabung und ist nicht sicher.


Wie wir aus der Tabelle sehen, benötigen wir drei unabhängige Stromquellen:


  • Für Arduino Board und Sensoren.
  • Für Servomotor.
  • Für 4 Gleichstrommotoren.

Wo kann ich so viel bekommen? In jedem Fall muss das Arduino-Board selbst von einer separaten Quelle mit Strom versorgt werden Wenn die Spannung beispielsweise beim Einschalten der Motoren „durchhängt“, kann die Platine neu starten oder einfach ausfallen. Hier verwenden wir die Batterie des Krona 9V-Formfaktors, und der Anschluss, der an das Arduino angeschlossen wird, sollte mit einem „Plus in der Mitte“ versehen sein.


Für einen Servomotor und 4 Gleichstrommotoren können Sie mit einer Stromquelle arbeiten. Das einzige Problem ist, dass der Servomotor für eine Spannung von 5 bis 6 V (maximal 7,2 V) und einen Strom von 100 bis 300 mA (Spitze) ausgelegt ist und Gleichstrommotoren 6 bis 8 V (maximal 12 V) und einen Strom von 250 mA benötigen.


Um das Problem zu lösen, gibt es DC-DC-Wandler, aber ich hatte keine. Als Ergebnis habe ich meinen "proprietären" Schaltplan angewendet (ohne heruntergefahrene elektronische Schaltkreise, nur umweltfreundliche Spannung und Strom!): Ich habe 8 Stk. Angeschlossen. 1,2-V-Batterien in Reihe geschaltet und an den richtigen Stellen abgegriffen, wie in der Abbildung gezeigt.


Wahrnehmung


6 V gingen an den Servomotor und 9,6 an Gleichstrommotoren. Es ist klar, dass die Batterien 1-5 einer erhöhten Belastung ausgesetzt sind.


Zur Steuerung von Servo- und Gleichstrommotoren habe ich einen 4-Kanal Motor Drive Shield verwendet, der auf dem L293D-Chip basiert.


Montage


Die Montage des fertigen Chassis ist ein kleines Problem. Aber denken Sie nicht, dass Sie ohne Doping alles sofort bekommen. Bereiten Sie daher Dateien vor.


Montage


Montage


Es ist nicht möglich, mehrere Motoren, einen Servomotor oder einen Stepper, direkt an das Arduino anzuschließen. Da die Pins (Schlussfolgerungen) des Arduino stromsparend sind. Um das Problem zu lösen, gibt es ein zusätzliches Antriebssteuermodul - Motor Drive Shield, das auf dem L293D-Chip basiert, einem der am häufigsten für diesen Zweck entwickelten Chips. Der L293D-Chip ist auch als H-Bridge bekannt.


Ich habe eine Karte verwendet, die 4 Kanäle für den Anschluss von zwei L293D-Chips und einem Schieberegister bietet. Bei eBay für 5 US-Dollar gekauft.


Diese Antriebssteuerungsmodulplatine hat die folgenden Spezifikationen.


  • L293D Motor Drive Shield kompatibel mit Arduino Mega 1280 und 2560, UNO, Duemilanove, Diecimila
  • 4-Kanal-Steuerung
  • angetriebene Motoren von 4,5 V bis 36 V.
  • zulässiger Laststrom 600mA pro Kanal, Spitzenstrom - 1,2A
  • Überhitzungsschutz
  • 2 Schnittstellen mit einem exakten Arduino-Timer (es gibt keinen „Jitter“) zum Anschließen von Servomotoren an 5 V. Wenn die Versorgungsspannung höher sein muss, muss der Stromanschluss wie unten beschrieben wiederhergestellt werden
  • Es können 4 bidirektionale Gleichstrommotormotoren oder 2 Schritt- und 2 Servomotoren gleichzeitig gesteuert werden
  • Zur bidirektionalen Drehzahlauswahl sind jeweils 4 bidirektionale Gleichstrommotoren an einen 8-Bit-Bus angeschlossen
  • Anschluss von bis zu 2 Stufenantrieben (unipolar oder bipolar) mit einer Spule, Doppelspule oder abwechselnden Schritten
  • Anschluss zum Anschließen einer externen Quelle zur getrennten Stromversorgung von Steuerlogik und Motoren
  • RESET Arduino Button
  • Die Adafruit AFMotor-Bibliothek wird für die Verwaltung verwendet.

Motor Drive Shield muss ein wenig verfeinert werden, damit Sie danach alles anschließen können. Ich habe die notwendigen Stecker oben gelötet, das ist passiert.


Motrantriebsschild


Die Motoren können relativ zur Arduino-Platine an eine zusätzliche Stromversorgung angeschlossen werden. Ich empfehle nur diese Verbindungsmethode. Entfernen Sie dazu den Jumper, wie in der Abbildung gezeigt.


4-Kanal L293D Motorantriebsabschirmung.  Jumper für externe Stromversorgung


In diesem Fall wird der Arduino angetrieben und die Motoren werden unabhängig voneinander angetrieben.


Die LED am Motorschild leuchtet auf, wenn die Motoren mit Strom versorgt werden. Wenn sie nicht leuchtet, funktionieren die Motoren nicht.


Neues Problem.


Die Position des Power Jumpers gilt nicht für Servos, sie werden weiterhin von 5V Arduino gespeist. Da Servomotoren normalerweise viel Strom verbrauchen und die Leistung nicht ausreicht, fällt das gesamte Gerät aus. Im „besten“ Fall fällt nur der Servoantrieb aus - er dreht sich nicht im eingestellten Winkel oder die ganze Zeit vor jeder Umdrehung zuerst um 0 Grad und nur dann in einem bestimmten Winkel (und wenn Sie mithalten können). Daher empfehle ich, das Servo auch über eine zusätzliche Stromquelle mit Strom zu versorgen. Dazu müssen Sie das Anschlussdiagramm leicht wiederholen: Das Pluskabel (normalerweise rot) vom Standardstecker abbeißen und direkt an das Plus der Stromquelle anschließen.


Finalisierung zum Annehmen der Leistung des Servomotors


Beim Anschließen eines Motor Drive Shield werden keine analogen Pins verwendet. Die digitalen Pins 2, 13 werden nicht verwendet.


Die folgenden Stifte werden nur verwendet, wenn die entsprechenden Gleichstrommotoren oder Schrittmotoren angeschlossen und verwendet werden:


  • D11: Gleichstrommotor Nr. 1 / Schritt Nr. 1 (Aktivierung und Drehzahlregelung)
  • D3: Gleichstrommotor Nr. 2 / Schritt Nr. 1 (Aktivierung und Drehzahlregelung)
  • D5: Gleichstrommotor Nr. 3 / Schritt Nr. 2 (Aktivierung und Drehzahlregelung)
  • D6: Gleichstrommotor Nr. 4 / Schritt Nr. 2 (Aktivierung und Drehzahlregelung)

Diese Pins sind belegt, wenn DC / Stepper verwendet werden: D4, D7, D8, D12.


Die folgenden Pins werden nur belegt, wenn die entsprechenden Servomotoren verwendet werden:


  • D9: Servo # 1-Steuerung
  • D10: Servostation Nr. 2

Verbindungstabelle


Um mit Motor Drive Shield zu beginnen, müssen Sie die Adafruit AFMotor- Bibliothek herunterladen und installieren.


Beispielcode zur Steuerung von Motoren:


 #include <AFMotor.h> //   Adafruit #include <Servo.h> //     AF_DCMotor motor(1); //   ,    DC    Motor Shiled , ,  frequency Servo servo; //    servo.attach(10); //     9  10 (    Motor Shiled) motor.setSpeed(speed); //   DC   0 ()  255 ( ) motor.run(RELEASE); // DC   motor.run(FORWARD); // DC   motor.run(BACKWARD); // DC   servo.write(90); //    90 . 

Der Gleichstrommotor begann erst zu drehen, wenn eine Drehzahl von mehr als 100 angezeigt wurde. Wenn er kleiner ist, summt er nur. Sie müssen die Mindestdrehzahl Ihres Motors experimentell bestimmen.


Für Motoren, die an M1 und M2 angeschlossen sind, können Sie die Frequenz einstellen: MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, MOTOR12_1KHZ. Die höchste Drehzahl wird bei 64 kHz erreicht, diese Frequenz ist zu hören, niedrigere Frequenz und Geschwindigkeit bei 1 kHz, verbraucht aber auch weniger Energie. Die Motoren 3 und 4 laufen immer mit 1 kHz, andere Werte werden ignoriert. Der Standardwert ist überall 1 kHz.


Danach muss ein Motortest durchgeführt werden. Eine Skizze zum Testen kann hier angefertigt werden . Ändern Sie zu Beginn der Skizze die Motornummer in einer Zeile (oder in Zeilen) des Typs:


 AF_DCMotor motor(); 

Eine Skizze für einige Zeit dreht den / die Motor (en) entlang der Bewegung des Roboters vorwärts und dann zurück. Überprüfen Sie sorgfältig, ob sich der Motor in diese Richtung dreht, und ändern Sie gegebenenfalls die Polarität der Verbindung.


Wir schließen das Ultraschall-Entfernungsmessgerät HC-SR04 Ultraschallmodul an. Pinbelegung:


  • Vcc
  • Trig (T)
  • Echo (r)
  • GND

Die Zeit, die der Ultraschall-Entfernungsmesser für Messungen benötigt (empirisch ermittelt):


  • maximal 240 ms bei zu großer Entfernung (außerhalb der Reichweite)
  • mindestens 1 ms, wenn der Abstand zu kurz ist
  • Eine Entfernung von 1,5 m wird in ungefähr 10 ms bestimmt

Ultraschall-Entfernungsmesser HC-SR04 Ultraschallmodul


Ein Ultraschall-Entfernungsmesser-Sensor bestimmt aufgrund seiner physikalischen Natur und nicht, weil China in einigen Fällen die Entfernung zu einem Hindernis schlecht bestimmt:


  • Wenn das Hindernis eine komplexe Form hat, wird der Ultraschall in verschiedenen Winkeln reflektiert und der Sensor ist falsch.
  • Der Ultraschall wird von Polstermöbeln oder Spielzeug perfekt absorbiert (d. h. nicht reflektiert), und der Sensor glaubt, dass sich nichts davor befindet.

Mit anderen Worten, für einen Ultraschall-Entfernungsmesser wäre es ideal, wenn alle Hindernisse die Form einer festen Ebene senkrecht zur Richtung der Ultraschallstrahlung hätten.


Einige Probleme können mit einem Infrarot-Abstandssensor gelöst werden. Aber es ist auch nicht perfekt:


  • kleine maximale Reichweite im Vergleich zu Ultraschall: 0,3-0,8 m gegenüber 4 m
  • großer Mindestabstand zum Ultraschall: 10 cm vs 2 cm
  • Abhängigkeit der Empfindlichkeit des Sensors von der Gesamtbeleuchtung.

Wenn Sie diese Entfernungsmesser paarweise installieren, würde sich die Effizienz ihrer Arbeit erheblich erhöhen.


Verbinden Sie Bluetooth HC-05


Wie Sie dem Datenblatt entnehmen können, sind die Hauptstifte des „nackten“ HC-05:


  • TX-Übertragung (Pin 1)
  • Empfangsempfang (Pin 2)
  • 3,3 V (Pin 12) Stromversorgung 3,3 V.
  • GND (Pin 13) Masse
  • PIO8 (Pin 31) -Modusanzeige
  • PIO9 (Pin 32) Verbindungsstatus Wenn die Verbindung hergestellt ist, ist der Ausgang hoch
  • PIO11 (Pin 34) zur Aktivierung des AT-Befehlsmodus

Unser Modul ist mit der Breakout / Base Board verlötet, wo es bereits einen Spannungsteiler gibt, sodass es einen Arbeitsspannungsbereich von 3,3 V bis 6 V hat.


Wir verbinden unsere Bluetooth-Modulbaugruppe:


  • Arduino (TX) - (RX) HC-05
  • Arduino (RX) - (TX) HC-05
  • Arduino (+ 5V) - (VCC) Bluetooth
  • Arduino (GND) - (GND) Bluetooth
  • LED, KEY Pins werden nicht verwendet

Nachdem das Bluetooth HC-05-Modul mit Strom versorgt wurde, sollte die LED blinken, was bedeutet, dass Bluetooth funktioniert.


Schalten Sie Bluetooth auf dem Mobiltelefon ein, suchen Sie das Gerät mit dem Namen HC-05 und stellen Sie die Verbindung mit dem Kennwort 1234 her.


Füllen Sie zum Testen eine einfache Skizze in Arduino aus:


 int count = 0; void setup() { Serial.begin(9600); Serial.println("Test Arduino + Bluetooth. http://localhost"); } void loop() { count++; Serial.print("Count = "); Serial.println(count); delay(1000); } 

Installieren Sie auf dem Android-Telefon das Bluetooth-Terminal. Wir sind mit dem HC-05-Gerät verbunden und beobachten auf dem Telefonbildschirm Kriechlinien mit zunehmendem Zähler.


Damit das Modul AT-Befehle empfangen kann, müssen Sie es in den entsprechenden Modus versetzen. Dazu müssen Sie den KEY-Ausgang (PIO11) auf logisch 1 setzen. Auf einigen Breakout- / Basisplatinen gibt es anstelle des KEY-Ausgangs einen EN-Ausgang (ENABLE), der möglicherweise vorhanden ist oder nicht an den Stift auf dem Chip selbst gelötet. Dies gilt nur für HC05-Chips. Das ist nur, dass mein EN-Anschluss nirgendwo gelötet ist. Daher kann es mit einem separaten Draht an den Anschlussschlüssel (PIO11) des Chips gelötet werden. Um den HC05 während des Betriebs in den AT-Befehlsmodus zu versetzen, schließen Sie den KEY-Chip-Ausgang (PIO11) einige Sekunden lang mit dem Vcc-Ausgangsstrom kurz. Für HC06 wird kein KEY-Pin benötigt.


Software


Hinweis Stellen Sie vor dem Herunterladen des Programms auf Arduino jedes Mal sicher, dass das Bluetooth-Modul nicht mit dem Arduino verbunden ist. Dies führt zu Problemen beim Füllen von Skizzen. Trennen Sie einfach das Bluetooth-Modul oder die Kabel, die die Pins des Arduino- und RX, TX-Moduls verbinden, von der Stromversorgung.


Ändern Sie zu Beginn der Skizze die Motornummern in den Zeilen des Typs:


 AF_DCMotor motor(); 

Skizze für den Automatikmodus mit Hindernisvermeidung hier herunterladen .


Wenn Sie die Zeichenfolge ersetzen


 byte debug = 0; 

auf


 byte debug = 10; 

Dadurch wird der Debug-Modus aktiviert.


Im Debugging-Modus fährt oder fährt der RoboCar4W nicht wirklich. Aktivieren Sie stattdessen den Monitor für die serielle Schnittstelle, und dort sehen Sie, wie er virtuell „fährt“. Anstelle einer echten Vorwärtsfahrt wird die Zeichenfolge "Vorwärts" auf den Monitor der seriellen Schnittstelle geschrieben, anstatt mit einer Linkskurve, "Zurück L (eft)" usw. umzukehren. Der Ultraschall-Abstandssensor tut auch nichts, stattdessen werden die Abstände zu Hindernissen programmgesteuert und zufällig generiert.


Dieser Debugging-Modus ist praktisch, wenn Sie den Bewegungsalgorithmus ändern und anstatt eine Schreibmaschine im Raum zu fangen, einfach alles im Leerlauf überprüfen.


Bluetooth-Skizze zur manuellen Steuerung hier herunterladen . Die Skizze hat keinen Debug-Modus, da dort alles transparent ist. Sie drücken den Knopf - der Roboter geht.


Programm für Adnroid Bluetooth RC Car .


Nun, das ist es! Gute Reise!


Gute Reise!

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


All Articles