Met een beetje PHP en (desgewenst) sommige jQuery op een website, kunt u deze bell ring wanneer een specifieke actie wordt uitgevoerd.
Deze stack Arduino is wifi; Zodra het zijn geconfigureerd, kunt u het gewoon stroom hetstopcontact een DC 9v. Het werkt ook wanneer gevoed via de USB-aansluiting met behulp van een standaard USB-oplader; Ik heb het getest met een lader van de Amazon ontworpen voor de Kindle die prima werkt.
Ik gebruikte:
Een Ardunio Uno van eBay, over £18
Een WiFly schild van Sparkfun, van eBay, over £23 (die was goedkoop; ze zijn doorgaans meer dan dat). Als je een koopt, moet u er rekening mee houden dat u moeten zult om te solderen sommige kop pinnen op het bord.
A project board (dat is het plastic vel alles aangepast aan) van de briljante Oomlaut
Wat jumper draadjes
Een lengte van Cat5-kabel, positie van de servo en bell een goede afstand van de control board
Een standaard Acoms servo van eBay (ongeveer £5)
Een 9v-voeding van Maplin (£10)
Een koperen klokje (van mijn inlaws, geen kosten!)
Dit kan uiteraard gebeuren met een ethernet-shield of een ethernet enabled Arduino; de schets zou in dit geval een beetje anders zijn.
De klok is verbonden met de servo met behulp van een paperclip; Dit betekent dat we niet hoeven te verplaatsen de servo arm veel. De flexibiliteit van de paperclip zorgt ervoor dat de klok te bellen mooi. Het betekent ook dat de bel kunt hangen goed, die het moet in dit geval.
Op dit moment de schets is niet perfect. De stack neemt sommige opnieuw starten soms; het reageren niet altijd op aanvragen.
Hier is de schets. Merk op dat mijn setup niet de instelling van de IP-adresgegevens vereist; Ik mijn router altijd hetzelfde IP-adres via DHCP toewijzen geprogrammeerd.
schets van de webserver #include "WiFly.h" Servo myservo; maken van servo-object om te bepalen van een servo ////////////////////// VOID Setup {} pinMode (2, OUTPUT); PIN geselecteerd besturingselement seriële gegevens afdrukken inschakelen SpiSerial.begin(); DHCP inschakelen niveau van machtiging instellen instellen wachtwoord Join wifi-netwerk CMD modus afsluit } void loop {}
gebaseerd op Zoomkat code van Arduino forums
#include "Servo.h"
#include "SPI.h"
Server server(80); Serverpoort
String readString; readString klasse maken
myservo.attach(2); de pin voor de servo-control
myservo.write(0); eerste servo positie instellen indien gewenst
Serial.begin(9600);
Serial.println("Started");
CMD modus afsluit, indien nog niet verricht
SpiSerial.println("");
SpiSerial.println("exit");
Serial.println ('verlaten CMD modus');
delay(1000);
ingesteld in CMD mode
SpiSerial.print("$$$");
Serial.println ("in CMD mode");
delay(1000);
SpiSerial.println ("set ip dhcp 1");
Serial.println ("Set DHCP");
delay(1000);
SpiSerial.println ("instellen van w een 1");
Serial.println ("Set vergunning niveau");
delay(1000);
SpiSerial.println ("set wlan sleutel [Voer uw WLAN sleutel hier, zonder vierkante haken]");
Serial.println ("instellen WLAN key");
delay(1000);
set LokalePoort
SpiSerial.println stel ("ik l 80");
Serial.println ("Set port");
delay(1000);
uitschakelen * HELLO * standaardbericht op verbinding
SpiSerial.println ("set comm externe 0");
Serial.println ("Set comm externe 0");
delay(1000);
SpiSerial.println ("join [Voer uw SSID hier, zonder vierkante haken]");
Serial.println ("Join network");
delay(2000);
SpiSerial.println("exit");
Serial.println ("afsluiten SpiSerial");
delay(3000);
Serial.println ("start server");
server.begin();
Een clientverbinding maken
Cliënt = server.available();
Als (client) {}
Serial.println ("Client verbonden");
terwijl (client.connected()) {}
Als (client.available()) {}
char c = client.read();
lezen van tekens door voor HTTP-verzoek
Als (readString.length() < 100) {}
Winkel tekens naar tekenreeks
readString += c;
}
Als HTTP-aanvraag is beëindigd
Als (c == '\n') {}
Serial.println ("HTTP-verzoek eindigde");
Serial.Print ("readString =");
Serial.println(readString); afdrukken op seriële monitor voor foutopsporing
nu output HTML-gegevens header
client.println ("HTTP/1.1 200 OK"); nieuwe pagina verzenden
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("");
delay(1);
stoppen client
client.stop();
Serial.println ("gestopt client");
controle arduino pin
if(readString.indexOf("w") > 0) //checks voor w
{
Serial.println ("w gevonden");
myservo.write(40);
delay(200);
myservo.write(0);
delay(1000);
myservo.write(40);
delay(200);
myservo.write(0);
}
if(readString.indexOf("b") > 0) //checks voor b
{
Serial.println "b gevonden";
myservo.write(40);
delay(200);
myservo.write(0);
}
ontruimen van tekenreeks voor volgende lezen
readString = "";
Serial.println ("uitgeschakeld readString");
} / / end als HTTP-aanvraag wordt beëindigd
} / / end als client beschikbaar
} / / end als client verbonden
} / / end als client
} / / einde lus
Ik ben met behulp van pin 2 voor de servo-control; u kunt gebruik maken van een pin maar wees voorzichtig niet te gebruiken op alle pinnen die worden gebruikt voor iets anders op de WiFly, Ethernet of elke andere shield gebruikt u mogelijk.
Test de installatie door het aansluiten van de USB-kabel op uw machine (zonder de servo verbonden, tenzij u zeker weet dat het gewoon klap de USB zekering in uw machine - het werkt OK voor mij maar niet alle computers beschikken over de mogelijkheid voor het aandrijven van een server) en start de seriële monitor om te controleren uw stapel verbonden met het draadloze netwerk en registreert clientverbindingen.
Als dat zo is, sluit deze aan een voeding en verbinding maken met de server.
U kunt de Bel activeren door het invoeren van het IP-adres in een browser uitzien (waar xx.xx.xx.xx is vervangen door het IP-adres van de stack):
http://xx.xx.xx.xx/?b
(de klok eenmaal ringen)
of
http://xx.xx.xx.xx/?w
(ringen de Bel tweemaal)
Als u het adres met niets na het IP-adres invoert, zal de stack niet de bel rinkelen.
Als u wilt instellen van de klok te bellen wanneer bepaalde pagina's op een website zijn geopend, moet u enige kennis van PHP en jQuery. Hier is wat ik deed:
1) doorgestuurde poort 80 op mijn router naar de privé IP adres van de Arduino stapel op mijn interne netwerk
2) gemaakt van een php bestand met de naam ding.php
$ch=curl_init();
curl_setopt ($ch, CURLOPT_URL,'http: / / [mijn WAN IP-adres] /? w');
curl_setopt($CH,CURLOPT_CONNECTTIMEOUT,5);
ob_start();
curl_exec ($ch);
ob_end_clean();
curl_close($CH);
? >
3) genaamd dit bestand met behulp van jQuery op de pagina die ik ben controle:
$.get("ding.php");
(U zult moeten jQuery toevoegen aan uw pagina ook).
Doen het op deze manier betekent dat niemand ontdekt uw WAN IP-adres. Niet zo belangrijk maar nog steeds, sommige mensen zoals hen zwijgen!
Mijn setup kan worden geraadpleegd op de volgende URL. Als u erop klikt, zult u een koperen klokje in mijn kerstboom bellen! De pagina niet wordt weergegeven als om het even wat, maar de klok zal bellen. Neem een kijkje op de video om te zien wat er gebeurt als jij.
http://ding.net84.net/ding.php
Video: