Ebben a bejegyzésben egy érdekes Arduino alapú mini időjárás-állomás projektet fogunk készíteni, amely megmutatja a környezeti hőmérsékletet, páratartalmat, nyomást, levegő minőségét és még sok más adatot a környezetéből, amelyek felhasználhatók az időjárás előrejelzésére otthonról.
Ha érdekli a meteorológia, ez a projekt hasznos lehet a helyi időjárási viszonyok és rövid távú változások tanulmányozásához. A javasolt projekt szilárdtest alakú, ami azt jelenti, hogy nincsenek mozgó alkatrészek.
Ezt a projektet beltéri vagy félig beltéri körülmények között lehet megvalósítani, ahol az áramkör nincs közvetlen napfénytől, erős széltől vagy nedvességtől távol, amely ronthatja a fedélzeten lévő érzékelőket.
A dizájn:
A javasolt időjárási állomás mini projektje Arduino köré épül, amely az időjárási állomás agya, amely rengeteg adatot gyűjt különféle érzékelőkből, feldolgozza azokat, és megjeleníti a 16x2 LCD-képernyőt.
Kiválaszthatja kedvenc arduino tábláját ehhez a projekthez. Az áramkör három MQ-135, BMP180 és DHT11 érzékelőből áll. Nézzük meg, hogy az egyes érzékelők mit csinálnak részletesen.
MQ-135 érzékelő:
Az MQ-135 egy levegőminőséget mérő érzékelő, amely képes észlelni a szén-dioxidot, alkoholt, benzolt, füstöt, butánt, propánt stb. Ha ezeknek a gázoknak a kémiai koncentrációja magas a levegőben, akkor azt mondhatjuk, hogy a levegő szennyezett.
Az érzékelő képes érzékelni a levegőben lévő szennyező anyagok koncentrációjának változását, és megfelelő feszültségszintet ad ki. Az érzékelő kimeneti feszültsége egyenesen arányos a levegőben lévő kémiai koncentráció szintjével.
Az érzékelőtől érkező feszültségváltozás az Arduino-hoz kerül, a programban előre meghatározott küszöbszintek vannak. Amikor átlépi a küszöbszintet, a mikrovezérlő megmondja, hogy a levegő biztonságos-e vagy sem.
Kördiagramm
A fenti ábra a bekötési rajzot mutatja. Ennek az érzékelőnek külső 5 V-os tápra van szüksége, mivel az érzékelő belsejében fűtőelem található, amely körülbelül 1 wattot fogyaszt. Az arduino tápcsatlakozójának tápellátása nem képes nagyobb áramot szolgáltatni.
A fűtőelem melegen tartja az érzékelőt, és segít a megfelelő mennyiségű kémiai koncentráció mintavételében a levegőben. Az érzékelő körülbelül pár percet vesz igénybe az optimális hőmérséklet eléréséhez.
DHT11 érzékelő:
A DHT11 érzékelőt közismert nevén Hőmérséklet és páratartalom érzékelő. Meg tudja mérni a környezeti hőmérsékletet és páratartalmat, ahogy a neve is sugallja.
Ez egy 4 tűs eszköz, de csak 3-at használnak. Nagyon egyszerű alkatrésznek tűnhet, de az érzékelőben van egy mikrovezérlő, amely digitális formában továbbítja az adatokat az arduino kártyára.
Másodpercenként 8 bites adatot küld az arduino-nak, a vett jel dekódolásához könyvtárat kell beépítenünk a kódba, amely annak kezelésére készült. A könyvtár linkje a cikk későbbi részében található.
Kördiagramm:
Az áramkör összekapcsolása az érzékelőtől az arduino felé nagyon egyszerű. Az érzékelő kimenete az arduino A1 tűjéhez csatlakozik. A Vcc és a GND tápegység az arduino tápegységeihez csatlakozik.
Megjegyzés: Kérjük, ellenőrizze, hogy az érzékelő beépített ellenállással rendelkezik-e, ha nincs ilyen, csatlakoztasson egy 4,7 K-os ellenállást a DHT11 érzékelő kimeneti tüskéjéhez.
BMP180 érzékelő:
A BMP180 légköri érzékelő, amely képes mérni a légköri nyomást, a magasságot és a hőmérsékletet. Az érzékelő hőmérsékletének mérését elhanyagoljuk, mivel külön érzékelőnk van a környezeti hőmérséklet mérésére.
Az érzékelő a beállítás tengerszint feletti magasságát méri, a meteorológiában használt paraméterek egyike is.
Kördiagramm:
I2C kommunikációs protokollt használ, az SDA pin az arduino A4-re, az SCL pedig az arduino A5-re megy. A Vcc és a GND az arduino tápegységeihez vannak csatlakoztatva.
LCD csatlakozás:
Az LCD kijelző az összes érzékelő adatait megjeleníti. Az LCD kijelző és az arduino közötti kapcsolat szabványos, hasonló kapcsolatot találhatunk más LCD alapú projekteknél is. Állítsa be a 10K potenciométert az optimális láthatóság érdekében az LCD kijelzőről.
A szerző prototípusa:
Itt található a szerző prototípusa egy mini időjárás-figyelő áramkörről, ahol a vázlatokon látható összes érzékelő az arduino táblához csatlakozik.
Megjegyzés: Az egyes érzékelők és az LCD kijelző áramköri csatlakozását egyetlen arduino kártyához kell csatlakoztatni. Az egyes vázlatokon külön szenzor csatlakozást adtunk, hogy elkerüljük az összekapcsolódást az áramkör megismétlése közben.
A kód feltöltése előtt töltse le a Library fájlokat:
DHT11 könyvtár: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip
BMP180 könyvtár: github.com/adafruit/Adafruit_BMP085_Unified.git
Program 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)
}
}
JEGYZET:
Az ismertetett mini meteorológiai állomás áramköre 2 percet vesz igénybe, amíg az érzékelő leolvassa az eredményeket, addig az „Az érzékelők készülődnek” felirat jelenik meg. Az MQ-135 érzékelő ugyanis 2 percet vesz igénybe az optimális üzemi hőmérséklet eléréséhez.
Előző: Hogyan készítsünk egy egyszerű ruhaszárítót az esős évszakhoz Következő: Tapsolva működtetett játékautó áramkör