Arduino fristående web aktiverat bell
Med lite PHP och (om du vill) vissa jQuery på någon webbplats, kan du göra denna klocka ring när en viss åtgärd utförs.
Denna Arduino stack är wifi; När den är konfigurerad, kan du helt enkelt driva den från en 9v DC försörjning. Det fungerar även när drivs via USB-kontakten med en standard USB-laddare; Jag har testat det med en Amazon laddare avsedd för Kindle som fungerar bra.
Jag använde:
En Ardunio Uno från eBay, om £18
En WiFly sköld av Sparkfun, från eBay, om £23 (som var billigt, de är normalt mer än så). Om du köper en, Observera att du måste löda vissa header pins på styrelsen.
A projekt styrelse (som är den plast blad allt fixas till) från den lysande Oomlaut
Vissa hoppare ledningar
En lång cat5 kabel, att placera servo och bell en bra bit från kontrollstyrelsen
En standard Acoms servo från eBay (ca £5)
En 9v strömförsörjning från Maplin (£10)
En liten mässing klocka (från min inlaws, utan kostnad!)
Detta kan naturligtvis göras med en Ethernet-shield eller en ethernet aktiverade Arduino; skissen skulle vara lite annorlunda i detta fall.
Klockan är ansluten till servo med ett gem; Detta innebär att vi inte behöver flytta servo arm mycket. Flexibiliteten i gemet orsakar klockan att ringa fint. Det innebär också sätta en klocka på kan hänga ordentligt, vilket det måste i detta fall.
För närvarande skissa är inte perfekt. Stacken tar några att starta ibland; det svarar inte alltid på förfrågningar.
Här är skissen. Observera att min setup inte kräver inställningen för IP-adressdetaljer; Jag programmerade min router för att tilldela alltid samma IP adress av DHCP.
webserver skiss #include "WiFly.h" Servo myservo; skapa objekt för att styra en servo servo ////////////////////// void setup() { pinMode (2, utgång); PIN valt att styra Aktivera seriella print SpiSerial.begin(); avsluta CMD läge om inte redan har gjort sätta i CMD läge Aktivera DHCP tillstånd att fastställa Ange lösenfrasen Ange lokal port Inaktivera * Hej * standardmeddelandet på Anslut gå med wifi-nätverk avsluta CMD Serial.println ("Starta server"); } void loop() { nu produktionen HTML-data huvud Delay(1);
baserat på Zoomkat koden från Arduino forum
#include "Servo.h"
#include "SPI.h"
Server server(80); Serverport
Sträng readString; skapa readString klass
myservo.attach(2); PIN-koden för servo kontroll
myservo.write(0); Ange inledande servo position om så önskas
Serial.BEGIN(9600);
Serial.println("Started");
SpiSerial.println("");
SpiSerial.println("exit");
Serial.println ("lämnat CMD mode");
Delay(1000);
SpiSerial.print("$$$");
Serial.println ("in i CMD mode");
Delay(1000);
SpiSerial.println "set ip dhcp (1");
Serial.println ("ange DHCP");
Delay(1000);
SpiSerial.println ("Ange w en 1");
Serial.println ("Set godkännande nivå").
Delay(1000);
SpiSerial.println ("Ange WLAN-nyckel [Ange din WLAN nyckel här, ingen parentes]");
Serial.println ("Ange WLAN-key");
Delay(1000);
SpiSerial.println set ("jag l 80");
Serial.println ("Set port");
Delay(1000);
SpiSerial.println ("set comm remote 0");
Serial.println ("Set comm remote 0");
Delay(1000);
SpiSerial.println ("join [Ange SSID här, ingen parentes]");
Serial.println ("Join nät").
Delay(2000);
SpiSerial.println("exit");
Serial.println ("spännande SpiSerial");
Delay(3000);
Server.BEGIN();
Skapa en klientanslutning
Klienten klienten = server.available();
om (klient) {
Serial.println ("klient ansluten");
samtidigt (client.connected()) {
om (client.available()) {
char c = client.read();
Läs röding av char HTTP-begäran
om (readString.length() < 100) {
lagra tecken till sträng
readString += c;
}
om HTTP-begäran har avslutats
om (c == "\n") {
Serial.println ("HTTP request slutade");
Serial.Print ("readString =");
Serial.println(readString); skriva ut till seriell monitor för felsökning
client.println ("HTTP/1.1 200 OK"); Skicka ny sida
client.println ("Content-Type: text/html");
client.println();
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("OK");
client.println("");
client.println("");
stoppa klienten
client.stop();
Serial.println ("stoppad klienten");
kontroll arduino pin
IF(readString.indexOf("w") > 0) //checks för w
{
Serial.println ("w hittade");
myservo.write(40);
Delay(200);
myservo.write(0);
Delay(1000);
myservo.write(40);
Delay(200);
myservo.write(0);
}
IF(readString.indexOf("b") > 0) //checks för b
{
Serial.println "b hittade".
myservo.write(40);
Delay(200);
myservo.write(0);
}
Rensa sträng för nästa Läs
readString = "";
Serial.println ("Cleared readString");
} / / end om HTTP-förfrågan avslutas
} / / end om klienten tillgänglig
} / / end om klienten är ansluten
} / / end om klienten
} / / end loop
Jag använder stift 2 för servo kontroll; Du kan använda någon pin men vara försiktig med att använda några stift som används för något annat på WiFly, Ethernet eller andra sköld som du kan använda.
Testa inställningarna genom att ansluta USB-kabeln till datorn (utan servo ansluten, om du inte är säker på att det brukar blåsa USB säkring i din maskin - det fungerar OK för mig men inte alla datorer har förmågan att driva en server) och börja seriell bildskärmen för att kontrollera din stack ansluter till det trådlösa nätverket och registrerar klientanslutningar.
Om den gör det, ansluta den till en strömkälla och ansluta till servern.
Du kan utlösa klockan genom att ange IP-adress i en webbläsare som denna (där xx.xx.xx.xx ersättas med IP-adressen till stacken):
http://xx.xx.xx.xx/?b
(ringer klockan en gång)
eller
http://xx.xx.xx.xx/?w
(ringer klockan två gånger)
Om du anger adressen med ingenting efter IP-adressen, ringer stacken inte klockan.
Ställ in klockan ringa när särskilda sidor nås på en webbplats, behöver du lite PHP och jQuery färdigheter. Här är vad jag gjorde:
1) vidarebefordrade port 80 på min router till privata IP Arduino stack på min interna nätverk
2) skapade en php-fil som heter ding.php
$ch=curl_init();
curl_setopt ($ch, CURLOPT_URL, "http: / / [min WAN IP-adress] /? w');
curl_setopt($CH,CURLOPT_CONNECTTIMEOUT,5);
ob_start();
curl_exec ($ch);
ob_end_clean();
curl_close($CH);
? >
3) kallas den här filen med hjälp av jQuery på sidan jag övervakning:
$.get("ding.php");
(Du kommer behöva lägga jQuery till din sida också).
Göra det på detta sätt innebär ingen upptäcker din WAN IP-adress. Inte det viktiga, men fortfarande, vissa människor gillar för att hålla deras tyst!
Min setup kan nås på följande URL. Om du klickar på den, ska du ringa en liten mässing klocka i min julgran! Sidan kommer inte Visa något, men klockan ringer. Ta en titt på videon för att se vad som händer när du gör.
http://Ding.net84.net/Ding.php
Video: