Feu aquest projecte d'estació meteorològica senzilla per a llars i oficines

Proveu El Nostre Instrument Per Eliminar Problemes





En aquest post anem a construir un interessant projecte de mini estació meteorològica basat en Arduino, que us pot mostrar la temperatura ambiental, la humitat, la pressió, la qualitat de l’aire i moltes més dades del vostre entorn, que es poden utilitzar per predir el temps des de casa.



Si us interessa la meteorologia, aquest projecte pot ser útil per estudiar les condicions meteorològiques locals i els canvis a curt termini. El projecte proposat és el disseny d’estat sòlid, el que significa que no existeixen parts mòbils.

Aquest projecte es pot col·locar en condicions interiors o semi-interiors, on el circuit estigui allunyat de la llum solar directa, del fort vent o humitat que pugui deteriorar els sensors a bord.



El disseny:

El projecte de circuit de mini estació meteorològica proposat es basa en Arduino, que és el cervell de l’estació meteorològica que recopila moltes dades de diversos sensors i les processa i es mostra a la pantalla LCD de 16x2.

Podeu triar la vostra placa arduino preferida per a aquest projecte. El circuit consta de tres sensors MQ-135, BMP180 i DHT11. Vegem què fa cada sensor en detall.

Sensor MQ-135:

El MQ-135 és un sensor de mesura de la qualitat de l'aire, que pot detectar diòxid de carboni, alcohol, benzè, fum, butà, propà, etc. Si la concentració química d'aquests gasos és elevada a l'aire, podem dir que l'aire està contaminat.

El sensor pot detectar canvis en la concentració de contaminants a l’aire i proporciona el nivell de tensió adequat. La tensió de sortida del sensor és directament proporcional al nivell de concentració química de l’aire.

La variació de tensió del sensor s’alimenta a Arduino. Hem definit nivells de llindar predeterminats al programa. Quan creua el llindar, el microcontrolador ens indica si l’aire és segur o no.

Esquema de connexions

interfície sensor MQ135 amb circuit d’estació meteorològica

El diagrama anterior mostra el diagrama de cablejat. Aquest sensor necessita un subministrament extern de 5V perquè té un element de calefacció a l’interior del sensor que consumeix al voltant d’1 watt. La potència del pin d’alimentació d’Arduino no pot subministrar corrent superior.

L'element calefactor manté el sensor calent i ajuda a prendre una quantitat adequada de concentració química a l'aire. El sensor triga uns quants minuts a assolir la temperatura òptima.

Sensor DHT11:

El sensor DHT11 es coneix popularment com a sensor de temperatura i humitat. Pot mesurar la temperatura i la humitat dels voltants, tal com el seu nom indica.

És un dispositiu de 4 pins, però només se’n fan servir 3. Pot semblar un component molt senzill, però té un microcontrolador dins del sensor que transmet les dades en forma digital a la placa arduino.

Envia dades de 8 bits cada segon a arduino, per descodificar el senyal rebut, hem d’incloure la biblioteca al codi dissenyat per gestionar-lo. L’enllaç de la biblioteca apareix a la part posterior de l’article.

Esquema de connexions:

interfície DH11 amb arduino

La connexió del circuit del sensor a l'arduino és molt senzilla. La sortida del sensor està connectada al pin A1 d'Arduino. El subministrament Vcc i GND estan connectats a pins d'alimentació d'arduino.

Nota: assegureu-vos que el sensor tingui una resistència de tracció incorporada, si no en té cap, connecteu una resistència de tracció de 4,7 K al pin de sortida del sensor DHT11.

Sensor BMP180:

El BMP180 és un sensor baromètric que permet mesurar la pressió atmosfèrica, l’altitud i la temperatura. Es descuida la mesura de temperatura d’aquest sensor, ja que disposem d’un sensor dedicat per mesurar la temperatura ambiental.

El sensor mesura l'altitud de la configuració des del nivell del mar, també és un dels paràmetres utilitzats en meteorologia.

Esquema de connexions:

interfície BM180 amb Arduino
Utilitza el protocol de comunicació I2C, el pin SDA passa a A4 d’Arduino i SCL a A5 d’Arduino. El Vcc i el GND estan connectats a pins d’alimentació d’arduino.

Connexió LCD:

sensor d


La pantalla LCD mostra totes les dades dels sensors. La connexió entre pantalla LCD i arduino és estàndard, podem trobar connexions similars en molts altres projectes basats en LCD. Ajusteu el potenciòmetre de 10K per obtenir una visibilitat òptima des de la pantalla LCD.

Prototip de l'autor:

imatge prototip de l

Aquí teniu el prototip de l’autor d’un mini circuit de monitorització del temps on tots els sensors que apareixen als esquemes estan connectats a la placa arduino.

Nota: la connexió del circuit de cada sensor i pantalla LCD s’ha de connectar a una sola placa arduino. Hem proporcionat connexió de sensor discreta a cada esquema per evitar confusions mentre es duplica el circuit.

Baixeu-vos els fitxers de la biblioteca abans de penjar el codi:

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

Biblioteca BMP180: github.com/adafruit/Adafruit_BMP085_Unified.git

Codi del 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)
}
}

NOTA:

El circuit explicat de la mini estació meteorològica triga 2 minuts a mostrar les lectures del sensor, fins que aleshores aparegui 'Els sensors s'estan preparant'. Això es deu al fet que el sensor MQ-135 triga 2 minuts a assolir la temperatura òptima de funcionament.




Anterior: Com construir un assecador de roba senzill per a la temporada de pluges Següent: Circuit de cotxes de joguina operat per Clap