Arduino standalone web-enabled bell


geïnspireerd door deze post, mij wilden voor wekken een Arduino aangedreven Bel dat volledig standalone was.

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
gebaseerd op Zoomkat code van Arduino forums

#include "WiFly.h"
#include "Servo.h"
#include "SPI.h"

Servo myservo;  maken van servo-object om te bepalen van een servo
Server server(80); Serverpoort
String readString; readString klasse maken

//////////////////////

VOID Setup {}

pinMode (2, OUTPUT); PIN geselecteerd besturingselement
myservo.attach(2);  de pin voor de servo-control
myservo.write(0);   eerste servo positie instellen indien gewenst

seriële gegevens afdrukken inschakelen
Serial.begin(9600);
Serial.println("Started");

SpiSerial.begin();

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);

DHCP inschakelen
SpiSerial.println ("set ip dhcp 1");
Serial.println ("Set DHCP");
delay(1000);

niveau van machtiging instellen
SpiSerial.println ("instellen van w een 1");
Serial.println ("Set vergunning niveau");
delay(1000);

instellen wachtwoord
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);

Join wifi-netwerk
SpiSerial.println ("join [Voer uw SSID hier, zonder vierkante haken]");
Serial.println ("Join network");
delay(2000);

CMD modus afsluit
SpiSerial.println("exit");
Serial.println ("afsluiten SpiSerial");
delay(3000);

Serial.println ("start server");
server.begin();

}

void loop {}
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:

Gerelateerde Artikelen

Slimme Homer Web-enabled TV remote

Slimme Homer Web-enabled TV remote

Slimme Homer, een Web-enabled TV remote marionetSlimme Homer is een Web-enabled marionet dat op uw TV draait als Simpsons is ingeschakeld. Zoals Homer te lui om te surfen op het Web zelf is, controleert een script in de wolk de online TV-programma vo
OpenSprinkler: Open-source Web-enabled Sprinkler Valve Controller

OpenSprinkler: Open-source Web-enabled Sprinkler Valve Controller

overzichtIk ben trots om te introduceren OpenSprinkler: een open-source programmeerbare, web-enabled sprinkler valve controller. Het kan worden gebruikt om te plannen en te werken met standaard 24VAC sprinkler kleppen vaak aangetroffen in huishoudeli
Web-Enabled lui studie lichten Controller

Web-Enabled lui studie lichten Controller

Dit Instructable is een schrijven van mijn eerste ooit Arduino project.Zoals in het algemeen het geval met de technici van de hobbyist, ik dacht lang en hard om te komen met een project dat werd niet alleen cool maar sommige werkelijke gebruikswaarde
Web-Enabled huis thermostaat (en huisautomatisering Hub)

Web-Enabled huis thermostaat (en huisautomatisering Hub)

Dit Instructable legt uit hoe ik WiFi toegelaten thermostaten gebouwd voor mijn huis. De thermostaten zijn programmeerbaar met 6 verschillende perioden tijdens de dag, hoewel steeds meer die op elk willekeurig nummer zou vrij onbeduidend. Ze kunnen w
4-20mA Arduino plataforma web

4-20mA Arduino plataforma web

Nl el siguiente handmatige entregaremos los pasos een seguir para visualizar sensoren con salida de corriente a la plataforma web de MCI.Como woonplaatsverklaring belangrijkste usaremos la CaiCai que es Arduino Uno verenigbaar con la support de verbi
PIGate, deur/gate opener van de garage van de web-enabled

PIGate, deur/gate opener van de garage van de web-enabled

Bouwen van een opener van de externe poort met behulp van een expressjs en een Raspberry PiintroductieEr is iets heel bevredigend over te klikken op een web-interface of het raken van een knop op een app en het zien van enkele fysieke gebeurtenis opt
Web-enabled Polar hartslagmeter

Web-enabled Polar hartslagmeter

Gebruik een Polar hartslagsensor, een goedkope hardwarekaart aangesloten via USB en een beetje van software om te zetten uw hartslag op het Web. De live-gegevens is geserveerd vanaf uw computer en toegankelijk gemaakt via de Yaler estafette (disclosu
Web-Enabled garagedeur (Raspberry Pi)

Web-Enabled garagedeur (Raspberry Pi)

Doel om een webpagina te maken op basis van garage deuropener die moeten achteraf aan de meeste standaard openers. Getest met circa 1990s Chamberlain 1/2 hp opener. Nam eenmaal deel uw garagedeur kan openen vanaf uw mobiele telefoon of computer.Raspb
Arduino browsersimulatie web

Arduino browsersimulatie web

In dit instructable maken we een led chaser met behulp van de 123D Circuits.io breadboard virtuele protyping en Arduino simulatie. Hier is een animatie van wat wij aan het einde zal hebben:Stap 1: Maak een nieuw circuit Als een eerste stap klikt u op
WEB-ENABLED ACHTERTUIN artillerie

WEB-ENABLED ACHTERTUIN artillerie

howdy iedereen! Dit instructable is eigenlijk het hoogtepunt van vele projecten van mij, in het verleden, maar ze allemaal zijn samen gebruikt hebben om iets echt cool te doen! in principe is het een kanon dat kan u meer controle over het web via een
Web-Enabled zwembad Control - Raspberry Pi

Web-Enabled zwembad Control - Raspberry Pi

Vorig jaar had ik een zwembad gebouwd. Het was spannend toen de zwembad bouwer heeft me laten zien dat de industrie zwembad had verplaatst naar het tijdperk van de informatietechnologie en nu bood Programmacontrole via het internet. Wordt een compute
Arduino Web ingeschakeld RGB verlichting

Arduino Web ingeschakeld RGB verlichting

ik heb net toevallig om te zien sommige grote strips van LED-verlichting als ik was het oppakken van sommige delen op Maplin die waren te koop (als ik me herinner juiste ze waren ongeveer £12 per ca. 2m strip) stuurprogramma voor de controller/was ec
Web gecontroleerde Arduino LED

Web gecontroleerde Arduino LED

Dit instructable toont u hoe te bouwen een Web-enabled tri-color LED gebaseerd op een Arduino en de WIZnet Ethernet-shield, beheersbare vanuit elke webbrowser .Omdat de LED wordt blootgesteld kunnen door middel van een eenvoudige RESTful web-service
Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of