Feia temps que volia fer una mini estació meteorològica, cansada de mirar per la finestra per mirar un termòmetre darrere del vidre. Aquest dispositiu substituirà l’higròmetre, el baròmetre i el termòmetre i també mostrarà l’hora actual. En aquest post us explicaré com muntar de forma ràpida i fàcil una petita estació meteorològica basada en Arduino. La base serà la junta Arduino Nano pot utilitzar altres taulers: Arduino Uno, Arduino Pro mini). Rebrem dades de pressió i temperatura atmosfèriques del sensor BMP180 i humitat i temperatura exterior del sensor DHT11. El rellotge en temps real del DS1302 indicarà l’hora actual. Tota la informació es mostra a la pantalla LCD1602 de dues línies.
El DHT11 transmet informació a través d'un sol cable a un arduino. S'alimenta amb una tensió de 5 V. Mesura la humitat entre el 20 i el 80%. La temperatura mesura entre 0 i 50sobreC.
El sensor BMP180 mesura la pressió atmosfèrica entre els 300-1100 hPa i la temperatura de -40 +85sobreC. La tensió d'alimentació és de 3,3 V. Es connecta mitjançant el protocol de comunicació I2C.
El rellotge en temps real del DS1302 funciona amb 5 V i es connecta mitjançant el protocol de comunicació I2C. Quan s’instal·len a la ranura adequada, les bateries CR2032 suporten el rellotge quan s’apaga l’alimentació principal.
La pantalla LCD1602 funciona amb un voltatge de 5 volts i també es connecta mitjançant el protocol de comunicació I2C.
Això casolans fabricat sobre la base de taulers i sensors preparats, de manera que es pot repetir a qualsevol amant novell per treballar amb una planxa de soldadura. Al mateix temps, podeu obtenir els fonaments bàsics de la programació d’Arduino. Vaig programar aquesta estació meteorològica al programa de programació visual FLPROG en 15 minuts. No cal que esbossin manualment durant hores, aquest programa ajuda els principiants (i no només) a aprendre ràpidament els fonaments bàsics dels dispositius de programació basats en la plataforma Arduino.
Qui és massa mandrós per empassar-se amb el programa: un croquis (només cal que configureu l’hora actual del rellotge):
#incloure
#inclou "DHT_NEW.h"
#incloure
#include
#incloure
BMP085 _bmp085 = BMP085 ();
llarg _bmp085P = 0;
llarg _bmp085T = 0;
llarg _bmp085A = 0;
LiquidCrystal_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLength1 = 0;
booleano _isNeedClearDisp1;
DHT _dht1;
iarduino_RTC _RTC1 (RTC_DS1302, 7, 5, 6);
unsigned long _dht1LRT = 0UL;
unsigned long _dht1Tti = 0UL;
int _disp1oldLength = 0;
unsigned long _bmp0852Tti = 0UL;
Cadena _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
nul configuració ()
{
Wire.begin ();
retard (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, true);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
bucle void ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}
// Taxa: 1
si (1) {
_dispTempLength1 = ((((((Cadena ("T:"))) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String ("*")))) + ((String ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0)) + + (Cadena ("*"))) + (((String ("")) + + ((_floatToStringWitRaz (_dht1 .humitat, 0))) + (Cadena ("%"))))). longitud ();
if (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 0);
_lcd1.print (((((String ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String ("*")))) + (((String) ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0)) + + (Cadena ("*")))) + (((String (""))) + ((_floatToStringWitRaz ( _dht1.humity, 0))) + (Cadena ("%")))));
} més {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = millis ();
}
}
si (1) {
_dispTempLength1 = ((((((String ("t:")) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut)))). );
if (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 1);
_lcd1.print ((((((String ("t:")))) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut))));
} més {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");
}
String _floatToStringWitRaz (float value, int raz)
{
retorn de la cadena (valor, raz);
}
bool _isTimer (inici llarg signat, temps llarg sense signar)
{
unsigned long currentTime;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + període));} else {return (currentTime> = (4294967295-startTime + període));}
}
Podeu utilitzar aquest dispositiu en qualsevol lloc o a casa, a la naturalesa o al lloc un cotxe. És possible alimentar el circuit des de les bateries, mitjançant una placa de càrrega, al final serà portàtil el model estacions meteorològiques.
Tota la informació es pot obtenir consultant el vídeo:
Llista de materials i eines
Arduino Nano Board
pantalla LCD1602 de dues línies;
- rellotge en temps real DS1302;
- Sensor de pressió i temperatura atmosfèrica BMP180;
- sensor de temperatura i humitat DHT11;
-bloquejar la càrrega des del telèfon;
- qualsevol habitatge adequat
pinces;
tisores;
soldadura;
Cambridge;
provador;
-Cables de connexió;
De quatre fils per a sensor remot.
Primer pas. Realització d'un edifici per a una estació meteorològica
Vaig agafar una caixa de plàstic de la botiga Fix Price (total 17p). Finestra prèvia al tall per mostrar-la a la tapa. A continuació, va tallar parcialment les particions a la caixa, va fer forats per al connector USB de la placa Arduino, l’obertura per al sensor BMP180 El sensor BMP180 es localitzarà a la part exterior de la caixa per evitar un escalfament excessiu de e coberts al seu interior. Després vaig pintar el cos del producte casolà per dins perquè el plàstic és transparent. La caixa es tanca amb un pany i en ella s’hi encaixen tots els elements.
Pas Segon Esquema de muntatge del dispositiu.
Esquema fotogràfic
A continuació, heu de connectar totes les plaques i sensors de l’estació meteorològica segons l’esquema. Això ho fem mitjançant el muntatge de cables amb els connectors adequats. No he realitzat una connexió de soldadura, així que en el futur, quan un mòdul falla (o per altres motius), podeu substituir-lo fàcilment. Al connector del cargol, es connecta el cable del sensor DHT11 que surt al carrer. L’alimentació es pot subministrar des del connector USB de la placa Arduino a un ordinador o subministrant una tensió de 7-12V al pin VIN i GND.
Primer, vaig muntar el circuit fora del recinte i el vaig programar i el vaig depurar al programa FLPROG.
Diagrama de blocs fotogràfics al programa FLPROG.
Quan vaig programar i encendre el circuit de l'estació meteorològica, va funcionar. Ara ha esdevingut possible tenir dades meteorològiques al mar i a la sala. En general, ha resultat una interessant estació meteorològica domèstica amb moltes funcions diferents.
Foto completa
El cap de setmana es va muntar un bon disseny casolà. Va ser emocionant fer-te un aparell interessant i útil. Per fabricar un dispositiu tu mateix, crec que fins i tot un principiant pot fer-ho, no necessita molt temps i diners. Podeu aplicar-lo allà on vulgueu en una casa d'una casa rural. Per a tota la feina, dues nits de cap de setmana van anar, vaig portar tota l’electrònica a Aliexpress. La resta de materials que he trobat a la picadora. Basat en la plataforma Arduino, podeu muntar una gran varietat de dispositius útils.
Gràcies a tots per la vostra atenció, us desitjo èxit i molta sort tant a la vostra vida com a la vostra feina!