Naredite ta preprost projekt vremenske postaje za domove in pisarne

Preizkusite Naš Instrument Za Odpravo Težav





V tej objavi bomo ustvarili zanimiv projekt mini vremenske postaje na osnovi Arduina, ki vam lahko prikaže temperaturo okolice, vlago, tlak, kakovost zraka in še veliko več podatkov iz vaše okolice, ki jih lahko uporabimo za napovedovanje vremena od doma.



Če vas zanima meteorologija, bo ta projekt koristen za preučevanje lokalnih vremenskih razmer in kratkoročnih sprememb. Predlagani projekt je zasnovan v polprevodniškem stanju, kar pomeni, da gibljivi deli ne obstajajo.

Ta projekt je lahko postavljen v notranje ali delno zaprte pogoje, kjer je vezje oddaljeno od neposredne sončne svetlobe ali močnega vetra ali vlage, ki lahko poslabša senzorje na vozilu.



Dizajn:

Predlagani projekt vezja za mini vremensko postajo je zasnovan okrog Arduina, ki je možganov vremenske postaje, ki zbira veliko podatkov iz različnih senzorjev, jih obdeluje in prikazuje na 16x2 LCD zaslonu.

Za ta projekt lahko izberete svojo najljubšo arduino ploščo. Vezje je sestavljeno iz treh senzorjev MQ-135, BMP180 in DHT11. Poglejmo, kaj vsak senzor naredi podrobno.

Senzor MQ-135:

MQ-135 je senzor za merjenje kakovosti zraka, ki lahko zazna ogljikov dioksid, alkohol, benzen, dim, butan, propan itd. Če je koncentracija teh plinov v zraku visoka, lahko rečemo, da je zrak onesnažen.

Senzor lahko zazna spremembo koncentracije onesnaževal v zraku in odda ustrezno napetost. Izhodna napetost senzorja je neposredno sorazmerna s stopnjo koncentracije kemikalij v zraku.

Sprememba napetosti s senzorja se napaja na Arduino, v programu imamo vnaprej določene mejne vrednosti. Ko preseže prag, nam mikrokrmilnik pove, ali je zrak varen ali ne.

Shema vezja

vmesnik senzorja MQ135 z vezjem vremenske postaje

Zgornji diagram prikazuje shemo ožičenja. Ta senzor potrebuje zunanje napajanje 5V, ker ima v senzorju grelni element, ki porabi približno 1 W. Napajanje iz arduino napajalnega zatiča ne more dovajati večjega toka.

Grelni element ohranja senzor toplo in pomaga vzorčiti ustrezno količino kemične koncentracije v zraku. Senzor traja približno nekaj minut, da doseže optimalno temperaturo.

DHT11 senzor:

Senzor DHT11 je v javnosti znan kot senzor temperature in vlage. Kot že ime pove, lahko meri temperaturo in vlago v okolici.

Gre za 4-polno napravo, ki pa se uporablja le 3. Morda je videti kot zelo preprosta komponenta, vendar ima v senzorju mikrokrmilnik, ki podatke v digitalni obliki posreduje na ploščo arduino.

Arduinu vsako sekundo pošlje 8-bitne podatke, za dekodiranje prejetega signala moramo v kodo, ki je zasnovana za njegovo obdelavo, vključiti knjižnico. Povezava do knjižnice je dana v nadaljevanju članka.

Shema vezja:

vmesnik DH11 z arduino

Povezava vezja od senzorja do arduina je zelo preprosta. Izhod senzorja je povezan z zatičem A1 arduino. Napajalna Vcc in GND sta priključena na napajalne zatiče arduino.

Opomba: Prepričajte se, da ima vaš senzor vgrajen uporni upor, če ga nima, na izhodni zatič senzorja DHT11 priključite 4.7K vlečni upor.

Senzor BMP180:

BMP180 je barometrični senzor, ki lahko meri atmosferski tlak, nadmorsko višino in temperaturo. Merjenje temperature s tega senzorja je zanemarjeno, saj imamo namenski senzor za merjenje temperature okolice.

Senzor meri nadmorsko višino naprave od morske gladine, je pa tudi eden izmed parametrov, ki se uporablja v meteorologiji.

Shema vezja:

povezovanje BM180 z Arduinom
Uporablja komunikacijski protokol I2C, pin SDA gre na A4 arduino, SCL pa na A5 arduino. Vcc in GND sta priključena na napajalne zatiče arduino.

Povezava LCD:

senzor vlažnosti z uporabo Aduina


LCD zaslon prikazuje vse podatke s senzorjev. Povezava med LCD zaslonom in arduino je standardna, podobno povezavo lahko najdemo pri številnih drugih projektih, ki temeljijo na LCD. Prilagodite potenciometer 10K za optimalno vidnost na LCD zaslonu.

Avtorjev prototip:

slika prototipa vremenske postaje

Tu je avtorjev prototip vezja mini vremenskega monitorja, kjer so vsi senzorji, prikazani v shemah, povezani z arduino ploščo.

Opomba: Povezava vezja vsakega senzorja in LCD zaslona mora biti povezana na eno ploščo arduino. Na vsaki shemi smo podali ločeno povezavo senzorja, da se izognemo zmedi med podvajanjem vezja.

Pred nalaganjem kode prenesite datoteke iz knjižnice:

Knjižnica DHT11: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Knjižnica BMP180: github.com/adafruit/Adafruit_BMP085_Unified.git

Koda programa:

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

OPOMBA:

Razloženo vezje mini vremenske postaje traja 2 minuti, da prikaže odčitke s senzorja, do takrat pa se prikaže 'Senzorji se pripravljajo'. To je zato, ker senzorju MQ-135 traja 2 minuti, da doseže optimalno delovno temperaturo.




Prejšnja: Kako zgraditi preprost sušilnik za perilo za deževno sezono Naprej: Avtokrog za igrače, ki ga upravlja Clap