Gebruikte onderdelen
Arduino uno rev 3
sim900 gsm/gprs schild
een 10 k ohm weerstand
SIM-kaart (ik gebruikte een at & t gaan telefoonkaart van Wal-Mart)
misc hout, haken en conduit had ik tot rond (zie foto's)
code
#include < SoftwareSerial.h >
SoftwareSerial mySerial (7, 8); GPRS schild gekoppeld aan pin 7 en 8 voor software seriële verbinding
Const String telefoonnummer = "+ 1xxxxxxxxxx"; het telefoonnummer van de telefoon voor het verzenden van het SMS-bericht, vergeet niet om de landcode voor het nummer
Const int sensorPin = 2; de water-sensor is aangesloten op Pen 2
Boolean overstroomd = false; de overstroomd variabele instellen op false
Booleaanse messageSent = false;
VOID Setup {}
mySerial.begin(19200); 19200 is de GPRS-baud-rate, dit moet worden vastgesteld
Serial.begin(19200);
pinMode (sensorPin, INPUT);
SIMpower();
delay(20000);
}
VOID SIMpower()
software overeen met drukken op de GSM schild "power" knop
{
digitalWrite (9, hoge);
delay(1000);
digitalWrite (9, laag);
delay(5000);
}
void loop {//we lus door dit gebied
Als (digitalRead(sensorPin) == HIGH) {//if de sensorPin hoog is, huidige wordt doorgegeven, zodat de sensor moet worden ondergedompeld
overstroomd = true; de kelder is daarvoor overstroomd
} else if (digitalRead(sensorPin) == LOW) {//otherwise als er geen huidige
overstroomd = false; de sensor is niet ondergedompeld
messageSent = false; We kunnen de berichtenEinde, hersteld, zodat als het opnieuw wordt ondergedompeld, we nog een SMS-bericht eindigen
}
Als ((messageSent == false) & & (overstroomd == false)) {//if niet hebben we nog een bericht gestuurd, en de sensor is ondergedompeld
sendTextMessage (telefoonnummer, "uw kelder is overstromingen [Arduino]"); Wij sturen het SMS-bericht
messageSent = true; Wij stellen messageSent op true zodat we niet houden om tekstberichten te verzenden (dit woulld kost veel geld)
}
}
VOID sendTextMessage (String telefoon, tekenreeksgegevens) {//sends een SMS-bericht naar telefoon, die gegevens bevatten
mySerial.print("AT+CMGF=1\r"); Omdat we willen dat het om SMS te verzenden in tekstmodus
delay(100);
mySerial.println ("AT + CMGS = \" "+ telefoon +" \"");//send sms bericht, worden voorzichtig moet toevoegen van een landcode voor het GSM-nummer
delay(100);
mySerial.println (gegevens); //the inhoud van het bericht
delay(100);
mySerial.println ((char) 26); //the ASCII code van de ctrl + z is 26
delay(100);
mySerial.println();
delay(5000); module tijd geven om te verzenden SMS
SIMpower(); module uitschakelen
}