I dette innlegget skal vi konstruere et interessant Arduino-basert mini værstasjonsprosjekt, som kan vise deg omgivelsestemperatur, fuktighet, trykk, luftkvalitet og mye mer data fra omgivelsene, som kan brukes til å forutsi vær hjemmefra.
Hvis du er interessert i meteorologi, kan dette prosjektet være nyttig for å studere lokale værforhold og kortsiktige endringer. Det foreslåtte prosjektet er solid state-design, noe som betyr at ingen bevegelige deler eksisterer.
Dette prosjektet kan plasseres i innendørs eller semi-innendørs forhold, der kretsen er borte fra direkte sollys eller sterk vind eller fuktighet som kan forringe sensorene ombord.
Designet:
Det foreslåtte mini-værstasjonskretsprosjektet er bygget rundt Arduino, som er hjernen til værstasjonen som samler inn masse data fra forskjellige sensorer og behandler dem og vises på 16x2 LCD-skjerm.
Du kan velge ditt favoritt arduino bord for dette prosjektet. Kretsen består av tre sensorer MQ-135, BMP180 og DHT11. La oss se hva hver sensor gjør i detalj.
MQ-135 sensor:
MQ-135 er målesensor for luftkvalitet, som kan oppdage karbondioksid, alkohol, benzen, røyk, butan, propan etc. Hvis den kjemiske konsentrasjonen av disse gassene er høy i luften, kan vi si at luft er forurenset.
Sensoren kan oppdage endring i konsentrasjonen av forurensende stoffer i luften og gir ut passende spenningsnivå. Sensorens utgangsspenning er direkte proporsjonal med kjemisk konsentrasjonsnivå i luften.
Spenningsvariasjonen fra sensoren mates til Arduino, vi har forhåndsbestemte terskelnivåer i programmet. Når den krysser terskelnivået, forteller mikrokontrolleren oss om luften er trygg eller ikke.
Kretsdiagram
Ovenstående diagram viser koblingsskjemaet. Denne sensoren trenger ekstern 5V forsyning fordi den har varmeelement inne i sensoren som bruker omtrent 1 Watt. Strømmen fra arduinos strømnål kan ikke levere høyere strøm.
Varmeelementet holder sensoren varm og hjelper til med å prøve passende mengde kjemisk konsentrasjon i luften. Sensoren tar omtrent et par minutter å oppnå optimal temperatur.
DHT11-sensor:
DHT11-sensor er populært kjent som temperatur- og fuktighetssensor. Det kan måle temperatur og fuktighet fra omgivelsene som navnet antyder.
Det er en 4-pins enhet, men bare 3 av dem brukes. Det kan se ut som en veldig enkel komponent, men den har en mikrokontroller inne i sensoren som sender dataene i digital form til arduino-kortet.
Det sender 8 bit data hvert sekund til arduino, for å dekode det mottatte signalet, må vi inkludere bibliotek i koden som er designet for å håndtere det. Lenken til biblioteket er gitt senere i artikkelen.
Kretsskjema:
Kretsforbindelsen fra sensor til arduino er veldig enkel. Utgangen til sensoren er koblet til A1-pinnen til arduino. Forsyningen Vcc og GND er koblet til strømforsyningspinnene til arduino.
Merk: Forsikre deg om at sensoren din har innebygd opptrekksmotstand, hvis den ikke har en, kobler du en 4,7 K opptrekksmotstand ved utgangsstiften på DHT11-sensoren.
BMP180 sensor:
BMP180 er en barometrisk sensor som kan måle atmosfærisk trykk, høyde og temperatur. Temperaturmålingen fra denne sensoren blir neglisjert, ettersom vi har dedikert sensor for å måle omgivelsestemperaturen.
Sensoren måler høyden på oppsettet fra havnivået, det er også en av parameterne som brukes i meteorologi.
Kretsdiagram:
Den bruker I2C kommunikasjonsprotokoll, SDA-pinnen går til A4 av arduino og SCL går til A5 av arduino. Vcc og GND er koblet til strømforsyningspinnene til arduino.
LCD-tilkobling:
LCD-skjermen viser alle dataene fra sensorene. Forbindelsen mellom LCD-skjerm og arduino er standard, vi kan finne lignende tilkobling på mange andre LCD-baserte prosjekter. Juster 10K potensiometeret for optimal synlighet fra LCD-skjermen.
Forfatterens prototype:
Her er forfatterens prototype av en mini-værovervåkningskrets der all sensoren vist i skjemaene er koblet til arduino-kortet.
Merk: Kretsforbindelsen fra hver sensor og LCD-skjerm skal kobles til et enkelt arduino-kort. Vi har gitt diskret sensortilkobling på hvert skjema for å unngå forvirring mens du dupliserer kretsen.
Last ned biblioteksfilene før du laster opp koden:
DHT11-bibliotek: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip
BMP180-bibliotek: github.com/adafruit/Adafruit_BMP085_Unified.git
Programkode:
#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)
}
}
MERK:
Det forklarte mini-værstasjonskretsen tar to minutter å vise avlesningene fra sensoren, inntil da viser det 'Sensorer blir klare'. Dette er fordi MQ-135-sensoren tar 2 minutter å oppnå optimal driftstemperatur.
Forrige: Hvordan bygge en enkel tørketrommel for regntiden Neste: Clap Operated Toy Car Circuit