Stwórz ten prosty projekt stacji pogodowej dla domów i biur

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście zamierzamy zbudować ciekawy projekt mini stacji pogodowej na bazie Arduino, który może pokazać temperaturę otoczenia, wilgotność, ciśnienie, jakość powietrza i wiele więcej danych z otoczenia, które można wykorzystać do prognozowania pogody z domu.



Jeśli interesujesz się meteorologią, ten projekt może się przydać do studiowania lokalnych warunków pogodowych i krótkoterminowych zmian. Proponowany projekt to konstrukcja półprzewodnikowa, co oznacza, że ​​nie ma żadnych ruchomych części.

Ten projekt może być umieszczony w warunkach wewnętrznych lub półwnętrznych, gdzie obwód jest oddalony od bezpośredniego światła słonecznego, silnego wiatru lub wilgoci, które mogą uszkodzić czujniki na pokładzie.



Projektowanie:

Proponowany projekt obwodu mini stacji pogodowej jest zbudowany wokół Arduino, które jest mózgiem stacji pogodowej, która zbiera wiele danych z różnych czujników, przetwarza je i wyświetla na ekranie LCD 16x2.

Do tego projektu możesz wybrać swoją ulubioną tablicę arduino. Obwód składa się z trzech czujników MQ-135, BMP180 i DHT11. Zobaczmy szczegółowo, co robi każdy czujnik.

Czujnik MQ-135:

MQ-135 to czujnik do pomiaru jakości powietrza, który może wykryć dwutlenek węgla, alkohol, benzen, dym, butan, propan itp. Jeśli stężenie chemikaliów tych gazów w powietrzu jest wysokie, można powiedzieć, że powietrze jest zanieczyszczone.

Czujnik wykrywa zmianę stężenia zanieczyszczeń w powietrzu i podaje odpowiedni poziom napięcia. Napięcie wyjściowe czujnika jest wprost proporcjonalne do poziomu stężenia chemikaliów w powietrzu.

Wahania napięcia z czujnika są podawane do Arduino, w programie mamy ustalone progi. Po przekroczeniu progu mikrokontroler informuje nas, czy powietrze jest bezpieczne, czy nie.

Schemat obwodu

interfejs czujnika MQ135 z obwodem stacji pogodowej

Powyższy schemat przedstawia schemat połączeń. Ten czujnik wymaga zewnętrznego zasilania 5 V, ponieważ ma element grzejny wewnątrz czujnika, który zużywa około 1 W. Moc z pinu zasilania arduino nie może dostarczyć wyższego prądu.

Element grzejny utrzymuje temperaturę czujnika i pomaga w pobraniu odpowiedniej ilości chemikaliów w powietrzu. Czujnik potrzebuje około kilku minut, aby osiągnąć optymalną temperaturę.

Czujnik DHT11:

Czujnik DHT11 jest popularnie nazywany czujnikiem temperatury i wilgotności. Może mierzyć temperaturę i wilgotność w otoczeniu, jak sugeruje nazwa.

Jest to urządzenie 4-pinowe, ale używane są tylko 3 z nich. Może wyglądać na bardzo prosty element, ale ma mikrokontroler wewnątrz czujnika, który przekazuje dane w postaci cyfrowej do płyty arduino.

Co sekundę wysyła 8-bitowe dane do arduino, aby zdekodować odebrany sygnał, w kodzie do jego obsługi potrzebna jest biblioteka. Link do biblioteki znajduje się w dalszej części artykułu.

Schemat obwodu:

interfejs DH11 z arduino

Połączenie obwodu od czujnika do arduino jest bardzo proste. Wyjście czujnika podłączamy do pinu A1 arduino. Zasilanie Vcc i GND są podłączone do pinów zasilania arduino.

Uwaga: upewnij się, że czujnik ma wbudowany rezystor podciągający, jeśli go nie ma, podłącz rezystor podwyższający 4,7 K do styku wyjściowego czujnika DHT11.

Czujnik BMP180:

BMP180 to czujnik barometryczny, który może mierzyć ciśnienie atmosferyczne, wysokość i temperaturę. Pomiar temperatury z tego czujnika jest pomijany, ponieważ mamy dedykowany czujnik do pomiaru temperatury otoczenia.

Czujnik mierzy wysokość instalacji od poziomu morza, jest też jednym z parametrów wykorzystywanych w meteorologii.

Schemat obwodu:

łączący BM180 z Arduino
Wykorzystuje protokół komunikacyjny I2C, pin SDA przechodzi do A4 arduino, a SCL do A5 w arduino. Vcc i GND są podłączone do pinów zasilania arduino.

Złącze LCD:

czujnik wilgotności za pomocą Aduino


Wyświetlacz LCD pokazuje wszystkie dane z czujników. Połączenie między wyświetlaczem LCD a arduino jest standardowe, podobne połączenie możemy znaleźć w wielu innych projektach opartych na LCD. Ustaw potencjometr 10K tak, aby uzyskać optymalną widoczność z wyświetlacza LCD.

Prototyp autora:

obraz prototypu stacji pogodowej

Oto autorski prototyp obwodu mini monitora pogody, w którym wszystkie czujniki pokazane na schematach są podłączone do płytki arduino.

Uwaga: połączenie obwodów z każdego czujnika i wyświetlacza LCD powinno być podłączone do jednej płytki arduino. Daliśmy dyskretne połączenie czujnika na każdym schemacie, aby uniknąć nieporozumień podczas powielania obwodu.

Pobierz pliki biblioteki przed załadowaniem kodu:

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

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

Kod programu:

#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)
}
}

UWAGA:

Wyjaśniony obwód mini stacji pogodowej potrzebuje 2 minut, aby pokazać odczyty z czujnika, do tego czasu wyświetli się komunikat „Czujniki przygotowują się”. Dzieje się tak, ponieważ czujnik MQ-135 potrzebuje 2 minut, aby osiągnąć optymalną temperaturę pracy.




Poprzedni: Jak zbudować prostą suszarkę do tkanin na porę deszczową Dalej: Clap Operated Toy Car Circuit