Lag dette enkle værstasjonsprosjektet for hjem og kontorer

Prøv Instrumentet Vårt For Å Eliminere Problemer





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

grensesnitt MQ135 sensor med værstasjonskrets

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:

grensesnitt DH11 med arduino

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:

grensesnitt BM180 med Arduino
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:

fuktighetssensor ved bruk av Aduino


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:

værstasjon prototype bilde

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