Wir hatten erfolgreich gemacht, einen Roboter mit einer Anwendung der Metalldetektion und Überwachung, die für viele andere Anwendungen erweitert werden kann. Im Grunde genommen um diesen Roboter zu bauen hatten wir beschlossen, Auto als Chassis für den empfangenden Stromkreis benutzen deren Bewegung durch eine android-app gesteuert werden kann, denn Smartphones spielen eine wichtige Rolle in unserem Leben immer alles in einem Gerät mit vielen grundlegenden Funktionen wie Bluetooth, GPS, Beschleunigungssensor, die Roboter sehr leicht zu steuern verwendet werden können. Handy wird daher als ein Steuerungssystem in unser Projekt verwendet. Einen modularen Ansatz für unser Projekt zu geben haben wir unser Projekt in zwei Abschnitte unterteilt: Sender und Empfänger. Sowohl diese Abschnitte wurden gekoppelt und das fertige Produkt arbeitet sehr effizient.
Um den Roboter zu bauen, benötigen wir die folgenden Komponenten:
1. android app
2. Bluetooth-Modul HC05
3. Atmega 328 PU (2 ICs)
4. RF-Sender und Empfänger Module
(5) chassis
6. DC-Motoren
7. Reifen
8. Metall Erkennungsschaltung hobby
9. wireless Pinhole-Kamera
10.9V Akku
Viele apps gibt es im Google Playstore heruntergeladen werden kann, aber in unserem Projekt haben wir ein Source-Code und veränderten erhalten sie mit nur 4 Bewegungen: vorwärts, rückwärts, rechts und links. Darüber hinaus hatten wir eine Stopp-Taste und ein Licht on/off-Taste hinzugefügt. Die app wurde entwickelt mit android Studio. Ein Screenshot unserer App wird angezeigt.
SENDER-ABSCHNITT:
Die Sendeeinheit besteht aus einer android app, die Schaltflächen für led-ein- und ausschalten und besteht aus den Richtungen verschoben werden. Die Signale werden vom Gerät über Bluetooth mit einem Mikrocontroller decodiert werden und geschickt, um die RF-Module. Wir haben HF-Module als Lösung eingesetzt, zur Erhöhung der Reichweite für ein Gerät in RF-System zu arbeiten; Sie brauchen nicht in der Sichtlinie befinden. Das heißt, bestehend der Abschnitt Übertragung aus:
· Android-app
· Bluetooth-Modul
· Encoder IC
· HF-Sender
EMPFÄNGER-ABSCHNITT:
Vom Empfänger empfangenen Daten erhält den Decoder IC die Motortreiber IC gekoppelt ist. Die decodierte Ausgabe erhält die motor-Treiber-ICs, die Motoren des Fahrzeugs in die gewünschte Richtung fährt. Die empfangende Teil der RC Auto verfügt über Anschlüsse wo wir zusätzliche Peripheriegeräte einführen können. In diesem Projekt haben wir zwei Eigenschaften verbunden: ein Metall-Detektor-Schaltung und einer Wireless-Lochkamera. Der empfangende Teil besteht aus:
· RF-Empfänger
· Decoder IC
· Motor-Treiber-IC
· Gleichstrommotoren ausgerichtet
· Metall-Detektormodul
Drahtlose Spion Lochkamera
Abschnitt Empfänger liegt im Chassis das Fahrzeugmodell, die wir hatten entworfen und hergestellt mit Acrylglasscheibe mit Dimension 20 x 12 x 5 cm, die von der Oberseite geöffnet werden kann.
Wir hatten eine Wireless-Lochkamera von Ebay zusammen mit einem USB-Adapter, die Videos, die vom Roboter im Laptop zu überwachen gekauft. Es kann auch an Fernseher angeschlossen werden.
Die Metall-Detektor-Schaltung ist mit den verfügbaren Komponenten in der Hobby-Schaltung gelötet und mit 9V Batterie angetrieben und überprüft. Dann ist diese Schaltung im Inneren des Gehäuses zusammen mit dem RF-Empfängerschaltung und die Kamera, die unabhängig voneinander betrieben wird mit einem anderen 9V Batterie gelegt. Die empfangenden Stromkreis von der umfasst die Atmega IC und der Motortreiber IC um die Bewegung des Roboters zu steuern. Die Metall-Detektor-Schaltung hat ein akustisches Signal, das ertönt, wenn der Roboter eine Metall erkennt. Der Empfindlichkeitsbereich von unserer Metall-Detektor ist 1 Zoll.
Die Sender und Empfänger Schaltungen sind in Abbildung dargestellt. Wir werde die Quellcodes bald für Sender und Empfänger Atmega ICs anbringen.
Die künftige Arbeit unseres Projektes kann nur durch unsere Vorstellungskraft begrenzt werden. Diese hochgradig anpassbare Chassis wurde konstruiert, so dass der Benutzer leicht auf Teile hinzufügen kann. Durch das Hinzufügen ein Infrarot- oder Ultraschall Sensor einen autonomen Modus implementiert werden kann und der Roboter fahren um das Sammeln von Daten. Wir führen auch kann die app über Wifi so dass es mit einer Website herstellen kann, erlaubt dies Sicherheitsdienste, mehrere Roboter fahren um eine Anlage zu sehen. Mikrofon des Telefons lässt sich erkennen und übertragen von Audio-, um den Benutzer zu warnen. Ein Bild-Capture-Modus könnte auch umgesetzt werden, damit Sie Filmmaterial speichern können. Ein weiterer Vorteil der Umnutzung einer Telefons als eine IP-Kamera ist eine könnte nutzen die breite Palette an Funktionen durchschnittlich Smartphone wie Licht-Sensor, GPS, Kompass und sogar ein grelles Licht enthält. Alle diese Funktionen könnten in unsere app implementiert.
SOFTWARE-CODES
SENDER-ABSCHNITT
/*
Arduino-Treiber für Android app Remote Control.
Diese Skizze hört Anweisungen über die serielle Schnittstelle
dann sendet die entsprechenden Anweisungen an den RF-Empfänger durch eine HF-Sender
*/
#include
SoftwareSerial Bluetooth (10, 11); Diese Funktion dient zum Ändern der RX, TX Pins
Int const FWD = 2; der Arduino, 10. und 11. pin
Int const BWD = 4;
Int const RIG = 7;
Int const LEF = 8;
void setup() {}
PinMode (FWD, OUTPUT);
PinMode (BWD, OUTPUT); Initialisieren von Pins als Eingang und Ausgang
PinMode (RIG, OUTPUT);
PinMode (LEF, OUTPUT);
Initial eingerichtet, geradlinig, keine Geschwindigkeit
DigitalWrite (FWD, LOW);
digitalWrite(BWD,LOW);
DigitalWrite (RIG, LOW); Einstellung der Anfangswerte für Stifte
DigitalWrite (LEF, LOW);
Serial.Begin(9600);
Bluetooth.Begin(9600); Einstellung der baudrate
}
void loop() {}
festzustellen, ob eingehende serielle Daten:
Wenn (bluetooth.available() > 0) {}
das älteste Byte in den seriellen Puffer zu lesen:
Int IncomingByte = bluetooth.read();
Je nach Anweisung Aktion
sowie eine Versandbestätigung zurück zur app
Schalter (IncomingByte) {}
Fall "F":
moveForward(true);
Serial.println ("vorwärts");
zu brechen;
Fall "R":
turnR(true);
Serial.println ("rechts");
zu brechen;
Fall "L":
turnL(true);
Serial.println ("Linksabbiegen");
zu brechen;
Fall 'B':
moveBackward(true);
Serial.println ("rückwärts");
zu brechen;
Case ":
moveStops(true);
Serial.println("stopping");
zu brechen;
Fall 'X':
LEDON(true);
Serial.println ("Licht auf");
zu brechen;
Case 'Y':
LEDOFF(true);
Serial.println ("Licht aus");
zu brechen;
Standard:
Wenn nichts passt, nichts tun
zu brechen;
}
}
}
void MoveForward(boolean forward) {}
Boolesche Fussrastenanlage Motordrehrichtung
Wenn (vorwärts)
{
DigitalWrite (FWD, HIGH);
digitalWrite(BWD,LOW);
DigitalWrite (RIG, LOW);
DigitalWrite (LEF, LOW);
Serial.println ("Going UP");
}
}
void Ledon(boolean on) {}
Boolesche Operation führte Lichtsteuerung von bot
Wenn Sie (an)
{
DigitalWrite (FWD, HIGH);
digitalWrite(BWD,HIGH);
DigitalWrite (RIG, LOW);
DigitalWrite (LEF, LOW);
Serial.println ("LED");
}
}
void Ledoff(boolean offF) {}
Boolesche Operation führte Lichtsteuerung der bot(turning off)
Wenn (OffF)
{
DigitalWrite (FWD, HIGH);
digitalWrite(BWD,HIGH);
DigitalWrite (RIG, HIGH);
DigitalWrite (LEF, LOW);
Serial.println ("LED aus");
}
}
void MoveBackward(boolean backward) {}
Boolesche rückwärts Steuerelemente Motordrehrichtung
Wenn (rückwärts)
{
DigitalWrite (FWD, LOW);
digitalWrite(BWD,HIGH);
DigitalWrite (RIG, LOW);
DigitalWrite (LEF, LOW);
Serial.println ("Going DOWN");
}
}
void MoveStops(boolean stops) {}
Boolesche Stop für den Motor stoppen
Wenn (nicht mehr)
{
DigitalWrite (FWD, LOW);
digitalWrite(BWD,LOW);
DigitalWrite (RIG, LOW);
DigitalWrite (LEF, LOW);
Serial.println("Stops");
}
}
void TurnR(boolean rightR) {}
Boolesche richtigen Kontrollen Motordrehrichtung
Wenn (RightR) {}
DigitalWrite (FWD, LOW);
digitalWrite(BWD,LOW);
DigitalWrite (RIG, HIGH);
DigitalWrite (LEF, LOW);
Serial.println ("gehen rechts");
}
}
void TurnL(boolean rightL) {}
Boolesche linken Steuerelemente Motordrehrichtung
Wenn (RightL) {}
DigitalWrite (FWD, LOW);
digitalWrite(BWD,LOW);
DigitalWrite (RIG, LOW);
DigitalWrite (LEF, HIGH);
Serial.println ("Going LEFT");
}
}
Int const PP = 0;
Int const P1 = 1;
Int const P2 = 2;
Int const P3 = 3;
Int const P4 = 4;
Int const P5 = 5;
Int const P6 = 6;
Int const P7 = 7;
Int const P8 = 8;
Int const P9 = 9;
Int const P10 = 10;
Int const P11 = 11;
Int const P12 = 12;
Int const P13 = 13;
EMPFÄNGER-ABSCHNITT
/ * Dieses Programm erhalten die Anweisungen, die per HF-Sender und regelt den Bot entsprechend * /
Int const PP = 0;
Int const P1 = 1;
Int const P2 = 2;
Int const P3 = 3;
Int const P4 = 4;
Int const P5 = 5;
Int const P6 = 6;
Int const P7 = 7;
Int const P8 = 8;
Int const P9 = 9;
Int const P10 = 10;
Int const P11 = 11;
Int const P12 = 12;
Int const P13 = 13;
void setup() {}
PinMode (PP, Eingabe);
PinMode (P1, Eingabe);
PinMode (P2, Eingabe);
PinMode (P3, Eingabe);
PinMode (P4, OUTPUT);
PinMode (P5, OUTPUT);
PinMode (P6, OUTPUT);
PinMode (P7, OUTPUT);
PinMode (P8, OUTPUT);
PinMode (P9, OUTPUT);
PinMode (P10, OUTPUT);
PinMode (P11, OUTPUT); als Eingang und Ausgang initialisieren
PinMode (P12, OUTPUT);
DigitalWrite (PP, LOW);
DigitalWrite (P1, LOW);
DigitalWrite (P2, LOW);
DigitalWrite (P3, LOW);
DigitalWrite (P4, LOW);
DigitalWrite (P5, LOW); Einstellung Anfangswerte der pins
DigitalWrite (P6, LOW);
DigitalWrite (P7, LOW);
DigitalWrite (P8, LOW);
DigitalWrite (P9, LOW);
DigitalWrite (P10, LOW);
DigitalWrite (P11, LOW);
DigitalWrite (P12, LOW);
}
void loop() {}
Int C1 = digitalRead(PP);
Int C2 = digitalRead(P1);
Int C3 = digitalRead(P2); Lesen von Daten durch RF-Empfänger erhalten
Int C4 = digitalRead(P3);
Int C5 = digitalRead(P9);
Wenn (C1 == HIGH & & C2 == LOW) {}
{If(C3==Low)}
DigitalWrite (P4, HIGH);
DigitalWrite (P5, LOW); Voraussetzung für die Vorwärtsbewegung
DigitalWrite (P6, HIGH);
DigitalWrite (P7, LOW);
}
}
Wenn (C2 == HIGH & & C1 == LOW) {}
{If(C3==Low)}
DigitalWrite (P4, LOW);
DigitalWrite (P5, HIGH); rückwärts
DigitalWrite (P6, LOW);
DigitalWrite (P7, HIGH);
}
}
Wenn (C3 == HIGH & & C2 == LOW) {}
{If(C1==Low)}
DigitalWrite (P4, HIGH);
DigitalWrite (P5, LOW);
DigitalWrite (P6, LOW); rechts
DigitalWrite (P7, HIGH);
}
}
Wenn (C4 == HIGH & & C3 == LOW) {}
Wenn (C2 == LOW & & C1 == LOW) {}
DigitalWrite (P4, LOW);
DigitalWrite (P5, HIGH);
DigitalWrite (P6, HIGH); Links
DigitalWrite (P7, LOW);
}
}
Wenn (C1 == HIGH & & C2 == HIGH) {}
Wenn (C3 == LOW & & C4 == LOW)
{
DigitalWrite (P8, HIGH); LED an
}
}
Wenn (C1 == HIGH & & C2 == HIGH) {}
If(C3==High
& & C4 == LOW) {}
DigitalWrite (P8, LOW); LED aus
}