Cum poti monitoriza nivelul de apa dintr-un acvariu cu un senzor de nivel apa Arduino

Cum poti monitoriza nivelul de apa dintr-un acvariu cu un senzor de nivel apa Arduino

Proiect Arduino cu senzor de masurare a nivelului de apa


In acest videoclip, vei urmari un tutorial care te va ghida pas cu pas prin modul in care trebuie conectat un senzor de masurare a nivelului de apa, compatibil Arduino, cu celelalte componente necesare.

In acest proiect, am utilizat un senzor de masurare a nivelului de apa, o placa de dezvoltare compatibila Arduino si un ecran LCD1602 pentru a realiza un sistem de monitorizare a apei din acvariu.

Senzorul utilizat in acest tutorial este compatibil cu Arduino si functioneaza pe baza masurarii rezistentei, fiind posibil astfel sa controlezi adancimea apei si sa previi revarsarea acesteia.

Daca doresti sa afli mai multe informatii despre senzorul de masurare a nivelului de apa, ii poti accesa datasheet-ul AICI.

Cum functioneaza senzorul de masurare a nivelului de apa?

Acest senzor se bazeaza pe modificarea rezistentei electrice. Pe suprafata lui exista linii paralele de conductivitate conectate la terminalul de masa (Ground), reprezentand calea curentului electric. Apa este un bun conductor, astfel ca atunci cand aceste linii intra in contact cu apa, ele sunt scurtcircuitate, ceea ce determina scaderea rezistentei senzorului.

Prin fixarea modulului in acvariu, rezistenta variabila se regleaza la o valoare specifica in functie de nivelul apei. Modulul masoara rezistenta analogica si o transmite catre Arduino, prin intermediul caruia pe ecranul LCD va aparea valoarea corespunzatoare.

Componente necesare

In continuare, pentru a putea construi acest proiect vei avea nevoie de:

Acum ca ai aflat care sunt componentele necesare, te vei ghida dupa schema de conectare de mai jos.

Schema de conectare senzor masurare nivel apa, compatibil Arduino

Tabel conectare senzor nivel apa bitmi

Senzorul de masurare nivel apa se conecteaza astfel: pinul - la GND de pe breadboard, + la 5V de pe breadboard si S la portul analogic A0 Arduino.

Ecranul LCD1602 cu modul I2C se conecteaza astfel: pinul GND la GND de pe breadboard, pinul VCC la 5V de pe breadboard, pinul SDA la portul analogic A4 Arduino si pinul SCL la portul analogic A5 Arduino.

Schema conectare senzor masurare nivel apa compatibil arduino bitmi

Exemplu cod

In acest proiect va trebui sa folosesti biblioteca LiquidCrystal_I2C (pentru ecranul LCD), pe care o poti descarca AICI.

Pentru a adauga o biblioteca in mediul de dezvoltare Arduino IDE, deschide Arduino IDE si din meniul Sketch (Schita) acceseaza Include Library (Incarcare biblioteca) si apoi selecteaza Add .ZIP Library... (Adauga biblioteca .ZIP). Aici va trebui sa gasesti si sa selectezi fisierul .zip al bibliotecii LiquidCrystal_I2C. Dupa ce ai deschis fisierul .zip si cand procesul de instalare s-a terminat cu succes, va aparea un mesaj in partea de jos a ferestrei care iti va confirma adaugarea bibliotecii.

Dupa ce ai realizat circuitul si ai descarcat cu succes biblioteca LiquidCrystal_I2C, introdu codul furnizat mai jos. Apoi conecteaza placa Arduino la computer prin intermediul portului USB, selecteaza tipul de placa si portul serial (din meniul Tools selecteaza pentru optiunile Board si Port ceea ce utilizezi). Pentru a incarca codul pe placa, apasa butonul Upload (simbolul de sageata catre dreapta). In partea de jos a ferestrei vei putea urmari mesajele de stare: Compiling Sketch, Uploading si Done. Dupa finalizarea cu succes a incarcarii, placa Arduino va rula codul pe care l-ai incarcat.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int resval = 0; 
int respin = A0; 

void setup() {
  lcd.init(); 
  lcd.backlight(); 
  lcd.setCursor(0, 0);
  lcd.print("Nivel apa: ");
}

void loop() {
  lcd.setCursor(0, 1);

  resval = analogRead(respin);

  if (resval <= 100) {
    lcd.print("0        ");
  } else if (resval > 100 && resval <= 300) {
    lcd.print("Scazut   ");
  } else if (resval > 300 && resval <= 310) {
    lcd.print("Mediu    ");
  } else if (resval > 310) {
    lcd.print("Ridicat  ");
  }
  delay(1000);
}