12 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: Den Code eingeben: - FÜR PING SENSOR Schritt 8: Den Code eingeben: - für den HC-SR04 SENSOR Schritt 9: Vorbereitung des Körpers DER ROBOT !!!!!! Schritt 10: In Kontinuität ...... Schritt 11: PRÜFUNG ...... Schritt 12: Schließen der Haube

    DTMF oder Dual Tone Multiple Frequency ist nette kleine Art der Steuerung von Maschinen mit Ihrem Handy. Diese instructable zeigt Ihnen, lieber Leser, wie man ein billiger 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. Lassen Sie mich erklären mein Projekt: ------ Wie der Titel vorschlagen, dieser Roboter in der Lage, Arbeiten sowohl in autonomen und manuellen Modus ist, werde ich die Arbeit des Roboters in den beiden Modi jetzt erklären: Autonomen Modus: - In diesem Projekt habe ich die "Sensor-Fusion-Technik", die "HIGH TECHIE TECHIE" klingen, aber ist eigentlich eine einfache Technik der Kombination der Eingangsdaten von mehr als einem (gleicher oder unterschiedlicher Art) Sensor, um die Umwelt zu analysieren implementiert. Dies erhöht die Erfassungsfähigkeit des Systems und ermöglicht eine genauere Rechnung (oder Gegenmaßnahmen in diesem Fall) zu formulieren auch. In diesem Projekt habe ich einen Ultraschall-Sensor für die Suche nach den Abstand des Hindernisses von dem Roboter und die beiden IR-Sensor (eine auf jeder Seite), um Kante Kollision zu verhindern. Nehmen wir an, der Roboter auf ein Hindernis Überschrift. Wenn es in einer bestimmten Entfernung (in der Code angegeben) von dem Objekt sagen 6cm (durch den Ultraschallsensor berechnet) wird entweder nach links oder nach rechts. Diese Entscheidung wird durch Erfassen, welche der 2 Seiten leer sind (dh keinen anderen Hindernis oder nicht, um eine Kollision mit einem anderen Hindernis führen) gemacht. Das ist, wo die IR-Sensoren kommen in Spiel, die linke und rechte Seite überprüfen sie. Wenn nehme beide Seiten frei sind, dann können Sie wählen, wo Sie Ihre Roboter sollte Schritt ist es zu Fuß, indem Sie es im Code. MANUELLER MODUS:- Im manuellen Modus kann der Roboter mit Handy gesteuert werden kann, einem am Roboter angebracht und ein weiteres Telefon kann verwendet werden, um am Telefon mit dem Roboter verbunden rufen werden. Wenn Sie eine Taste auf dem Telefon des Anrufers wird ein Signal zu generieren drücken, wird die genannte Telefon das gleiche Signal an die DTMF-Modul, das es in ein 4-Bit-BCD-Code konvertiert werden übertragen (erfahren Sie mehr über DTMF auf dem "Internet") Der Roboter zwischen diesen 2 Modi, indem Sie einfach eine Taste OFF das Telefon, die später erläutert wird umgeschaltet werden. Sorry für die nicht dem Hochladen von Video YOUTUBE in unserer COLLEGE VERBOTEN UND DER instructable NICHT HABEN EINE Video-Upload-Funktion für NOW. 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 Code-Abschnitt 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 MODULE IM WERK (http://www.ebay.in / itm / wie / 271552019152) 8: - 2 Räder und 2 Schrittmotoren mit Getriebes (AUF AMAZON) Wenn Sie die Motoren ohne das 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: - doppelseitiges Klebeband. 12: - 2 Batterien (Duracell Versuchen Sie verwenden). Sie können eine 5V Ladegerät zum Testen verwenden. Schritt 2: ERSTE SCHRITTE: ANSCHLUSS 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 Pins auf der einen Seite der DTMF-Controller als D0, D1, D2, D3 markiert, diese Stifte eine Verbindung mit dem Pin 3, 4, 5 & 6 Arduino jeweils dh D0 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 L293D Der Vorteil der Verwendung eines Motortreibers und Schrittmotoren besteht darin, dass diese Anordnung ist billiger im Vergleich zur Verwendung von 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. Schließen 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 von 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 auf eine begrenzte Anzahl von Stromquelle werden wir von der Arduino werden Anziehungskraft zu verwenden, so schließen Sie das 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, um das Brot Bordstromversorgung. Die Ausgangspins des IR-Sensors Ebenso eine Verbindung zu dem Stift 11 und 12 nach dem Code. Schritt 5: 5 ANSCHLUSS DER BABYS MIT MUTTER Verbinden Sie nun alle fünf Module an den Arduino. Verbinden Sie auch die Motoren und die Verwendung einer 5 V-Ladegerät für die Prüfung. Wenn Sie nicht das Ladegerät haben, können Sie eine 9V-Batterie für die Motoren zu verwenden. Zu Test stecken Sie das Arduino auf Ihren Computer. Die Batterien Vergeuden Sie nicht unnötig. Ich habe, und es war fast kostete mich mein 1. Preis. Schritt 6: DIE CODE Die Codierung, war eine Herausforderung, da die DTMF-Code für lediglich eine Ziffer zu einer Zeit zu erzeugen. Das Problem wurde für den manuellen Modus, in dem ich 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 Ziffer 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 der Roboter geht. 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 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 TRUE GESAMTEN Schritt 7: Den Code eingeben: -. FÜR PING SENSOR const int serialPeriod = 250; // Ein Zeitraum von 250 ms = eine Frequenz von 4 Hz unsigned long timeSerialDelay = 0; const int UltraloopPeriod = 20; // Eine Periode von 20 ms = eine Frequenz von 50 Hz unsigned UltraLoopDelay = 0; const int SENSOR_1 = 10; // Eingabe / Ausgabe vom SENSOR_1 const int SENSOR_2 = 11; const int SENSOR_3 = 12; 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 Stift 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); } Leere Schleife () { 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 vom Ultraschallsensor messen } Motorstart erlöschen () // Funktion zum Antrieb des Motors nach spürte Abstand { int IRSL = digitalRead (SENSOR_2); // IR linken Sensor int irsR = digitalRead (SENSOR_3); // IR richtigen Sensor if (ultrasonicDistance> 10) // dieser Teil Code funktioniert auf Seitenkollisionen sogar verhindern {// Wenn kein Hindernis vor dem Roboter if ((IRSL == LOW) && (irsR == LOW)) { 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) // dieser Teil des Code funktioniert, wenn es einige {// Hindernis direkt vor dem Roboter und auch if ((IRSL == HIGH) && (irsR == LOW)) // nach Seitenkollision zu verhindern, { 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 ((IRSL == LOW) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } } } / * --------------------------- KONTROLLE DER ULTRSONIC SENSOR ----------------- -------- * / nichtig viewDistance () // Funktion zum Abstand 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 (); } } Schritt 8: Den Code eingeben: - für den HC-SR04 SENSOR const int serialPeriod = 250; // Ein Zeitraum von 250 ms = eine Frequenz von 4 Hz unsigned long timeSerialDelay = 0; const int UltraloopPeriod = 20; // Eine Periode von 20 ms = eine Frequenz von 50 Hz unsigned UltraLoopDelay = 0; const int sensor_1_in = 10; // Eingabe / Ausgabe vom SENSOR_1 const int sensor_1_out = 13; const int SENSOR_2 = 11; const int SENSOR_3 = 12; 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 Stift 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); } Leere Schleife () { 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 vom Ultraschallsensor messen } Motorstart erlöschen () // Funktion zum Antrieb des Motors nach spürte Abstand { int IRSL = digitalRead (SENSOR_2); // IR linken Sensor int irsR = digitalRead (SENSOR_3); // IR richtigen Sensor if (ultrasonicDistance> 10) // dieser Teil Code funktioniert auf Seitenkollisionen sogar verhindern {// Wenn kein Hindernis vor dem Roboter if ((IRSL == LOW) && (irsR == LOW)) { 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) // dieser Teil des Code funktioniert, wenn es einige {// Hindernis direkt vor dem Roboter und auch if ((IRSL == HIGH) && (irsR == LOW)) // nach Seitenkollision zu verhindern, { 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 ((IRSL == LOW) && (irsR == LOW)) { digital (motorL1, HIGH); digital (motorL2, LOW); digital (motorR1, LOW); digital (motorR2, HIGH); } } } / * --------------------------- KONTROLLE DER ULTRSONIC SENSOR ----------------- -------- * / nichtig viewDistance () // Funktion zum Abstand 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 (); } } Schritt 9: 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 mögen. Schritt 10: 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 Außensteckbrett zu platzieren. Es ist etwas kompliziert zu erklären, aber Sie werden verstehen, was auf, wenn Sie diesen Punkt in den Build erreichen werde. Jede Art und Weise, können Sie andere Techniken, die Ihre Phantasie für die Platzierung des Sensors an der Roboteranzug benutzen, 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 von geringerer Höhe sein Schritt. 11: PRÜFUNG ...... Legen Sie die Mutter und es ist Babys in Seiten die Box und machen Sie einen Testlauf ohne Räder. Keine Notwendigkeit zu sagen, dass die DTMF fehlt, ist es gerade heraus hängen. Nach der Code, den ich geschrieben habe: - 2 = Vorwärts 5 = rückwärts 4 = links abbiegen 6 = rechts andere als 1, 2, 3, 4, 5, 6 und 7 Ziffern wird der Roboter im autonomen Modus setzen Schritt 12:. Schließen der Haube Jetzt ist es Zeit, um alles, was im Inneren des Körpers Ort in der Nähe der Haube und ...... PLAY !!!!!! ALLES GUTE...... $(function() {$("a.lightbox").lightBox();});

      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......

        5 Schritt:Schritt 1: Benötigte Komponenten Schritt 2: EINFÜHRUNG Schritt 3: SCEMATIC DER MOBILTELEFON IN BETRIEB LANDROVER Schritt 4: SOFTWAREBESCHREIBUNG UND ARBEITS Schritt 5: CONSTRUCTION

        Diese Instructible wird in der Kategorie eingetragen: 13-18 der National Robotics Week Robot Contest MY URL- http://avadhutelectronics.blogspot.com/ MY [email protected] Schritt 1: Benötigte Komponenten Komponenten benötigt: IC1 - MT8870 DTMF-Decoder IC2 - ATmega16 AVR-Mikrocontroller IC3 - L293D Motortreiber IC4 - 74LS04 NOT-Gatter D1 - 1N4007 Gleichrichterdiode R1, R2 - 100-Kilo-Ohm- R3 - 330-Kilo-Ohm- R4-R8 - 10-Kilo-Ohm- C1 - 0.47μF Keramikscheibe C2, C3, C5, C6 - 22pF Keramikscheibe C4 - 0,1 uF Keramikscheibe XTAL1 - 3.57MHz Kristall XTAL2 - 12MHz Kristall S1 - Push-to-on-Schalter M1, M2 - 6 V, 50-rpm Getriebegleichstrommotor Batt. - 6 V, 4,5 Ah-Akku Schritt 2: EINFÜHRUNG EINFÜHRUNG Üblicherweise drahtlose gesteuerte Roboter verwenden HF-Schaltungen, die die Nachteile der begrenzten Arbeitsbereich, begrenzten Frequenzbereich und begrenzte Kontrolle haben. Die Verwendung eines Mobiltelefons für Robotersteuerung kann diese Einschränkungen zu überwinden. Sie bietet die Vorteile der robusten Regelung, Arbeitsbereich so groß wie die Versorgungsbereich des Dienstanbieters, ohne Interferenzen mit anderen Controllern und bis zu zwölf controls.Although das Aussehen und die Fähigkeiten der Roboter variieren stark, alle Roboter teilen sich die Merkmale einer mechanischen , bewegliche Struktur unter irgendeiner Form von Kontrolle. Die Steuerung des Roboters erfolgt in drei Phasen: Empfang, Verarbeitung und Wirkung. Im Allgemeinen sind die Lehrmeister sind Sensoren am Roboter montiert ist, wird die Verarbeitung durch den On-Board-Mikrocontroller oder Prozessor durchgeführt, und die Aufgabe (Aktion) wird mit Motoren oder mit einigen anderen Stellgliedern durchgeführt. In diesem Projekt wird der Roboter von einem Mobiltelefon, das einen Anruf auf das Mobiltelefon am Roboter angebracht macht gesteuert. Im Verlauf eines Anrufs, wenn eine Taste gedrückt wird, ein Ton, die der Knopf gedrückt wird am anderen Ende des Anrufs zu hören. Dieser Ton wird als "Dual-Tone Multifrequenz" (DTMF) Ton. Der Roboter nimmt diesen DTMF-Ton mit Hilfe des Mobiltelefons in der Roboter gestapelt. Der empfangene Ton wird durch den ATmega16 Mikrocontroller mit Hilfe von DTMF-Decoder MT8870 verarbeitet. Der Decoder decodiert die DTMF-Ton in die äquivalente Binärzahl und dieses binäre Zahl an den Mikrocontroller Mikrocontroller geschickt ist vorprogrammiert, um eine Entscheidung für jede gegebene Eingabe und gibt seine Entscheidung, Motortreiber, um die Motoren für den Vorwärts- oder Rückwärtsantrieb Bewegung oder eine Drehung. Das mobile, die einen Anruf auf das Mobiltelefon in der Roboter gestapelt macht fungiert als Fernbedienung. So ist dieses einfache Roboter-Projekt erfordert nicht den Bau von Empfänger- und Sendereinheiten. DTMF-Signalisierung wird über die Linie in den Sprachfrequenzband auf den Aufruf Vermittlungsstelle verwendet fr Telefon-Signalisierung. Die Version von DTMF für Telefon Tonwahl verwendet ist bekannt als "Berührungs Tone.'DTMF ordnet eine bestimmte Frequenz (bestehend aus zwei separatetones) zu jeder Taste, so dass es leicht durch die elektronische Schaltung identifiziert werden. Die durch den DTMF-Encoder erzeugten Signals eine direkte algebraische Summierung, in Echtzeit, der Amplituden der beiden Sinus (Cosinus) Wellen verschiedener Frequenzen, dh Taste '5' einen Ton gemacht senden, indem 1336 Hz und 770 Hz bis das andere Ende der Leitung. Die Töne und Aufgaben in einer DTMF-System sind in Tabelle I gezeigt, Schritt 3: SCEMATIC DER MOBILTELEFON IN BETRIEB LANDROVER KREISBESCHREIBUNG Feige. 1 zeigt das Blockschaltbild der Mikrocontroller-basierte mobile phoneoperated Land Rover. Die wichtigsten Bestandteile dieses rover sind eine DTMF-Decoder, Mikrocontroller und Motortreiber. Ein MT8870 Serie DTMF-Decoder zum Einsatz. Alle Arten der MT8870-Serie mit digitalen Techniken zählen zu erkennen und zu decodieren alle 16 DTMF-Ton-Paare in eine 4-Bit-Code-Ausgabe. Die eingebaute Freizeichen Sperrkreis eliminiert die Notwendigkeit für Vorfilterung. Wenn das Eingangssignal an Pin 2 (IN-) in single-ended Eingangskonfiguration gegeben ist erkannt, um wirksam zu sein, wird die richtige 4-Bit-Decodiersignal des DTMF-Ton zu Q1 (Pin 11) bis Q4 (Pin 14) Ausgänge übertragen . Tabelle II zeigt die DTMF Datenausgabetabelle MT8870. Q1 bis Q4-Ausgänge des DTMF-Decoder (IC1) an Portpins PA0 bis PA3 des ATmega16 Mikrocontroller (IC2) nach der Inversion durch N1 bis N4 angeschlossen. Der ATmega16 ist ein Low-Power, 8-bit, CMOS-Mikrocontroller auf Basis der AVR RISC-Architektur erweitert. Es bietet die folgenden Funktionen: 16 KB In-System programmierbaren Flash-Programmspeicher mit Lese-während-schreiben-Funktionen, 512 Byte EEPROM, 1kB SRAM, 32 Mehrzweck-Ein- / Ausgabe (I / O) Linien und 32 Mehrzweck- Arbeitsregister. Alle 32 Register wieder direkt an die Recheneinheit angeschlossen ist, so dass zwei unabhängige Register in einem einzigen Befehl in einem Taktzyklus ausgeführt zugegriffen werden. Die resultierende Architektur ist mehr Code effizient. Ausgänge von Port-Pins PD0 bis PD3 und PD7 des Mikrocontrollers zugeführt, um durch IN4 Eingänge IN1 und Enable-Pins (EN1 und EN2) der Motortreiber L293D, espectively, zwei Getriebegleichstrommotoren zu fahren. Schalter S1 wird zum manuellen Zurücksetzen. Der Mikrocontroller Ausgang nicht ausreichen, um die Gleichstrommotoren antreiben, so dass Stromquellen sind für die Motordrehung erforderlich. Der L293D ist ein Quad, Hochstrom-Halb-H-Treiber entwickelt, um bidirektionale Treiberströme bis zu 600 mA bei Spannungen von 4,5V bis 36V liefern. Das macht es leichter, die Gleichstrommotoren antreiben. Der L293D besteht aus vier Fahrern. Pin IN1 bis IN4 und OUT1 bis OUT4 sind Eingangs- und Ausgangspins jeweils von Fahrer-1 durch Fahrer 4. Fahrer 1 und 2, und Treiber 3 und 4 werden durch Enable-Pin 1 (EN1) und Pin 9 (EN2) aktiviert bzw. . Als Freigabeeingang EN1 (Pin 1) hoch ist, werden Fahrer 1 und 2 aktiviert und die Ausgänge entsprechend ihrer Eingänge aktiv sind. Ebenso Freigabeeingang EN2 (Pin 9) kann der Fahrer 3 und 4. Eine tatsächliche Größe wird einseitig PCB für Mobiltelefonbetriebenen Geländewagen in Fig. 4 und seine Komponentenanordnung in Fig. 5. Schritt 4: SOFTWAREBESCHREIBUNG UND ARBEITS Die Software ist in "C" geschrieben und mit Codevision AVR C-Compiler kompiliert. Das Quellprogramm wird vom Compiler in Hex-Code ed. Brennen Sie diese Hex-Code in ATmega16 AVR Mikrocontroller-Source-Programm ist gut kommentiert und leicht zu verstehen. Sind die ersten speziell für ATmega16 definierten Registernamen und die Variable zu deklarieren. Set Port A als Eingang und Port D als Ausgang. Das Programm wird für immer unter Verwendung von 'while' Schleife ausgeführt. Unter 'while' Schleife, Lese-Port A und testen Sie das empfangene Eingangs mit 'switch' Aussage. Die entsprechenden Daten werden an Port D nach der Prüfung der empfangenen Daten ausgegeben. ARBEITS Um den Roboter zu steuern, müssen Sie einen Anruf an das Mobiltelefon an den Roboter (über Kopfhörer) angeschlossen von jedem Telefon aus, das DTMF-Melodien auf die Nummerntasten sendet machen. Das Handy in der Roboter wird im Modus 'Auto-Antwort "gehalten. (Wenn das Mobil nicht über die automatische Antwortmöglichkeiten erhalten Sie das Gespräch durch 'OK' Taste auf der Rover-Handy verbunden und dann machte es in den Freisprechmodus.) So nach einem Ring, dem Mobiltelefon den Anruf annimmt. Jetzt können Sie eine beliebige Taste auf dem Mobil drücken, um Aktionen wie in Tabelle III aufgeführt durchzuführen. Die so erzeugten DTMF-Töne werden durch das Mobiltelefon in den Roboter übermittelt. Diese Töne werden an die Schaltung von dem Headset der Fed Handy. Der MT8870 decodiert das empfangene Ton und sendet die äquivalente binäre Zahl an den Mikrocontroller. Nach dem Programm in den Microcontroller, beginnt der Roboter moving.When Sie Taste "2" (binäre Äquivalent 00000010) auf Ihrem Mobiltelefon, der Mikrocontroller Ausgänge '10001001' binäre Äquivalent drücken. Port-Pins PD0, PD3 und PD7 sind hoch. Der hohe Ausstoß an PD7 der Mikrocontroller steuert den Motortreiber (L293D). Port-Pins PD0 und PD3 Antriebsmotoren M1 und M2 in Vorwärtsrichtung (nach Tabelle III). Ebenso Motoren M1 und M2 Schritt für links abbiegen, rechts abbiegen, Rückwärtsbewegung und Stopp Zustand gemäß Tabelle III. Schritt 5: CONSTRUCTION Bei der Konstruktion von Robots, ist eine große mechanische Einschränkung der Zahl gibt eine Zwei-Rad-Antrieb oder ein Allrad ive. Obwohl Vierradantrieb ist komplexer als Zweiradantrieb bietet sie mehr Drehmoment und guter Kontrolle. Zweiradantrieb, andererseits ist es sehr einfach zu konstruieren. Draufsicht auf einen Vierradgetriebenen Geländewagen ist in Abb. 3. Die in diesem Modell verwendet Chassis ist ein 10 x 18cm2 Blatt aus Parax gemacht. Motoren sind an der Unterseite dieser Platte befestigt ist, und die Schaltung ist fest auf der Oberseite des Blattes befestigt ist. Ein Mobiltelefon ist auch auf dem Blatt befestigt, wie in der Abbildung dargestellt. In dem Vierradantriebssystem werden die beiden Motoren auf einer Seite, die parallel gesteuert. So dass eine einzelne L293D-Treiber-IC kann den Rover zu fahren. Aus diesem Roboter, Perlen mit Leim dienen als Stützräder angebracht.

          4 Schritt:Schritt 1: [Video] kurze Einführung und Konfiguration von GSM-basierte Roboterfahrzeug. Schritt 2: Komponenten & Installation Schritt 3: Projektbericht dieses Moduls Schritt 4: Image-Satz dieses Moduls

          Dieses Projekt ist so konzipiert, als ein Roboterfahrzeug, das von einem Mobiltelefon gesteuert werden können zu entwickeln. DTMF-Befehle von einem Telefon an ein anderes Mobiltelefon, das auf dem Roboterfahrzeug montiert ist. Diese Befehle werden zu einem PIC-Mikrocontroller von 8-Bit-Architektur, um die Fahrzeugbewegung durch den Motor zu betreiben Schnittstelle zugeführt. Herkömmlicher Drahtlose gesteuerte Roboter verwenden Rf Schaltungen, die nur über begrenzte Arbeitsbereich, begrenzten Frequenzbereich und begrenzte Kontrolle. Die Verwendung eines Mobiltelefons für Robotersteuerung kann diese Einschränkungen zu überwinden. Es hat den Vorteil, Robust Control, Arbeitsbereich so groß ist wie die Fläche der Service Provider, keine Interferenzen mit anderen Steuerungen. Obwohl das Aussehen und die Fähigkeiten der Roboter stark variieren, All Robots Share-Funktion eines mechanischen, beweglichen Struktur unter irgendeiner Form von Kontrolle. Die Steuerung der Roboter erfolgt in drei Phasen: Wahrnehmung, Verarbeitung und Aktion. Im Allgemeinen sind die Preceptors sind Sensoren am Roboter montiert, wird die Verarbeitung durch den On-board Mikrocontroller oder Prozessor Geschehen, und die Aufgabe wird unter Verwendung von Motoren oder mit einem anderen Stellglieder. In diesem Projekt wird der Roboter auf GSM-Mobil (unter Verwendung von DTMF-Technologie) Welches ist durch Benutzer Handy gesteuert wird. . Mit Hilfe der Befehle können wir in gewünschte Richtung zu bewegen Unsere Robot wie pro unsere Anforderungen Dieses Projekt ist erweiterte Version von meinem letzten Projekt, nämlich, Wireless Funk Modul mit PIC Microcontroller.Step 1: [Video] kurze Einführung und Konfiguration von GSM- Basierend Roboterfahrzeug. In diesem Bereich ist das Video von der Arbeit Projekt eingebettet, fast jeder (minimal) erläutern Video es selbst beschrieben. zB: Drücken Sie 1 für Move / Start / Vorwärts, Drücken Sie 2 für Rückwärts, Drücken Sie 3 für Moving Right, Drücken Sie 4 für Moving Left und Drücken Sie 5 für Stop. Schritt 2: Komponenten & Installation Alle 12 Artikel anzeigen In diesem Abschnitt werden alle Komponenten mit einigen Arbeiten & Installationsimages genannt. zB: * DTMF DECODER * 8-Bit-PIC-Mikrocontroller (16F877A) * HANDYS * DIODEN * Akku (6-VOLT) * DC MOTOR * Räder * CARD BOARD * FAHRZEUG LEGS ETC. Schritt 3: Projektbericht dieses Moduls Hier bin ich die Sie mit der Projektbericht dieses Moduls. Der Projektbericht enthält alles, was im Zusammenhang mit es. Wie Arbeiten, Ckt. Grafiken, Programmiercode, Komponentenliste, Anwendungen & Other Stuff Wichtige usw. GSM Based Versatile Roboterfahrzeug mit PIC-Mikrocontroller (Report) * Projektbericht ist auf Academia gehostet. Schritt 4: Image-Satz dieses Moduls In diesem Schritt werden Sie Bild Satz von GSM basierte vielseitige Roboterfahrzeug zu finden. Alle Bilder wurden in verschiedenen Phasen der Projekt Installation übernommen und verleiht Basic, Intermediate & Advanced Einsicht zu, dass es funktioniert und Anwendungen. GSM Based Versatile Roboterfahrzeug mit PIC-Mikrocontroller-Projekt-Bilder. * Hosted on Flickr. Danke für beobachtet sie.

          Seiten: