Vatten larm (1 / 1 steg)
Steg 1: Redback
Började med denna lilla wifi arduino enhet. Det säljs av Linksprite.com jag kunde få en bra affär på en från Ebay.
Du kan använda en wifi sköld eller någon wifi styrelse som kommer att arbeta på Arduino.
Jag kämpa ett tag att få Redback arbeta alls som dokumentationen är obefintlig. De ger några tutorial/exempel men inga riktiga docs för koden.
Trådbunden upp en LED på stift 9 eftersom det är en som Redback använder för att visa det är online, så en röd led på analoga stift 2 men använder i koden som en digital pin.
Denna sensor har digitala och analoga utgångar. Jag bara använder digitalt.
I princip vi loggas in på routern, och sedan vänta tills vattnet sensorn är hög och sedan gå in i en loop där vi skicka e-post till en PHP-sida på min server som kommer att skicka textmeddelandet.
PHP-koden är ganska enkel jag använt ett "magiskt nummer" som en säkerhetsåtgärd. PHP kommer inte skicka e-post utan rätt antal. Här litte knep kan du skicka SMS meddelande via ATT du kunde kunna göra detsamma för alla trådlösa bärare
PHP-kod
<?
$magic = $_GET [magi];
$message = $_GET [meddelande];
$message=urlDecode(stripSlashes($message));
om ($magic == "0000") {
$ok = mail ("myphonenumber upptäckta",
$message, "FROM: vatten
ECHO "e-sent\n". $message;
ECHO $ok;
}
? >
Ersätta 0000 med en kod som du vill
Ersätt myphonenumber med ditt mobilnummer
i fältet från använda oavsett e-post du vill
Denna kod sparas på en webbserver.
Innan du använder Arduino koden behöver du biblioteken för RedBack från
Redback forum
/ * Kod c 2013 Bret Lanius
Bret
http://bretlanius.com
Maskinvara som körs på Redback från linksprite.com
med hjälp av vatten sensor köpt på ebay
*/
#include
#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2
Trådlös konfigurationsparametrar---
unsigned char local_ip [] = {192,168,1,35}. IP-adressen för WiShield
unsigned char gateway_ip [] = {192,168,1,254}. routerns eller gatewayens IP-adress
unsigned char subnet_mask [] = {255,255,255,0}. nätmasken för det lokala nätverket
CONST prog_char ssid [] PROGMEM = {"YourSSID"}; max 32 byte
unsigned char security_type = 3; 0 - öppen; 1 - WEP; 2 - WPA; 3 - WPA2
WPA/WPA2-lösenfrasen
CONST prog_char security_passphrase [] PROGMEM = {"yourpassword för router"}; Max 64 tecken
128-bitars WEP-nycklar
prova på HEX nycklar
prog_uchar wep_keys [PROGMEM] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, / / nyckel 0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / / nyckel 1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, / / Key 2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 / / nyckel 3
};
setup trådlöst läge
infrastruktur - ansluta till AP
adhoc - Anslut till en annan WiFi-enhet
unsigned char wireless_mode = WIRELESS_MODE_INFRA;
unsigned char ssid_len;
unsigned char security_passphrase_len;
//---------------------------------------------------------------------------
CONST byte waterPin = 7.
CONST byte redPin = A2;
CONST byte waterAnalogPin = 0;
CONST byte resetPin = 5;
int beenhere = false;
void printData (char * data, int len) {
Skriva ut data som returneras av servern
Observera att data inte är null-avslutad, kan delas i mindre paket, och
inkluderar HTTP-huvudet.
medan (len--> 0) {
Serial.Print(*(data++));
}
}
uint8 bret_ip [] = {198, xx, xx, xx};
GETrequest getAlert (bret_ip, 80, "www.yourserver.com", "/wateralert.php?magic=0000 & meddelande = vatten % 20Detected");
void setup() {
Serial.BEGIN(57600);
Serial.println("startup");
WiServer.init(NULL);
WiServer.enableVerboseMode(true);
Serial.println ("Wifi aktiverat");
pinMode(waterPin,INPUT);
pinMode(redPin,OUTPUT);
pinMode(resetPin,INPUT_PULLUP);
digitalWrite(redPin,LOW);
getAlert.setReturnFunc(printData);
}
void loop() {
om (beenhere == true) {
Serial.println ("tillbaka i huvudloop");
beenhere = false;
}
int water=digitalRead(waterPin);
om (vatten == låg) {
Serial.println("Alert");
Alert();
}
Delay(10);
WiServer.server_task();
}
void noAlert() {
noTone(6);
digitalWrite(redPin,LOW);
beenhere = sant;
}
void reset() {
Serial.println("Silenced");
noTone(6);
Delay(500);
While(digitalRead(resetPin)==High) {
digitalWrite(redPin,HIGH);
Delay(500);
digitalWrite(redPin,LOW);
Delay(500);
}
Serial.println ("Clearing alarm");
Delay(100);
noAlert();
WiServer.server_task();
}
void alert() {
Tone(6,3000);
Delay(500);
Serial.println ("skicka e-post");
getAlert.submit();
While(digitalRead(resetPin)==High) {
WiServer.server_task();
digitalWrite(redPin,HIGH);
Delay(50);
digitalWrite(redPin,LOW);
Delay(50);
}
Reset();
}