We hadden een robot met een toepassing van metaaldetectie en toezicht dat kan worden uitgebreid tot vele andere toepassingen met succes geboekt. In principe om te bouwen van deze robot hadden we besloten om het gebruik van de auto als een chassis voor het ontvangende circuit, waarvan beweging kan worden gecontroleerd door een android app omdat slimme telefoons een belangrijke rol in ons leven spelen door zich allemaal in één apparaat met vele essentiële functies zoals Bluetooth, GPS, de versnellingsmeter die kan worden gebruikt om robots heel gemakkelijk. Vandaar, mobiele telefoon wordt gebruikt als een controlesysteem in ons project. Een modulaire benadering geven ons project hebben we ons project onderverdeeld in twee secties: zender & ontvanger. Zowel deze secties zijn gekoppeld en het uiteindelijke product werkt zeer efficiënt.
Om de robot te bouwen, moeten we de volgende onderdelen:
1. android app
2. Bluetooth-module HC05
3. Atmega 328 PU (2 ICs)
4. RF zender en ontvanger modules
5. chassis
6. gelijkstroommotoren
7. banden
8. metaaldetectie hobby circuit
9. draadloze pinhole camera
10.9V accu
Veel apps zijn beschikbaar in google play-winkel die kan worden gedownload, maar in ons project hebben we gekregen een broncode en voorkomt het met behulp van slechts 4 ontwerpresoluties: vooruit, achteruit, links en rechts. Daarnaast hadden we een stop-knop en een licht aan/uit-knop toegevoegd. De app werd ontwikkeld op basis van android studio. Een screenshot van onze app wordt weergegeven.
ZENDER SECTIE:
De verzendende eenheid bestaat uit een android app die bestaat uit de richtingen te verplaatsen en knoppen voor onder leiding van in- en uitschakelen. De signalen zijn overgebracht van het apparaat via Bluetooth te worden gedecodeerd door een microcontroller en verzonden naar de RF modules. We hebben RF modules gebruikt als een oplossing om het bereik voor een apparaat kan werken in het RF systeem; ze hoeft niet te worden in de lijn van het zicht. Met andere woorden, bestaat de transmissie-sectie uit:
· Android app
· Bluetooth-module
· Encoder IC
· RF zender
ONTVANGER SECTIE:
De gegevens die worden ontvangen door de RF-ontvanger wordt verzonden naar de IC die is gekoppeld aan de motor driver IC-decoder. De gedecodeerde output is gegeven aan de motor bestuurder IC die de motoren van de auto in de gewenste richting drijft. De ontvangende sectie van de RC auto heeft poorten waar we extra randapparaten kunnen invoeren. In dit project, hebben we twee functies geïnterfacet: een metaaldetector circuit en een draadloze pinhole camera. De ontvangende sectie bestaat uit:
· RF ontvanger
· Decoder IC
· Motor driver IC
· Gelijkstroommotoren gericht
· Metaal detector-module
Draadloze pinhole spycam
De sectie van de ontvanger is geplaatst in het chassis van het automodel die we hadden ontworpen en gemaakt met behulp van acrylplaat met dimensie 20 x 12 x 5 cm, die kan worden geopend vanuit de bovenzijde.
We hadden een draadloze pinhole camera van ebay samen met een USB-adapter om te controleren de video's genomen door de robot in laptop gekocht. Het kan worden aangesloten op TV zo goed.
Het circuit metaaldetector is gesoldeerd met de beschikbare componenten in het circuit van de hobby en die met de 9V-batterij wordt aangedreven en gecontroleerd. Dit circuit wordt vervolgens binnen het chassis samen met het RF ontvanger circuit en de camera die wordt onafhankelijk aangedreven met behulp van een andere 9V batterij geplaatst. Het ontvangende circuit van de omvat de Atmega IC en de motor driver IC om controle van de beweging van de robot. De metaaldetector circuit heeft een zoemer die klinkt wanneer de robot een metaal detecteert. Het gevoeligheidsbereik van onze metaaldetector is 1 inch.
De zender en ontvanger circuits worden weergegeven in figuur. We zullen de broncodes binnenkort voor de zender en de ontvanger Atmega ICs worden verbonden.
De toekomstige werkzaamheden van ons project kan alleen worden beperkt door onze verbeelding. Deze hoogst klantgerichte chassis is zo ontworpen dat de gebruiker gemakkelijk op delen toevoegen kan. Door het toevoegen van een infrarood- of ultrasone sensor een autonome modus kan worden geïmplementeerd en de robot zal rijden rond het verzamelen van gegevens. We kunnen ook de app lopen via wifi, zodat het verbinding met een website maken kan, hierdoor kan beveiliging werknemers om naar te kijken van meerdere robots een faciliteit rondrijden. De microfoon van de telefoon kan worden gebruikt voor het detecteren en doorgeven audio om te waarschuwen de gebruiker. Een foto-opnamemodus kan ook worden uitgevoerd zodat u beeldmateriaal kunt opslaan. Een ander voordeel van een telefoon als een IP camera, herbestemming is een kon gebruik maken van het brede scala van functies een gemiddelde smartphone zoals de lichtsensor, GPS, kompas en zelfs een flitslicht bevat. Al deze functies kunnen worden uitgevoerd in onze app.
SOFTWARECODES
ZENDER SECTIE
/*
Arduino stuurprogramma voor Android app afstandsbediening.
Deze sketch luistert naar de instructies op de seriële poort
stuurt de juiste instructies naar de RF-ontvanger via een RF zender
*/
#include
SoftwareSerial bluetooth (10, 11); deze functie wordt gebruikt om het wijzigen van de RX, TX pinnen
int const FWD = 2; van arduino tot 10e en 11e pin
int const BWD = 4;
int const RIG = 7;
int const LEF = 8;
VOID Setup {}
pinMode (FWD, uitvoer);
pinMode (BWD, uitvoer); initialiseren van de pinnen als input en output
pinMode (RIG, uitvoer);
pinMode (LEF, uitvoer);
eerste instellen rechtop vooruit, geen snelheid
digitalWrite (FWD, laag);
digitalWrite(BWD,LOW);
digitalWrite (tuig, laag); instellen van initiële waarden voor pinnen
digitalWrite (LEF, laag);
Serial.begin(9600);
Bluetooth.begin(9600); baudrate instellen
}
void loop {}
zien of er binnenkomende seriële data:
Als (bluetooth.available() > 0) {}
Lees de oudste byte in de seriële buffer:
int incomingByte = bluetooth.read();
actie afhankelijk van de instructie
Naast een bevestiging terug naar de app
schakelaar (incomingByte) {}
Case "F":
moveForward(true);
Serial.println ("Doorgaan");
breken;
Case 'R':
turnR(true);
Serial.println ("Turning right");
breken;
geval 'L':
turnL(true);
Serial.println ("draaien links");
breken;
Case "B":
moveBackward(true);
Serial.println ("achteruitgang");
breken;
geval van ':
moveStops(true);
Serial.println("stopping");
breken;
Case 'X':
Ledon(true);
Serial.println ("licht op");
breken;
Case 'Y':
Ledoff(true);
Serial.println ("licht uit");
breken;
standaard:
Als niets overeenkomt met, niets doen
breken;
}
}
}
VOID moveForward(boolean forward) {}
Booleaanse forward controles motor richting
Als (vooruit)
{
digitalWrite (FWD, hoge);
digitalWrite(BWD,LOW);
digitalWrite (tuig, laag);
digitalWrite (LEF, laag);
Serial.println ("omhoog");
}
}
VOID Ledon(boolean on) {}
Boolean leidde licht controle van bot
Als (on)
{
digitalWrite (FWD, hoge);
digitalWrite(BWD,HIGH);
digitalWrite (tuig, laag);
digitalWrite (LEF, laag);
Serial.println ("LED op");
}
}
VOID Ledoff(boolean offF) {}
Boolean leidde licht controle van bot(turning off)
Als (offF)
{
digitalWrite (FWD, hoge);
digitalWrite(BWD,HIGH);
digitalWrite (tuig, hoge);
digitalWrite (LEF, laag);
Serial.println ("LED uitschakelen");
}
}
VOID moveBackward(boolean backward) {}
Booleaanse neerwaarts besturingselementen motor richting
Als (neerwaarts)
{
digitalWrite (FWD, laag);
digitalWrite(BWD,HIGH);
digitalWrite (tuig, laag);
digitalWrite (LEF, laag);
Serial.println ("naar beneden");
}
}
VOID moveStops(boolean stops) {}
Booleaanse stop voor stoping de motor
Als (stopt)
{
digitalWrite (FWD, laag);
digitalWrite(BWD,LOW);
digitalWrite (tuig, laag);
digitalWrite (LEF, laag);
Serial.println("stops");
}
}
VOID turnR(boolean rightR) {}
Booleaanse juiste besturingselementen motor richting
Als (rightR) {}
digitalWrite (FWD, laag);
digitalWrite(BWD,LOW);
digitalWrite (tuig, hoge);
digitalWrite (LEF, laag);
Serial.println ("Going rechts");
}
}
VOID turnL(boolean rightL) {}
Booleaanse links besturingselementen motor richting
Als (rightL) {}
digitalWrite (FWD, laag);
digitalWrite(BWD,LOW);
digitalWrite (tuig, laag);
digitalWrite (LEF, hoge);
Serial.println ("Going links");
}
}
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;
ONTVANGER SECTIE
/ * Dit programma zal ontvangen in de instructies die wordt verzonden door de RF-zender en controleert de bot dienovereenkomstig * /
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, INPUT);
pinMode (P1, INPUT);
pinMode (P2, INPUT);
pinMode (P3, INPUT);
pinMode (P4, uitvoer);
pinMode (P5, uitvoer);
pinMode (P6, uitvoer);
pinMode (P7, uitvoer);
pinMode (P8, uitvoer);
pinMode (P9, uitvoer);
pinMode (P10, uitvoer);
pinMode (P11, uitvoer); initialiseren als input en output
pinMode (P12, uitvoer);
digitalWrite (PP, laag);
digitalWrite (P1, laag);
digitalWrite (P2, laag);
digitalWrite (P3, laag);
digitalWrite (P4, laag);
digitalWrite (P5, laag); instellen van initiële waarden van pins
digitalWrite (P6, laag);
digitalWrite (P7, laag);
digitalWrite (P8, laag);
digitalWrite (P9, laag);
digitalWrite (P10, laag);
digitalWrite (P11, laag);
digitalWrite (P12, laag);
}
void loop {}
int C1 = digitalRead(PP);
int C2 = digitalRead(P1);
int C3 = digitalRead(P2); het lezen van gegevens die zijn verkregen door RF ontvanger
int C4 = digitalRead(P3);
int C5 = digitalRead(P9);
Als (C1 == HIGH & & C2 == LOW) {}
if(C3==low) {}
digitalWrite (P4, hoge);
digitalWrite (P5, laag); voorwaarde voor voorwaartse beweging
digitalWrite (P6, hoge);
digitalWrite (P7, laag);
}
}
Als (C2 == HIGH & & C1 == LOW) {}
if(C3==low) {}
digitalWrite (P4, laag);
digitalWrite (P5, hoge); achteruit
digitalWrite (P6, laag);
digitalWrite (P7, hoge);
}
}
Als (C3 == HIGH & & C2 == LOW) {}
if(C1==low) {}
digitalWrite (P4, hoge);
digitalWrite (P5, laag);
digitalWrite (P6, laag); rechts
digitalWrite (P7, hoge);
}
}
Als (C4 == HIGH & & C3 == LOW) {}
Als (C2 == LOW & & C1 == LOW) {}
digitalWrite (P4, laag);
digitalWrite (P5, hoge);
digitalWrite (P6, hoge); links
digitalWrite (P7, laag);
}
}
Als (C1 == HIGH & & C2 == HIGH) {}
Als (C3 == LOW & & C4 == laag)
{
digitalWrite (P8, hoge); LED aan
}
}
Als (C1 == HIGH & & C2 == HIGH) {}
if(C3==High
& & C4 == LOW) {}
digitalWrite (P8, laag); opende
}