Internet-kontrollerade RC bil (14 / 31 steg)
Steg 14: Program
Konfigurera wifi kamera kan vara en Instructable åt sig själv, och jag kommer inte att gå över det här. Som sagt, det kommer med en ganska grundlig instruktionsbok för att få det konfigurerade. För att få igång, bara Följ med instruktionsboken som följde med kameran.
Vad jag kommer att gå över är den Arduino programmet.
Lyckligtvis, det finns inte mycket att täcka. Arduinoen används för att ladda en webbplats på specifik IP-adress. När du klickar på länkar på denna webbplats, skickas för HTTP-begäranden tillbaka till Arduino. Dessa begäranden bearbetas sedan av Arduino att utlösa reläer ansluten till bilens fjärrkontroll. När reläerna är växlas högt, fjärrkontrollen aktiveras och bilen rör sig runt. Du kan se där den rör sig genom att läsa webbgränssnitt för IP-kameran i bakgrunden.
För att förbereda Arduino, helt enkelt programmera det med följande kod:
/*********************************
Internet kontrollerad RC bil
För mer information besök:
< en href = " >
Koden är offentlig
***********************************/
inkludera nödvändiga bibliotek
#include < SPI.h >
#include < Ethernet.h >
Mac-adress ändras inte
byte [mac] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
ändra detta till din IP-adress
Detta kan hittas genom att köra programmet
Fil -> exempel på Ethernet -> DhcpAddressPrinter ->
IP-adress ip (192,168,2, 7);
Starta servern Ethernet-biblioteket
med IP-adress och port vill du använda
(port 80 är standard för HTTP):
EthernetServer server(80);
Sträng webClickRequest;
void setup() {
initiera digital PIN-koden som en utgång.
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
Öppna seriell kommunikation och vänta på port att öppna:
Serial.BEGIN(9600);
tag (!. Serial) {
; vänta för seriell port att ansluta. Behövs för Leonardo endast
}
Starta Ethernet-anslutningen och servern:
Ethernet.BEGIN (mac, ip);
Server.BEGIN();
Serial.Print ("servern är på");
Serial.println(Ethernet.localIP());
}
void loop() {
Skapa en klientanslutning
EthernetClient klient = server.available();
om (klient) {
samtidigt (client.connected()) {
om (client.available()) {
char c = client.read();
Läs inkommande HTTP-begäran
om (webClickRequest.length() < 100) {
lagra begäran till en sträng
webClickRequest += c;
}
Kontrollera om begäran har kommit till ett slut
om (c == "\n") {
Börja Rita hemsida med
med hjälp av grundläggande HTML-formatering med några CSS
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println();
client.println ("< HTML >");
client.println ("< HEAD >");
client.println ("< TITLE > Internet kontrollerad RC bil </TITLE >");
client.println ("< STYLE >");
client.println ("body {marginal: 50px 0px; padding: 0px; text-align: center;} ");
client.println ("h1 {text-align: center; font-family: \ "Trebuchet MS\", Arial, Helvetica, sans-serif; font-size: 24px;} ");
client.println ("en {text-decoration: none; bredd: 75; höjd: 50px; gränsen-färg: svart; font-family: \ "Trebuchet MS\", Arial, Helvetica, sans-serif; stoppning: 6px; bakgrundsfärg: #aaaaaa; text-align: center; border-radius: 10px 10px 10px; font-size: 24px;} ");
client.println ("en: link {färg: vit;}");
client.println ("en: besökte {färg: vit;}");
client.println ("en: hover {color: red;}");
client.println ("en: aktiv {färg: vit;}");
client.println ("</stil >");
client.println ("</HEAD >");
client.println ("< BODY >");
client.println ("< H1 > Internet kontrollerad RC bil </H1 >");
client.println ("< br/>");
client.println ("< br/>");
client.println ("< en href = \" /? left\ "\" > vänster < /a > ");
client.println("");
client.println ("< en href = \" /? forward\ "\" > < /a > framåt ");
client.println("");
client.println ("< en href = \" /? right\ "\" > < /a > rätt ");
client.println ("< br/>");
client.println ("< br/>");
client.println ("< br/>");
client.println ("< en href = \" /? backleft\ "\" > tillbaka vänster < /a > ");
client.println("");
client.println ("< en href = \" /? back\ "\" > tillbaka < /a > ");
client.println("");
client.println ("< en href = \" /? backright\ "\" > tillbaka rätt < /a > ");
client.println ("</kropp >");
client.println ("</HTML >");
Stoppa lastning webbplats
Delay(1);
client.stop();
Kontrollera för att se om något av kommandona enhet har skickats
från webbsidan till Arduino
IF(webClickRequest.indexOf("?left") > 0) {
Serial.println("Hello");
Left();
Delay(1000);
Brake();
}
annat if(webClickRequest.indexOf("?forward") > 0) {
Forward();
Delay(1000);
Brake();
}
annat if(webClickRequest.indexOf("?right") > 0) {
Right();
Delay(1000);
Brake();
}
annat if(webClickRequest.indexOf("?backleft") > 0) {
Left();
Reverse();
Delay(1000);
Brake();
}
annat if(webClickRequest.indexOf("?back") > 0) {
Reverse();
Delay(1000);
Brake();
}
annat if(webClickRequest.indexOf("?backright") > 0) {
Right();
Reverse();
Delay(1000);
Brake();
}
Rensa strängen för nya inkommande data
webClickRequest = "";
}
}
}
}
}
enheten fungerar
här ner
{Ogiltig reverse()
digitalWrite (4, låg).
digitalWrite 5, hög,
}
void forward() {
digitalWrite (4, hög).
digitalWrite (5, låg).
}
void right() {
digitalWrite (6, hög).
digitalWrite (7, låg).
}
void left() {
digitalWrite (6, låg).
digitalWrite (7, hög).
}
void brake() {
digitalWrite (4, låg).
digitalWrite (5, låg).
digitalWrite (6, låg).
digitalWrite (7, låg).
}