Vytvořte si tento jednoduchý projekt meteorologické stanice pro domácnosti a kanceláře

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto příspěvku postavíme zajímavý projekt mini meteorologické stanice založené na Arduinu, který vám může ukázat teplotu okolí, vlhkost, tlak, kvalitu vzduchu a mnohem více údajů z vašeho okolí, které lze použít k předpovědi počasí z domova.



Pokud vás zajímá meteorologie, tento projekt by se vám mohl hodit pro studium místních povětrnostních podmínek a krátkodobých změn. Navrhovaný projekt je polovodičový design, což znamená, že neexistují žádné pohyblivé části.

Tento projekt může být umístěn ve vnitřních nebo částečně vnitřních podmínkách, kde je obvod mimo přímé sluneční světlo nebo silný vítr nebo vlhkost, která může poškodit snímače na palubě.



Design:

Navrhovaný projekt obvodu mini meteorologické stanice je postaven na Arduinu, což je mozek meteorologické stanice, která shromažďuje spoustu dat z různých senzorů a zpracovává je a zobrazuje na LCD obrazovce 16x2.

Pro tento projekt si můžete vybrat svoji oblíbenou desku arduino. Obvod se skládá ze tří senzorů MQ-135, BMP180 a DHT11. Podívejme se podrobně na to, co jednotlivé senzory dělají.

Senzor MQ-135:

MQ-135 je senzor pro měření kvality vzduchu, který dokáže detekovat oxid uhličitý, alkohol, benzen, kouř, butan, propan atd. Pokud je chemická koncentrace těchto plynů ve vzduchu vysoká, pak můžeme říci, že je znečištěný vzduch.

Senzor dokáže detekovat změnu koncentrace znečišťujících látek ve vzduchu a vydává příslušnou úroveň napětí. Výstupní napětí snímače je přímo úměrné úrovni chemické koncentrace ve vzduchu.

Kolísání napětí ze senzoru se přivádí do Arduina, v programu máme předem určené prahové úrovně. Když překročí prahovou úroveň, mikrokontrolér nám řekne, zda je vzduch bezpečný nebo ne.

Kruhový diagram

rozhraní senzoru MQ135 s obvodem meteorologické stanice

Výše uvedený diagram ukazuje schéma zapojení. Tento snímač vyžaduje externí napájení 5 V, protože má uvnitř snímače topný článek, který spotřebovává přibližně 1 Watt. Síla napájecího kolíku Arduina nemůže dodávat vyšší proud.

Topné těleso udržuje čidlo v teple a pomáhá odebírat vhodné množství chemické koncentrace ve vzduchu. Čidlo dosáhne optimální teploty asi pár minut.

Senzor DHT11:

Snímač DHT11 je všeobecně známý jako snímač teploty a vlhkosti. Dokáže měřit teplotu a vlhkost z okolí, jak název napovídá.

Jedná se o 4kolíkové zařízení, ale používají se pouze 3 z nich. Může to vypadat jako velmi jednoduchá součástka, ale uvnitř senzoru je mikrokontrolér, který předává data v digitální podobě na desku arduino.

Posílá 8bitová data každou sekundu na arduino, k dekódování přijatého signálu musíme do kódu zahrnout knihovnu, která je navržena pro jeho zpracování. Odkaz na knihovnu je uveden v další části článku.

Kruhový diagram:

rozhraní DH11 s arduino

Připojení obvodu od senzoru k Arduinu je velmi jednoduché. Výstup senzoru je připojen k pinu A1 arduina. Napájecí Vcc a GND jsou připojeny k napájecím kolíkům arduino.

Poznámka: Ujistěte se, že váš snímač má zabudovaný pull-up rezistor, pokud ho nemá, připojte 4,7K pull-up rezistor na výstupní kolík senzoru DHT11.

Senzor BMP180:

BMP180 je barometrický senzor, který dokáže měřit atmosférický tlak, nadmořskou výšku a teplotu. Měření teploty z tohoto snímače je zanedbáváno, protože jsme určili snímač pro měření teploty okolí.

Senzor měří nadmořskou výšku instalace z hladiny moře, je také jedním z parametrů používaných v meteorologii.

Kruhový diagram:

propojení BM180 s Arduino
Využívá komunikační protokol I2C, pin SDA jde na A4 arduina a SCL na A5 arduina. Vcc a GND jsou připojeny k napájecím kolíkům arduina.

Připojení LCD:

čidlo vlhkosti pomocí Aduino


LCD displej zobrazuje všechna data ze senzorů. Spojení mezi LCD displejem a Arduino je standardní, podobné spojení najdeme na mnoha dalších projektech založených na LCD. Nastavte 10K potenciometr pro optimální viditelnost z LCD displeje.

Autorův prototyp:

obrázek prototypu meteorologické stanice

Tady je autorův prototyp obvodu mini počasí, kde jsou všechny senzory zobrazené ve schématech připojeny k desce arduino.

Poznámka: Připojení obvodu od každého senzoru a LCD displeje by mělo být připojeno k jedné desce arduino. Na každém schématu jsme dali diskrétní připojení senzoru, abychom zabránili nejasnostem při duplikování obvodu.

Před nahráním kódu si stáhněte soubory knihovny:

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

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

Programový kód:

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

POZNÁMKA:

Vysvětlení obvodu mini meteorologické stanice trvá 2 minuty, než se zobrazí hodnoty ze snímače, do té doby se zobrazí „Senzory se připravují“. Je to proto, že senzoru MQ-135 trvá 2 minuty, než dosáhne optimální provozní teploty.




Předchozí: Jak postavit jednoduchý sušák na hadřík pro období dešťů Další: Obvodový autíčko