Sistema Notificação e Monitoramento Ambiental contra Chuvas Fortes e Enchentes via SMS.
Monitoramento e notificação de condição ambiental, em tempo real, via rede celular, serviço de mensagens de texto(SMS), dos espaços urbanos conhecidos por sofrerem com alagamentos e enchentes em decorrência de chuva fortes e tempestades.
Criação de um dispositivo eletrônico programável de alertas via mensagem de texto (SMS), em tempo real, com sensores, baseados na plataforma de Arduino.
Lista de Materiais
1 Arduino Uno
1 Shield GSM para Arduino
2 Sensores de nível d’água
1 Fonte de alimentação 5Volts – 3 Amperes
1 Chip 3G para celular
Créditos para chip celular
1 Estanho para solda
15m Fio elétrico duplo
3m Tubulação eletrica 3/4
10 Abraçadeiras de metal
10 Parafusos e buchas
1 Tubo de silicone
1 Caixa elétrica para área externa
1 Placa Solar com bateria 5V 2A
Ferramentas
Ferro de solda, chave de fenda, alicate, multímetro, furadeira, broca serra copo, escada.
Circuito
Código do Arduino
//SMS Chuvas - 2018 // // Sistema de Alerta via SMS contra Enchentes // //Arduino UNO, Shield SIM900, 2 water level sensor, LEDs //Biblioteca Softaware Serial // // Biblioteca Software Serial #include <SoftwareSerial.h> // Portas software serial SoftwareSerial SIM900(7, 8); // PORTAS SENSORES const int buttonPin1 = 4; // sensor1 const int buttonPin2 = 5; // sensor2 //PORTAS LEDS DE STATUS const int ledPin1 = 10; // amarelo const int ledPin2 = 11; // vermelho const int ledPin3 = 12; // verde int state1 = 0; int state2 = 0; // Estado dos Sensores //SENSOR 1 int ledState1 = LOW; int buttonState1; int lastButtonState1 = LOW; // SENSOR 2 int ledState2 = LOW; int buttonState2; int lastButtonState2 = LOW; // int ledState3 = HIGH; // // DEBOUNCE DOS SENSORES // long lastDebounceTime1 = 0; long debounceDelay1 = 5000; long lastDebounceTime2 = 0; long debounceDelay2 = 5000; // TELEFONES char phone1[] = "AT + CMGS = \"999911234\""; // telefone 1 char phone2[] = "AT + CMGS = \"981611299\""; // telefone 2 // MENSAGENS char msg1[] = "Alerta Amarelo"; // mensagem 1 char msg2[] = "Alerta Vermelho";//mensagem 2 char msg3[] = "Alerta Verde"; // mensagem3 void setup() { pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); // LED 1 pinMode(ledPin1, OUTPUT); digitalWrite(ledPin1, ledState1); // LED 2 pinMode(ledPin2, OUTPUT); digitalWrite(ledPin2, ledState2); // LED 3 pinMode(ledPin3, OUTPUT); digitalWrite(ledPin3, ledState3); } void loop() { SensorYellow(); delay(100); SensorRed(); delay(100); } void SensorYellow() { // LEITURA SENSOR AMARELO int reading = digitalRead(buttonPin1); if (reading != lastButtonState1) { lastDebounceTime1 = millis(); } if ((millis() - lastDebounceTime1) > debounceDelay1) { if (reading != buttonState1) { buttonState1 = reading; if (buttonState1 == HIGH) { turnOnGSM(); sendSMSx(phone1,msg1); delay(5000); sendSMSx(phone2,msg1); ledState1 = !ledState1; ledState3 = !ledState3; turnOffGSM(); } //STATUS VERDE if (buttonState1 == LOW) { turnOnGSM(); sendSMSx(phone1,msg3); delay(10000); sendSMSx(phone2,msg3); delay(5000); ledState1 = !ledState1; ledState3 = !ledState3; turnOffGSM(); } } } digitalWrite(ledPin1, ledState1); digitalWrite(ledPin3, ledState3); lastButtonState1 = reading; } // LEITURA SENSOR VERMELHO void SensorRed() { int reading = digitalRead(buttonPin2); if (reading != lastButtonState2) { lastDebounceTime2 = millis(); } if ((millis() - lastDebounceTime2) > debounceDelay2) { if (reading != buttonState2) { buttonState2 = reading; if (buttonState2 == HIGH) { turnOnGSM(); sendSMSx(phone1,msg2); delay(5000); sendSMSx(phone2,msg2); ledState2 = !ledState2; turnOffGSM(); } if (buttonState2 == LOW) { ledState2 = !ledState2; } } } digitalWrite(ledPin2, ledState2); lastButtonState2 = reading; } //ROTINA ENVIA MENSAGEM void sendSMSx(char tPhone[], char tMsg[]) { // MODO SMS SIM900.print("AT+CMGF=1\r"); delay(100); // TELEFONE SIM900.println(tPhone); delay(100); // MENSAGEM SIM900.println(tMsg); delay(100); // DESLIGA SIM900.println((char)26); delay(100); SIM900.println(); // envio delay(5000); } //LIGA GSM void turnOnGSM(){ digitalWrite(9, HIGH); //LIGA GSM delay(2000); digitalWrite(9, LOW); delay(5000); // BAUD RATE 19200 // SIM900.begin(19200); // tempo para conectar delay(20000); for (int i=0; i<=5 ; i++){ ledState3 = !ledState3; digitalWrite(ledPin3, ledState3); delay(500); } //DESLIGA GSM } void turnOffGSM(){ digitalWrite(9, HIGH); //DESLIGA GSM delay(2000); digitalWrite(9, LOW); delay(5000); }
Prototipagem
Montagem do Sensor
Comments by Shankara