• Home »
  • Mikrocontroller Arduino Roboter Projekte Arduino-Sensoren »

    13 Schritt:Schritt 1: was man so braucht Schritt 2: ERSTE SCHRITTE: ANSCHLUSS DTMF mit Arduino Schritt 3: Einstellen der L293D Schritt 4: Anschluss der Sensoren mit ARDUINO Schritt 5: Anschließen des 5 BABYS MIT MUTTER Schritt 6: DIE CODE Schritt 7: der Code: - FÜR PING SENSOR Schritt 8: Schritt 9: DIE CODE: - für den HC-SR04 SENSOR Schritt 10: Vorbereitung des Körpers DER ROBOT !!!!!! Schritt 11: In Kontinuität ...... Schritt 12: PRÜFUNG ...... Schritt 13: Schließen der Haube

    DTMF oder Dual Tone Multi Frequency ist nette kleine Art der Steuerung von Maschinen mit Ihrem Handy. Diese instructable zeigt Ihnen, lieber Leser, wie man ein billiger zu machen als Schmutz DTMF gesteuerten Roboter, der kann auch funktionieren autonom yeh! das ist richtig AUTONOM, wenn es eng wird. Das Projekt wird rund um die ach so vielseitig Arduino UNO errichtet (Oh Arduino ist ihr alles, was Sie nicht tun können !!!!!!). Die Programmierung ist unkompliziert, aber stellen Sie sicher, alles ist zur Hand, bevor Sie basteln starten. Das gesamte Projekt kann für weniger als 50 $ schlug zusammen und kann Stunden sinnlosen Spaß für Sie und die Familie Haustier mitbringen. Schritt 1: was man so braucht Alle 11 Artikel anzeigen 1: - DTMF-Modul (http://www.ebay.in/itm/like/20119037796). 2: - Arduino UNO. 3: - Drahtbrücken (Mann zu Frau und Mann zum Mann). 4: - PING Ultraschallsensor (Nutzen auch Sie HC-SR04 SENSOR weil es billiger ABER Sie müssen den Code, der ich in der Codeabschnitt EXPLAIN ÄNDERN). 5: - 2 IR-Sensor (http://www.amazon.in/ROBOSOFT-SYSTEMS-Single-Sensor-Module/dp/B00U3LKGTG/ref=sr_1_cc_3?s=aps&ie=UTF8&qid=1427820514&sr=1-3-catcorr&keywords=ir+sensor+module) 6: - 2 kleine Brotschneidebretter. 7: - L293D MOTOR DRIVER (http: //www.amazon.in/L293D-Push-Pull-Four-Channel -...) Sie können auch das L293D Modul erhältlich AT (http://www.ebay.in / itm / wie / 271552019152) 8: - 2 RÄDER UND 2 Schrittmotoren mit Getriebes (AUF AMAZON) Wenn Sie die Motoren ohne dem Getriebe dann werden sie NICHT MÖGLICH genügend Drehmoment auf die Räder zu bewegen, wenn der Roboter auf Boden gelegt ergeben. "PERSÖNLICHE ERFAHRUNG!!!!!!" 9: - ein Handy mit 3,5 mm Klinke-Unterstützung und ONE für den Aufruf. 10: - SMALL BOX. 11: - beidseitig TAPE.Step 2: Erste Schritte: Anschließen DTMF mit Arduino Für diejenigen unter Ihnen, die nicht vertraut mit DTMF sind, habe ich eine unten angegebenen Link, bitte überprüfen. http://www.mediacollege.com/audio/tone/dtmf.html Verbinden Es gibt 4 Stiften auf einer Seite der DTMF-Controller als D0, D1, D2, D3 markiert diese Stifte zu verbinden, um den Zapfen 3, 4, 5 und 6 von Arduino jeweils D0 dh Stift 3, und so weiter. Wir werden Anziehungskraft für die DTMF aus dem Arduino. Ich werde dich in der 4. Schritt erklären, wie. Schritt 3: EINSTELLUNG DES L293D Der Vorteil der Verwendung eines Motortreibers und Schrittmotoren besteht darin, dass diese Anordnung ist billiger im Vergleich zur Verwendung Servomotoren. Schließen Sie die Stifte 4, 5, 12, 13 zusammen mit kleinen Brücken. Sie können diese Jumper mit festen Kern Aluminiumdrähte zu machen. Verbinden Sie die Pins 1 und 9 zusammen und Stiften 8 und 16 zusammen. Verbinden Sie den Stift: ARDUINO <=========> DRIVER Pin 9 <----------------------------> Pin 2 Pin 10 <--------------------------> Pin 7 Stift 11 <--------------------------> Pin 15 Pin 12 <--------------------------> Pin 10 Verbinden Sie das 5V vom Arduino mit dem Pin 1 bis Brotbrett und GND an die Pins 4, 5, 12, oder 13, wird einem zu tun. Schritt 4: Anschluss der Sensoren Arduino Der Sensor Ich verwende ein Ultraschallsensor PING aufgrund seiner hohen Zuverlässigkeit und geringerer Pinzahl Vergleich zu HC-SR04, die ein 4-Pin-Sensor ist, da es separate Pins für Ein- und Ausgangssignal, während Ping verwendet das gleiche Pin für Eingangs und Ausgabe. Auch ich bekam es kostenlos, warum also zu einem anderen zu kaufen !!!!!! Ich werde Ihnen sagen, wie Sie den Code für die 4-Pin-Sensor später im Code-Abschnitt ändern. Ausgabemittel, dass das Sensormodul wird vom Arduino angeregt werden, um den Ultraschallimpuls ausgelöst, und Eingabemittel, dass die reflektierte Welle, die von dem Sensor erfasst wird dem Arduino. Verbinden Sie den Signalstift an den Pin 8 auf Arduino. Da wir um eine begrenzte Anzahl von Stromquelle verwenden, werden wir in der Strom aus dem Arduino; So schließen Sie den 5V-Pin des Sensors auf 5V-Versorgung des Fahrers Steckbrett ist (AUS DEM ARDUINO) und GND mit der Masse der Treiberplatine. Wenn Sie einen Treiber-Modul verwenden, stellen Sie eine gemeinsame 5V ausziehen Punkt und Masseverbindung für diese beiden. Schließen Sie auch das Stromversorgungsstift des DTMF-Modul mit dem Brotbrett Stromversorgung. Die Ausgangspins des IR-Sensors in ähnlicher Weise eine Verbindung mit dem Stift 11 und 12 gemäß dem Code. Schritt 5: ANSCHLUSS DER 5 BABYS MIT MUTTER Verbinden Sie nun alle fünf Module an den Arduino. Schritt 6: DIE CODE Die Codierung, war eine Herausforderung, da die DTMF-Code für nur eine Stelle zu einer Zeit zu erzeugen. Das Problem wurde für den manuellen Modus, wo ich hatte, um einen Schlüssel zum Umschalten in den Handbetrieb definieren Codierung. Ich beginne mit einem Beispiel erklären: - Leere Schleife () {Int z = digitalRead (d0); int y = digitalRead (d1); int x = digitalRead (d2); int w = digitalRead (d3); if ((w == LOW) && (x == LOW) && (y == LOW) && (z == HIGH)), dh Stelle 1 {If ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) dh stelligen 2 Der Code sollte wie folgt funktionieren: - wenn 1 gedrückt wird, in den manuellen Modus und durch Drücken von 2 auf dem Tastenfeld der Roboter vorwärts bewegt geht der Roboter. Aber was ist eigentlich passiert ist, dass, wie ich 2 Drücken Sie den Roboter nicht mehr im Handbetrieb. WARUM ?????? Die Antwort ist, dass der Staat an den Pins des Arduino mit dem DTMF angeschlossen haben sich nun geändert, dh sie sind nicht mehr 1, weil der Staat Informationen nicht überall gespeichert (weil der Staat sich ändern muss, wenn der Roboter in den autonomen Modus umgeschaltet und die DTMF auch nur Code für die zuletzt gedrückte Taste zu erzeugen und kann nicht gespeichert werden, den Code selbst). DIE LÖSUNG: - Die Lösung war einfach statt, indem eine Bedingung für eine Zahl, zum Schalten des Modus I es für eine Ziffer gesetzt hatte: - Beispiel: - if (w == LOW) {If ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) {Digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW);} if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == HIGH)) {Digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == LOW)) {Digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == LOW)) {Digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == HIGH)) {Digital (motorL1, LOW); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, LOW); } } SEIT 'W' bleibt immer niedrig für die ABOVE DIGITS, WIRD DIE W = 0 Zustand während BE TRUE. Schritt 7: der Code: - FÜR PING SENSOR <p> const int serialPeriod = 250; // Ein Zeitraum von 250 ms = eine Frequenz von 4 Hz <br> unsigned long timeSerialDelay = 0; </ p> <p> const int UltraloopPeriod = 20; // Eine Periode von 20 ms = eine Frequenz von 50 Hz unsigned UltraLoopDelay = 0; </ p> <p> const int SENSOR_1 = 10; // Eingabe / Ausgabe vom SENSOR_1 int motorL1 = 6; // Ausgang für Motortreiber Pin 2 int motorL2 = 7; // Ausgang für Motortreiber Pin 7 int motorR1 = 8; // Ausgang für Motortreiber Stift 15 int motorR2 = 9; // Ausgang für Motortreiber Stift 10 int d0 = 2; // Eingabe von DTMF-pin D0 int d1 = 3; // Eingabe von DTMF Stift D1 int d2 = 4; // Eingabe von DTMF-Pin D2 int d3 = 5; // Eingabe von DTMF Stift D3 int ultrasonicTime; // Variable zu Zeit speichern int ultrasonicDistance; // Variable zu speichern Entfernung berechnet Leere setup () { Serial.begin (9600); // Setzen serielle Kommunikationsgeschwindigkeit pinMode (motorL1, OUTPUT); pinMode (motorL2, OUTPUT); pinMode (motorR1, OUTPUT); pinMode (motorR2, OUTPUT); pinMode (d0, INPUT); pinMode (d1, INPUT); pinMode (d2, INPUT); pinMode (d3, INPUT); } </ p> <p> void loop () { int z = digitalRead (d0); int y = digitalRead (d1); int x = digitalRead (d2); int w = digitalRead (d3); /*----------------------------------------- MANUELLER MODUS ------ --------------------------------- * / if (w == LOW) { if ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == LOW)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, LOW); } } / * ----------------------------------- AUTONOMOUSMODE ------------ ----------------------- * / if (w == HIGH) { Sichtweite(); if ((millis () - UltraLoopDelay)> = UltraloopPeriod) { readUltrasonicsensor_1 (); Motorstart (); UltraLoopDelay = millis (); } } } nichtig readUltrasonicsensor_1 () // fuction zu SENSOR_1 Daten und finden Entfernung { pinMode (SENSOR_1, OUTPUT); digital (SENSOR_1, LOW); Verzögerung (2); digital (SENSOR_1, HIGH); Verzögerung (10); digital (SENSOR_1, LOW); pinMode (SENSOR_1, INPUT); ultrasonicTime = pulseIn (SENSOR_1, HIGH); ultrasonicDistance = (ultrasonicTime / 2) / 29; // Berechnung, um den Abstand des Hindernisses von ultrasoni // c-Sensor messen } </ p> <p> void Motorstart () // Funktion zum Antrieb des Motors nach spürte Abstand { if (ultrasonicDistance> 10) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((IRSL == LOW) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((IRSL == HIGH) && (irsR == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } } if (ultrasonicDistance <10) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } } } </ p> <p> / * --------------------------- KONTROLLE DER ULTRSONIC SENSOR --------- ---------------- * / </ p> <p> void viewDistance () // Funktion zur Entfernung auf serielle Monitor anzeigen {// Um ​​zu prüfen, ob der Ultraschall-Sensorcode richtig funktioniert if ((millis () - timeSerialDelay)> = serialPeriod) { Serial.print ("Distance"); Serial.print (ultrasonicDistance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); } } </ p> Schritt 8: Schritt 9: DIE CODE: - für den HC-SR04 SENSOR <p> Ich habe einige Korrekturen (wie {CORRECTIONS} markiert) gemacht und einige neue Linien ({wie markiert {MEHR}}) FÜR HC-SR04. </ p> <p> <br> <p> const int serialPeriod = 250; // Ein Zeitraum von 250 ms = eine Frequenz von 4 Hz <br> unsigned long timeSerialDelay = 0; </ p> <p> const int UltraloopPeriod = 20; // Eine Periode von 20 ms = eine Frequenz von 50 Hz unsigned UltraLoopDelay = 0; </ p> <p> const int sensor_1_in = 10; // Eingabe von der SENSOR_1 const int sensor_1_out = 13; // Vom SENSOR_1 Ausgangs int motorL1 = 6; // Ausgang für Motortreiber Pin 2 int motorL2 = 7; // Ausgang für Motortreiber Pin 7 int motorR1 = 8; // Ausgang für Motortreiber Stift 15 int motorR2 = 9; // Ausgang für Motortreiber Stift 10 int d0 = 2; // Eingabe von DTMF-pin D0 int d1 = 3; // Eingabe von DTMF Stift D1 int d2 = 4; // Eingabe von DTMF-Pin D2 int d3 = 5; // Eingabe von DTMF Stift D3 int ultrasonicTime; // Variable zu Zeit speichern int ultrasonicDistance; // Variable zu speichern Entfernung berechnet Leere setup () { Serial.begin (9600); // Setzen serielle Kommunikationsgeschwindigkeit pinMode (motorL1, OUTPUT); pinMode (motorL2, OUTPUT); pinMode (motorR1, OUTPUT); pinMode (motorR2, OUTPUT); pinMode (d0, INPUT); pinMode (d1, INPUT); pinMode (d2, INPUT); pinMode (d3, INPUT); } </ p> <p> void loop () { int z = digitalRead (d0); int y = digitalRead (d1); int x = digitalRead (d2); int w = digitalRead (d3); /*----------------------------------------- MANUELLER MODUS ------ --------------------------------- * / if (w == LOW) { if ((w == LOW) && (x == LOW) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == LOW) && (z == LOW)) { digital (motorL1, LOW); digital (motorL2, HIGH); digital (motorR1, HIGH); digital (motorR2, LOW); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } if ((w == LOW) && (x == HIGH) && (y == HIGH) && (z == HIGH)) { digital (motorL1, LOW); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, LOW); } } / * ----------------------------------- AUTONOMOUSMODE ------------ ----------------------- * / if (w == HIGH) { Sichtweite(); if ((millis () - UltraLoopDelay)> = UltraloopPeriod) { readUltrasonicsensor_1 (); Motorstart (); UltraLoopDelay = millis (); } } } Leere readUltrasonicsensor_1 () // GEÄNDERT { digital (sensor_1_out, LOW); Verzögerung (2); digital (sensor_1_out, HIGH); Verzögerung (10); digital (sensor_1_out, LOW); ultrasonicTime = pulseIn (sensor_1_in, HIGH); ultrasonicDistance = (ultrasonicTime / 2) / 29; // Berechnung, um den Abstand des Hindernisses von ultrasoni // c-Sensor messen } </ p> <p> Motorstart erlöschen () // Funktion, um den Motor anzutreiben { if (ultrasonicDistance> 10) / { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, HIGH); digital (motorR2, LOW); } if (ultrasonicDistance <10) { { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } } } </ p> <p> / * --------------------------- KONTROLLE DER ULTRSONIC SENSOR --------- ---------------- * / </ p> <p> nichtig viewDistance () { if ((millis () - timeSerialDelay)> = serialPeriod) { Serial.print ("Distance"); Serial.print (ultrasonicDistance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); } } </ p> Schritt 10: Vorbereitung des Körpers DER ROBOT !!!!!! Das Loch auf dem Feld in der 1. Bild hat nichts damit zu tun. 1: Nehmen Sie eine gewöhnliche Karton bohren einige Löcher für die Motorwelle mit dicken Körper Stift. 2: Legen Sie die Motoren mit dem doppelseitigen Klebeband oder mit einem anderen praktikable Methode Sie Schritt 11. In Kontinuität ...... Für den Sensor, müssen Sie ein paar Anpassungen oben gezeigt zu machen. Der einzige Grund für die Verwendung von kleinen Brücken, war, dass der Sensor nahm mehr Raum, als ich dachte, so hatte ich den größten Teil der Steckbrett außen zu platzieren. Es ist etwas kompliziert zu erklären, aber Sie werden verstehen, was auf, wenn Sie diesen Punkt in den Aufbau zu erreichen gehen. Jede Art und Weise, können Sie andere Techniken, die Ihre Phantasie für die Platzierung des Sensors auf dem Roboter passen zu verwenden, aber das, was ich versucht zu tun war, indem Sie die Drähte im Inneren, ohne Drähte außerhalb der Box. auch Sie den Sensor gerade wenn Sie es wünschen montieren. Aber stellen Sie sicher, dass der Sensor nicht zu hoch oder es wird nicht in der Lage zu erkennen, Objekte der geringere Höhe sein Schritt. 12: PRÜFUNG ...... Legen Sie die Mutter und seine Kinder in die Seitenfeld und machen Sie einen Testlauf ohne Räder. Keine Notwendigkeit zu sagen, dass die DTMF fehlt, ist es gerade heraus hängen. Nach dem Code habe ich geschrieben: - 2 = Vorwärts 5 = rückwärts 4 = links abbiegen 6 = rechts stellige andere als 1, 2, 3, 4, 5, 6 und 7 wird der Roboter im autonomen Modus zu schalten. Schritt 13: Schließen der Haube Jetzt ist es Zeit, um alles, was im Inneren des Körpers zu platzieren schließen Sie die Haube und ...... PLAY !!!!!! ALLES GUTE...... $(function() {$("a.lightbox").lightBox();});

    Seiten: