Lav dette enkle vejrstationsprojekt til hjem og kontorer

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi konstruere et interessant Arduino-baseret mini-vejrstationsprojekt, som kan vise dig omgivelsestemperatur, fugtighed, tryk, luftkvalitet og meget mere data fra dine omgivelser, som kan bruges til at forudsige vejr hjemmefra.



Hvis du er interesseret i meteorologi, kan dette projekt være nyttigt til at studere om lokale vejrforhold og kortsigtede ændringer. Det foreslåede projekt er solid state-design, hvilket betyder, at der ikke findes nogen bevægelige dele.

Dette projekt kan placeres i indendørs eller semi-indendørs forhold, hvor kredsløbet er væk fra direkte sollys eller kraftig vind eller fugt, som kan forringe sensorerne om bord.



Designet:

Det foreslåede mini-vejrstation kredsløbsprojekt er bygget op omkring Arduino, som er hjernen i vejrstationen, der indsamler masser af data fra forskellige sensorer og behandler dem og vises på 16x2 LCD-skærm.

Du kan vælge dit foretrukne arduino-kort til dette projekt. Kredsløbet består af tre sensorer MQ-135, BMP180 og DHT11. Lad os se, hvad hver sensor gør i detaljer.

MQ-135 sensor:

MQ-135 er en målesensor til luftkvalitet, som kan registrere kuldioxid, alkohol, benzen, røg, butan, propan osv. Hvis den kemiske koncentration af disse gasser er høj i luften, kan vi sige, at luft er forurenet.

Sensoren kan registrere ændringer i koncentrationen af ​​forurenende stoffer i luften og giver passende spændingsniveau. Sensorens udgangsspænding er direkte proportional med det kemiske koncentrationsniveau i luften.

Spændingsvariationen fra sensoren tilføres Arduino, vi har forudbestemte tærskelniveauer i programmet. Når den krydser tærskelværdien, fortæller mikrocontrolleren os, om luften er sikker eller ej.

Kredsløbsdiagram

interface MQ135 sensor med vejrstation kredsløb

Ovenstående diagram viser ledningsdiagrammet. Denne sensor har brug for ekstern 5V-forsyning, fordi den har varmeelement inde i sensoren, der bruger omkring 1 Watt. Strømmen fra arduinos strømnål kan ikke levere højere strøm.

Varmeelementet holder sensoren varm og hjælper med at prøve en passende mængde kemisk koncentration i luften. Sensoren tager cirka et par minutter at nå den optimale temperatur.

DHT11-sensor:

DHT11-sensor er populært kendt som temperatur- og fugtighedsføler. Det kan måle temperatur og fugtighed fra omgivelserne, som navnet antyder.

Det er en 4-benet enhed, men kun 3 af dem bruges. Det kan se ud som en meget enkel komponent, men den har en mikrokontroller inde i sensoren, der sender dataene i digital form til arduino-kortet.

Det sender 8 bit data hvert sekund til arduino, for at afkode det modtagne signal skal vi medtage bibliotek i koden, der er designet til at håndtere det. Linket til biblioteket er angivet senere i artiklen.

Kredsløbsdiagram:

interface DH11 med arduino

Kredsløbstilslutningen fra sensor til arduino er meget enkel. Udgangen fra sensoren er forbundet til A1-pin af arduino. Forsyningen Vcc og GND er forbundet til strømforsyningsstifter fra arduino.

Bemærk: Sørg for, at din sensor har indbygget pull-up-modstand, hvis den ikke har en tilslut en 4.7K pull-up-modstand ved udgangsstiften på DHT11-sensoren.

BMP180 sensor:

BMP180 er en barometrisk sensor, den kan måle atmosfærisk tryk, højde og temperatur. Temperaturmålingen fra denne sensor ignoreres, da vi har dedikeret sensor til måling af omgivelsestemperaturen.

Sensoren måler opsætningens højde fra havets overflade, det er også en af ​​de parametre, der bruges i meteorologi.

Kredsløbsdiagram:

grænseflade BM180 med Arduino
Den bruger I2C-kommunikationsprotokol, SDA-stiften går til A4 i arduino og SCL går til A5 i arduino. Vcc og GND er tilsluttet strømforsyningsstifter fra arduino.

LCD-forbindelse:

fugtighedsføler ved hjælp af Aduino


LCD-displayet viser alle data fra sensorerne. Forbindelsen mellem LCD-skærm og arduino er standard, vi kan finde lignende forbindelse på mange andre LCD-baserede projekter. Juster 10K potentiometeret for optimal synlighed fra LCD-skærmen.

Forfatterens prototype:

vejrstation prototype billede

Her er forfatterens prototype af et mini-vejrovervågningskredsløb, hvor alle sensoren vist i skemaerne er forbundet til arduino-kortet.

Bemærk: Kredsløbstilslutningen fra hver sensor og LCD-skærm skal tilsluttes til et enkelt arduino-kort. Vi har givet diskret sensorforbindelse på hvert skema for at undgå forvirring under duplikering af kredsløbet.

Download bibliotekets filer, før du uploader 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)
}
}

BEMÆRK:

Det forklarede mini-vejrstationskredsløb tager 2 minutter at vise målingerne fra sensoren, indtil det viser 'Sensorer bliver klar'. Dette skyldes, at MQ-135-sensoren tager 2 minutter at nå den optimale driftstemperatur.




Forrige: Hvordan man bygger en simpel tørretumbler til regntiden Næste: Clap Operated Toy Car Circuit