Gör detta enkla väderstationsprojekt för hem och kontor

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi konstruera ett intressant Arduino-baserat miniväderstationsprojekt, som kan visa dig omgivningstemperatur, luftfuktighet, tryck, luftkvalitet och mycket mer data från din omgivning, som kan användas för att förutsäga väder hemifrån.



Om du är intresserad av meteorologi kan det här projektet vara till nytta för att studera om lokala väderförhållanden och kortsiktiga förändringar. Det föreslagna projektet är halvledarkonstruktion, vilket innebär att inga rörliga delar finns.

Detta projekt kan placeras i inomhus- eller semi-inomhusförhållanden, där kretsen är borta från direkt solljus eller kraftig vind eller fukt som kan försämra sensorerna ombord.



Designen:

Det föreslagna mini-väderstationskretsprojektet är byggt runt Arduino, som är väderstationens hjärna som samlar in massor av data från olika sensorer och bearbetar dem och visas på 16x2 LCD-skärm.

Du kan välja ditt favorit arduino-kort för detta projekt. Kretsen består av tre sensorer MQ-135, BMP180 och DHT11. Låt oss se vad varje sensor gör i detalj.

MQ-135-sensor:

MQ-135 är en luftkvalitetsmätningssensor som kan detektera koldioxid, alkohol, bensen, rök, butan, propan etc. Om den kemiska koncentrationen av dessa gaser är hög i luften kan vi säga att luft är förorenad.

Sensorn kan upptäcka förändringar i koncentrationen av föroreningar i luften och ger lämplig spänningsnivå. Givarens utspänning är direkt proportionell mot den kemiska koncentrationsnivån i luften.

Spänningsvariationen från sensorn matas till Arduino, vi har förutbestämda tröskelnivåer i programmet. När den passerar tröskelnivån berättar mikrokontrollern om luften är säker eller inte.

Kretsschema

gränssnitt MQ135-sensor med väderstationskrets

Ovanstående diagram visar kopplingsschemat. Denna sensor behöver extern 5V-matning eftersom den har värmeelement inuti sensorn som förbrukar cirka 1 Watt. Strömmen från arduinos kraftuttag kan inte ge högre ström.

Värmeelementet håller sensorn varm och hjälper till att prova lämplig mängd kemisk koncentration i luft. Det tar ungefär några minuter för sensorn att nå optimal temperatur.

DHT11-sensor:

DHT11-sensorn är populärt känd som temperatur- och luftfuktighetssensor. Det kan mäta temperatur och fuktighet från omgivningen som namnet antyder.

Det är en 4-stifts enhet men endast 3 av dem används. Det kan se ut som en mycket enkel komponent, men den har en mikrokontroller inuti sensorn som skickar data i digital form till arduino-kortet.

Det skickar 8-bitars data varje sekund till arduino, för att avkoda den mottagna signalen måste vi inkludera bibliotek i koden som är utformad för att hantera den. Länken till biblioteket ges senare delen av artikeln.

Kretsschema:

gränssnitt DH11 med arduino

Kretsanslutningen från sensor till arduino är väldigt enkel. Utgången från sensorn är ansluten till A1-stift av arduino. Försörjningen Vcc och GND är anslutna till arduinos strömförsörjningsstift.

Obs: Se till att din sensor har inbyggt uppdragsmotstånd, om den inte har en anslut ett 4.7K uppdragningsmotstånd vid utgångsstiftet på DHT11-sensorn.

BMP180-sensor:

BMP180 är en barometrisk sensor som kan mäta atmosfärstryck, höjd och temperatur. Temperaturmätningen från denna sensor ignoreras eftersom vi har dedikerad sensor för att mäta omgivningstemperaturen.

Sensorn mäter inställningens höjd från havsnivån, det är också en av parametrarna som används i meteorologin.

Kretsschema:

gränssnitt BM180 med Arduino
Den använder I2C-kommunikationsprotokoll, SDA-stift går till A4 för arduino och SCL går till A5 för arduino. Vcc och GND är anslutna till arduinos strömförsörjningsstift.

LCD-anslutning:

fuktighetssensor med Aduino


LCD-displayen visar alla data från sensorerna. Förbindelsen mellan LCD-skärm och arduino är standard, vi kan hitta liknande anslutning på många andra LCD-baserade projekt. Justera 10K potentiometern för optimal synlighet från LCD-skärmen.

Författarens prototyp:

väderstation prototyp bild

Här är författarens prototyp av en mini-väderövervakningskrets där alla sensorer som visas i schemat är anslutna till arduino-kortet.

Obs! Kretsanslutningen från varje sensor och LCD-skärm ska anslutas till ett enda arduino-kort. Vi har gett diskret sensoranslutning på varje schema för att undvika förvirring när du duplicerar kretsen.

Ladda ner biblioteksfilerna innan du laddar upp koden:

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

BMP180-bibliotek: github.com/adafruit/Adafruit_BMP085_Unified.git

Programkod:

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

NOTERA:

Den förklarade miniväderstationskretsen tar två minuter att visa avläsningarna från sensorn, tills dess visar 'Sensorerna håller på att redo'. Detta beror på att MQ-135-sensorn tar 2 minuter för att nå optimal driftstemperatur.




Tidigare: Hur man bygger en enkel torktumlare för regnperioden Nästa: Clap Operated Toy Car Circuit