Realizați acest proiect simplu de stație meteo pentru case și birouri

Realizați acest proiect simplu de stație meteo pentru case și birouri

În acest post vom construi un proiect interesant bazat pe mini-stație meteo Arduino, care vă poate arăta temperatura ambiantă, umiditatea, presiunea, calitatea aerului și multe alte date din împrejurimile dvs., care pot fi folosite pentru a prezice vremea de acasă.



Dacă sunteți interesat de meteorologie, acest proiect ar putea fi util pentru a studia condițiile meteorologice locale și schimbările pe termen scurt. Proiectul propus este un design solid, ceea ce înseamnă că nu există părți mobile.





Acest proiect poate fi amplasat în condiții interioare sau semi-interioare, unde circuitul este ferit de lumina directă a soarelui sau de vântul puternic sau umezeala care pot deteriora senzorii de la bord.

Design-ul:

Proiectul propus pentru circuitul stației meteo mini este construit în jurul Arduino, care este creierul stației meteo, care colectează o mulțime de date de la diferiți senzori și le procesează și se afișează pe ecranul LCD de 16x2.



Puteți alege placa arduino preferată pentru acest proiect. Circuitul este format din trei senzori MQ-135, BMP180 și DHT11. Să vedem ce face fiecare senzor în detaliu.

Senzor MQ-135:

MQ-135 este un senzor de măsurare a calității aerului, care poate detecta dioxid de carbon, alcool, benzen, fum, butan, propan etc. Dacă concentrația chimică a acestor gaze este ridicată în aer, atunci putem spune că aerul este poluat.

Senzorul poate detecta modificarea concentrației de poluanți în aer și oferă nivelul de tensiune adecvat. Tensiunea de ieșire a senzorului este direct proporțională cu nivelul concentrației chimice din aer.

Variația de tensiune de la senzor este alimentată către Arduino. Avem niveluri de prag predeterminate în program. Când trece nivelul pragului, microcontrolerul ne spune dacă aerul este sigur sau nu.

Diagrama circuitului

interfață senzor MQ135 cu circuit stație meteo

Diagrama de mai sus arată schema de cablare. Acest senzor are nevoie de alimentare externă de 5V, deoarece are element de încălzire în interiorul senzorului, care consumă aproximativ 1 Watt. Puterea de la pinul de alimentare al arduino nu poate furniza curent mai mare.

Elementul de încălzire menține senzorul cald și ajută la prelevarea cantității adecvate de concentrație chimică în aer. Senzorul durează aproximativ câteva minute pentru a atinge temperatura optimă.

Senzor DHT11:

Senzorul DHT11 este cunoscut popular ca senzor de temperatură și umiditate. Poate măsura temperatura și umiditatea din jur, după cum sugerează și numele.

Este un dispozitiv cu 4 pini, dar numai 3 dintre ele sunt utilizate. Poate arăta ca o componentă foarte simplă, dar are un microcontroler în interiorul senzorului care transmite datele în formă digitală către placa arduino.

Trimite date de 8 biți în fiecare secundă către arduino, pentru a decoda semnalul primit, trebuie să includem biblioteca în codul care este conceput pentru a-l gestiona. Legătura pentru bibliotecă este prezentată ulterior în partea de articol.

Diagrama circuitului:

interfață DH11 cu arduino

Conexiunea circuitului de la senzor la arduino este foarte simplă. Ieșirea senzorului este conectată la pinul A1 al arduino. Alimentarea Vcc și GND sunt conectate la pinii de alimentare de la arduino.

Notă: Vă rugăm să vă asigurați că senzorul dvs. are un rezistor de tracțiune integrat, dacă nu are unul conectați un rezistor de tracțiune de 4,7K la pinul de ieșire al senzorului DHT11.

Senzor BMP180:

BMP180 este un senzor barometric care poate măsura presiunea atmosferică, altitudinea și temperatura. Măsurarea temperaturii de la acest senzor este neglijată deoarece avem un senzor dedicat pentru măsurarea temperaturii ambiante.

Senzorul măsoară altitudinea setării de la nivelul mării, este, de asemenea, unul dintre parametrii utilizați în meteorologie.

Diagrama circuitului:

interfațând BM180 cu Arduino
Folosește protocolul de comunicație I2C, pinul SDA merge la A4 de arduino și SCL merge la A5 de arduino. Vcc și GND sunt conectate la pinii de alimentare de la arduino.

Conexiune LCD:

senzor de umiditate folosind Aduino


Afișajul LCD afișează toate datele de la senzori. Conexiunea dintre afișajul LCD și arduino este standard, putem găsi conexiuni similare în multe alte proiecte bazate pe LCD. Reglați potențiometrul de 10K pentru o vizibilitate optimă de pe ecranul LCD.

Prototipul autorului:

imaginea prototip a stației meteo

Iată prototipul autorului unui mini circuit de monitorizare a vremii în care tot senzorul prezentat în schemă este conectat la placa arduino.

Notă: Conexiunea circuitului de la fiecare senzor și afișaj LCD trebuie conectată la o singură placă arduino. Am dat conexiuni discrete ale senzorului pe fiecare schemă pentru a evita confuzia în timp ce duplicăm circuitul.

Descărcați fișierele Bibliotecii înainte de a încărca codul:

Biblioteca DHT11: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Biblioteca BMP180: github.com/adafruit/Adafruit_BMP085_Unified.git

Codul programului:

#include
#include
#include
#include
#define DHTxxPIN A1
LiquidCrystal lcd(12,11,5,4,3,2)
dht DHT
Adafruit_BMP085 bmp
int ack
int input = A0
unsigned long A = 1000L
unsigned long B = A * 60
unsigned long C = B * 2
int low = 300
int med = 500
int high = 700
int x = 4000
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
lcd.setCursor(0,0)
lcd.print('Sensors are')
lcd.setCursor(0,1)
lcd.print('getting ready')
delay(C)
}
void loop()
{
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Temp(*C)= ')
lcd.print(DHT.temperature)
lcd.setCursor(0,1)
lcd.print('Humidity(%) = ')
lcd.print(DHT.humidity)
delay(x)
}
if(ack==1)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('NO DATA')
lcd.setCursor(0,1)
lcd.print('Check Sensor')
delay(x)
}
if (!bmp.begin())
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('BMP180 sensor')
lcd.setCursor(0,1)
lcd.print('not found')
while (1) {}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('----Pressure---- ')
lcd.setCursor(0,1)
lcd.print(bmp.readPressure())
lcd.print(' Pascal')
delay(x)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('----Altitude----')
lcd.setCursor(0,1)
lcd.print(bmp.readAltitude(101500))
lcd.print(' meter')
delay(x)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' Air Quality:')
if(analogRead(input)==0)
{
lcd.setCursor(0,1)
lcd.print(' Sensor Error')
delay(x)
}
if(analogRead(input)0)
{
lcd.setCursor(0,1)
lcd.print(' GOOD')
delay(x)
}
if(analogRead(input)>low && analogRead(input) {
lcd.setCursor(0,1)
lcd.print(' GETTING BAD')
delay(x)
}
if(analogRead(input)>=med && analogRead(input) {
lcd.setCursor(0,1)
lcd.print(' VERY POOR')
delay(x)
}
if(analogRead(input)>=high)
{
lcd.setCursor(0,1)
lcd.print(' WORST')
delay(x)
}
}

NOTĂ:

Circuitul mini-stației meteo explicat durează 2 minute pentru a afișa citirile de la senzor, până atunci afișează „Senzorii se pregătesc”. Acest lucru se datorează faptului că senzorul MQ-135 durează 2 minute pentru a atinge temperatura optimă de funcționare.




Precedent: Cum să construiești un uscător de pânză simplu pentru sezonul ploios Următorul: Circuit de mașină de jucărie acționat de Clap