Sistema di allarme per l'approvvigionamento idrico basato su SMS

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post costruiremo un circuito che avviserà l'utente tramite SMS se viene avviata la fornitura di acqua alla tua zona / casa. Può mostrare l'ora in cui l'acqua inizia a fornire e finisce, la velocità media del flusso d'acqua in litri al minuto e l'acqua totale erogata al serbatoio in litri.

introduzione

Sappiamo tutti che la vita sulla terra è impossibile senza acqua, come esseri umani usiamo più acqua rispetto a qualsiasi altra specie sulla terra consuma, non solo per la nostra sopravvivenza ma anche per soddisfare le nostre esigenze di lusso.



Non solo consumiamo acqua, ma contaminiamo anche i corpi idrici. Il consumo e la domanda di acqua saliranno alle stelle nei prossimi decenni.

Come cittadino del mondo, è nostro dovere risparmiare acqua, ma come individuo potremmo non soddisfare la sete del mondo intero risparmiando acqua, ma possiamo sicuramente soddisfare la sete della nostra famiglia in quanto potremmo avere una buona quantità di acqua per un breve periodo di tempo , anche se nessuno intorno a noi ha risparmiato l'acqua per il futuro.



L'approvvigionamento idrico in India e in altri paesi in rapido sviluppo è limitato e anche a forte domanda, inoltre l'approvvigionamento idrico può iniziare senza alcuna notifica ufficiale da parte del governo locale. Questo progetto risolverà questo problema per noi.

Ora passiamo ai dettagli tecnici del progetto.

Il circuito:

Il circuito è costituito da un file sensore di flusso d'acqua YF-S201, una scheda Arduino che è il cervello del progetto, a Modulo GSM (SIM 800 o SIM 900) per ricevere avvisi SMS sull'approvvigionamento idrico e un modulo orologio in tempo reale per monitorare l'ora corretta per l'avvio e l'interruzione dell'approvvigionamento idrico.

L'alimentazione a 9 Volt è desiderabile per alimentare la scheda Arduino e il modulo GSM, si consiglia di fornire l'alimentazione da adattatori 9V o alimentatore ben costruito, basato su trasformatore (LM 7809).

Circuito di avviso di approvvigionamento idrico basato su SMS

La connessione tra Arduino e modulo GSM come segue:

Modulo GSM da Arduino TX a RX

Modulo GSM Arduino RX to TX

Modulo GSM da Arduino GND a GND

Non tentare mai di alimentare il modulo GSM dal pin di uscita 5V di Arduino all'ingresso 5V del modulo GSM.

Il modulo RTC o orologio in tempo reale terrà traccia dell'ora di arrivo dell'acqua e del termine della fornitura di acqua.

Questo conclude l'hardware.

Per impostare l'ora su RTC, è necessario caricare il programma di impostazione dell'ora su RTC con la configurazione hardware completata. Questo sincronizzerà l'ora sul tuo computer con RTC.

Scarica il file della libreria RTC: github.com/PaulStoffregen/DS1307RTC

Programma per impostare l'ora su RTC:

//-----------------------------------------------------------//
#include
#include
#include
int P = A3 //Assign power pins for RTC
int N = A2
const char *monthName[12] = {
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
}
tmElements_t tm
void setup() {
pinMode(P, OUTPUT)
pinMode(N, OUTPUT)
digitalWrite(P, HIGH)
digitalWrite(N, LOW)
bool parse = false
bool config = false
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true
}
}
Serial.begin(9600)
while (!Serial) // wait for Arduino Serial Monitor
delay(200)
if (parse && config) {
Serial.print('DS1307 configured Time=')
Serial.print(__TIME__)
Serial.print(', Date=')
Serial.println(__DATE__)
} else if (parse) {
Serial.println('DS1307 Communication Error :-{')
Serial.println('Please check your circuitry')
} else {
Serial.print('Could not parse info from the compiler, Time='')
Serial.print(__TIME__)
Serial.print('', Date='')
Serial.print(__DATE__)
Serial.println(''')
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec
if (sscanf(str, '%d:%d:%d', &Hour, &Min, &Sec) != 3) return false
tm.Hour = Hour
tm.Minute = Min
tm.Second = Sec
return true
}
bool getDate(const char *str)
{
char Month[12]
int Day, Year
uint8_t monthIndex
if (sscanf(str, '%s %d %d', Month, &Day, &Year) != 3) return false
for (monthIndex = 0 monthIndex <12 monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break
}
if (monthIndex >= 12) return false
tm.Day = Day
tm.Month = monthIndex + 1
tm.Year = CalendarYrToTm(Year)
return true
}
//-----------------------------------------------------------//

· Carica il codice sopra con l'hardware completo.

· Aprire il monitor seriale e mostra che l'ora è stata impostata.

· Ora sei pronto per passare alla fase successiva.

Hai impostato correttamente l'ora sul modulo RTC.

Ora, carichiamo il programma principale che ci avviserà tramite SMS.

Programma principale:

//-----Program Developed by R.Girish-----//
#include
#include
#include
int X
int Y
int sec = 50
int t = 0
int i = 0
int check = 1
int chk = 0
int P = A3
int N = A2
int tim = 0
float Time = 0
float frequency = 0
float waterFlow = 0
float total = 0
float LS = 0
float average = 0
const int input = A0
const int test = 9
void setup()
{
Serial.begin(9600)
pinMode(input, INPUT)
pinMode(test, OUTPUT)
analogWrite(test, 100)
pinMode(P, OUTPUT)
pinMode(N, OUTPUT)
digitalWrite(P, HIGH)
digitalWrite(N, LOW)
for (i = 0 i {
delay(1000)
}
Serial.println('AT+CNMI=2,2,0,0,0')
delay(1000)
Serial.println('AT+CMGF=1')
delay(500)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.println('Your water supply notification system is ready.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void loop()
{
tmElements_t tm
if (RTC.read(tm))
{
if (tm.Hour > 12) //24Hrs to 12 Hrs conversion//
{
if (tm.Hour == 13) tim = 1
if (tm.Hour == 14) tim = 2
if (tm.Hour == 15) tim = 3
if (tm.Hour == 16) tim = 4
if (tm.Hour == 17) tim = 5
if (tm.Hour == 18) tim = 6
if (tm.Hour == 19) tim = 7
if (tm.Hour == 20) tim = 8
if (tm.Hour == 21) tim = 9
if (tm.Hour == 22) tim = 10
if (tm.Hour == 23) tim = 11
}
else
{
tim = tm.Hour
}
X = pulseIn(input, HIGH)
Y = pulseIn(input, LOW)
Time = X + Y
frequency = 1000000 / Time
waterFlow = frequency / 7.5
LS = waterFlow / 60
if (frequency >= 0)
{
if (isinf(frequency))
{
if (chk == 1)
{
Serial.println('AT+CNMI=2,2,0,0,0')
delay(1000)
Serial.println('AT+CMGF=1')
delay(500)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.print('Time: ')
delay(10)
Serial.print(tim)
delay(10)
Serial.print(':')
delay(10)
Serial.print(tm.Minute)
delay(10)
if (tm.Hour >= 12)
{
Serial.println(' PM')
}
if (tm.Hour <12)
{
Serial.println(' AM')
}
delay(10)
Serial.println('Water Supply is Ended.')// The SMS text you want to send
delay(100)
Serial.print('Average Water Flow (Litre/Min): ')
delay(100)
Serial.println(average)
delay(100)
Serial.print('Total Water Delivered: ')
delay(100)
Serial.print(total)
delay(100)
Serial.println(' Litre')
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(5000)
t = 0
total = 0
average = 0
chk = 0
check = 1
}
}
else
{
if (check == 1)
{
Serial.println('AT+CNMI=2,2,0,0,0')
delay(1000)
Serial.println('AT+CMGF=1')
delay(500)
Serial.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
Serial.print('Time: ')
delay(10)
Serial.print(tim)
delay(10)
Serial.print(':')
delay(10)
Serial.print(tm.Minute)
delay(10)
if (tm.Hour >= 12)
{
Serial.println(' PM')
}
if (tm.Hour <12)
{
Serial.println(' AM')
}
delay(10)
Serial.println('The water is being supplied now.')// The SMS text you want to send
delay(100)
Serial.println((char)26) // ASCII code of CTRL+Z
delay(1000)
check = 0
chk = 1
}
t = t + 1
total = total + LS
average = total / t
average = average * 60
}
}
delay(1000)
}
}
//-----Program Developed by R.Girish-----//

Nota : È necessario caricare prima il programma di impostazione dell'ora RTC su Arduino e poi il programma principale (con la configurazione hardware completata), facendo il contrario, il progetto non funzionerà.

Ecco la schermata SMS del prototipo testato:

schermata SMS del prototipo testato:

· Dopo un minuto di accensione del circuito, riceverai un SMS che dice che il sistema è pronto.

· Quando l'acqua inizia a fluire attraverso il sensore, il sistema avviserà l'utente con il tempo.

· Dopo che l'erogazione dell'acqua è terminata, il sistema invierà un altro avviso e riepilogherà la sessione con il tempo, il flusso d'acqua medio e l'acqua totale erogata al serbatoio.

Prototipo dell'autore:

Prototipo di circuito di avviso di approvvigionamento idrico basato su SMS

Si prega di notare che al momento dell'arrivo dell'acqua l'acqua deve scorrere liberamente, il che significa che se c'è un blocco o un rubinetto che è chiuso non ti avviserà.

Se hai domande su questo progetto, sentiti libero di esprimere nella sezione commenti, potresti ricevere una rapida risposta.




Precedente: Incubatore che utilizza Arduino con controllo automatico della temperatura e dell'umidità Avanti: 3 migliori circuiti inverter senza trasformatore