Parties utilisées
Arduino uno rev 3
Bouclier de gsm/gprs SIM900
résistance de 10 k
carte SIM (j’ai utilisé un à & t aller télécarte de Wal-Mart)
conduits, supports et divers bois j’avais portant autour (Voir photos)
code
#include < SoftwareSerial.h >
SoftwareSerial mySerial (7, 8) ; Bouclier de GPRS attaché aux broches 7 et 8 pour connexion série de logiciel
const String phoneNumber = « + 1xxxxxxxxxx » ; le numéro de téléphone du téléphone pour envoyer le message texte, n’oubliez pas d’inclure l’indicatif du pays devant le numéro
const int sensorPin = 2 ; le capteur d’eau est attaché à la broche 2
inondé de Boolean = false ; la variable inondée la valeur false
messageSent booléen = false ;
void setup() {}
mySerial.begin(19200) ; 19200 est la vitesse de transmission GPRS, cela doit être corrigé
Serial.Begin(19200) ;
pinMode (sensorPin, entrée) ;
SIMpower() ;
Delay(20000) ;
}
Sub SIMpower()
équivalent du logiciel après avoir appuyé sur le bouton « power » de GSM bouclier
{
digitalWrite (9, HIGH) ;
Delay(1000) ;
digitalWrite (9, faible) ;
Delay(5000) ;
}
void loop() {//we boucle de ce domaine
Si (digitalRead(sensorPin) == HIGH) {//if le sensorPin est élevé, courant est passé en elle, donc le capteur doit être immergé
inondées = true ; le sous-sol est inondé à cet effet
} ElseIf (digitalRead(sensorPin) == faible) {//otherwise si elle n’a pas de courant
inondées = false ; le capteur n’est pas submergé
messageSent = false ; Nous pouvons réinitialiser le messageSend, de sorte que si il devient à nouveau submergé, nous pouvons en finir un autre message de texte
}
Si ((messageSent == false) & & (inondé == false)) {//if nous n’avons pas encore envoyé de message, et le capteur est submergé
sendTextMessage (numéro de téléphone, "votre sous-sol est une inondation [Arduino]") ; Nous envoyons le message texte
messageSent = true ; Nous avons mis messageSent à true afin que nous ne continuer à envoyer des messages texte (ce woulld coûte beaucoup d’argent)
}
}
void sendTextMessage (String téléphone, données de type chaîne) {//sends un message texte pour téléphone, contenant des données
mySerial.print("AT+CMGF=1\r") ; Parce que nous voulons envoyer le SMS en mode texte
Delay(100) ;
mySerial.println ("AT + CMGS = \" "+ téléphone +" \"");//send sms message, être prudent il fallait ajouter un code de pays devant le numéro de téléphone portable
Delay(100) ;
mySerial.println (données); //the contenu du message
Delay(100) ;
mySerial.println (26 (char)); //the ASCII code du ctrl + z est 26
Delay(100) ;
mySerial.println() ;
Delay(5000) ; donner le module temps d’envoyer des SMS
SIMpower() ; Mettez hors tension du module
}