» elettronica » Arduino »Stazione meteorologica domestica basata su Arduino

Stazione meteorologica domestica basata su Arduino


Per molto tempo ho voluto realizzare una mini stazione meteorologica, stanca di guardare fuori dalla finestra per guardare un termometro dietro il vetro. Questo dispositivo sostituirà igrometro, barometro e termometro e mostrerà anche l'ora corrente. In questo post ti dirò come assemblare rapidamente e facilmente una piccola stazione meteorologica basata su Arduino. La base sarà il consiglio Arduino Nano può usare altre schede: Arduino Uno, Arduino Pro mini). Riceveremo i dati di pressione atmosferica e temperatura dal sensore BMP180 e umidità e temperatura esterna dal sensore DHT11. L'orologio in tempo reale DS1302 indicherà l'ora corrente. Tutte le informazioni sono visualizzate su un display LCD1602 a due righe.

Il DHT11 trasmette informazioni su un singolo filo a un arduino. È alimentato da una tensione di 5 V. Misura l'umidità nell'intervallo dal 20 all'80%. Misure di temperatura nell'intervallo da 0 a 50suS.

Stazione meteorologica domestica basata su Arduino

Il sensore BMP180 misura la pressione atmosferica nell'intervallo 300-1100 hPa, temperatura nell'intervallo -40 +85suC. La tensione di alimentazione è di 3,3 V. È collegata tramite il protocollo di comunicazione I2C.

L'orologio in tempo reale DS1302 è alimentato da 5 V ed è collegato tramite il protocollo di comunicazione I2C. Se installate nell'apposito slot, le batterie CR2032 supportano l'orologio quando l'alimentazione principale viene spenta.

Il display LCD1602 è alimentato da una tensione di 5 Volt ed è anche collegato tramite il protocollo di comunicazione I2C.

questo prodotto fatto in casa realizzato sulla base di schede e sensori già pronti, quindi può essere ripetuto a qualsiasi amante dei principianti per lavorare con un saldatore. Allo stesso tempo, puoi ottenere le basi della programmazione di Arduino. Ho programmato questa stazione meteorologica nel programma di programmazione visiva FLPROG in 15 minuti. Non è necessario disegnare manualmente per ore, questo programma aiuta i principianti (e non solo) a imparare rapidamente le basi dei dispositivi di programmazione basati sulla piattaforma Arduino.

Chi è troppo pigro per armeggiare con il programma - uno schizzo (solo sarà necessario impostare l'ora corrente dell'orologio):
#include 
#include "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
long _bmp085P = 0;
long _bmp085T = 0;
long _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;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
void setup ()
{
Wire.begin ();
ritardo (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, true);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
void loop ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}

// Commissione: 1
if (1) {
_dispTempLength1 = ((((((String ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String ("*")))) + ((((String ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*"))) + ((((String ("")) + (((_floatToStringWitRaz (_dht1 .humidity, 0))) + (String ("%"))))). length ();
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))) + (String ("*")))) + (((String ("")) + ((_floatToStringWitRaz ( _dht1.humidity, 0))) + (String ("%")))));
} altro {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = millis ();
}
}
if (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))));
} altro {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
String _floatToStringWitRaz (valore float, int raz)
{

return String (valore, raz);
}
bool _isTimer (lungo inizio senza segno, lungo periodo senza segno)
{
tempo corrente non firmato;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period));}
}

Puoi utilizzare un dispositivo del genere ovunque o a casa, in natura o in un luogo un'auto. È possibile alimentare il circuito dalle batterie, utilizzando una scheda di carica, alla fine sarà portatile il modello stazioni meteorologiche.

Tutte le informazioni possono essere ottenute guardando il video:


Elenco di materiali e strumenti

Scheda Arduino Nano
display LCD1602 a due righe;
- orologio in tempo reale DS1302;
- sensore di pressione e temperatura atmosferica BMP180;
- sensore di temperatura e umidità DHT11;
-blocco di ricarica dal telefono;
- qualsiasi alloggio adatto
-pintset;
forbici;
saldatore;
-kembrik;
Un tester;
cavi di collegamento;
A quattro fili per sensore remoto.

Primo passo. Costruire un edificio per una stazione meteorologica

Ho preso una scatola di plastica dal negozio Fix Price (17p in totale). Finestra pretagliata per la visualizzazione nel coperchio. Quindi ha parzialmente ritagliato le partizioni nella scatola, praticato dei fori per il connettore USB della scheda Arduino, l'apertura per il sensore BMP180 Il sensore BMP180 sarà posizionato all'esterno del case per evitare che il calore in eccesso elettronico condimenti all'interno. Dopo aver dipinto il corpo del prodotto fatto in casa dall'interno perché la plastica è trasparente. La scatola si chiude con un fermo e in essa tutti gli elementi si adattano perfettamente.


Secondo passo Schema di assemblaggio del dispositivo.

Schema fotografico


Successivamente, è necessario collegare tutte le schede e i sensori della stazione meteorologica secondo lo schema. Lo facciamo utilizzando cavi di montaggio con i connettori appropriati. Non ho effettuato una connessione a saldare, quindi in futuro, quando un modulo si guasta (o per altri motivi), puoi facilmente sostituirlo. Sul connettore a vite, il cavo del sensore DHT11 che va in strada è collegato. L'alimentazione può essere fornita dal connettore USB della scheda Arduino a un computer o fornendo una tensione di 7-12 V ai pin VIN e GND.

Innanzitutto, ho assemblato il circuito all'esterno del contenitore e programmato e il debug nel programma FLPROG.

Diagramma a blocchi di foto nel programma FLPROG.

La prima volta che ho programmato e attivato il circuito della stazione meteorologica, ha funzionato. Ora è diventato possibile avere i dati meteorologici in mare e nella stanza. In generale, è emersa un'interessante stazione meteorologica domestica con molte funzioni diverse.

Foto completa

Un buon design fatto in casa è stato assemblato durante il fine settimana. È stato emozionante realizzare da soli un apparecchio interessante e utile. Per realizzare un dispositivo del genere, penso che anche un principiante possa farlo, non richiede molto tempo e denaro. Puoi applicarlo dove vuoi in una casa in un cottage di campagna. Per tutto il lavoro, sono trascorse due notti nel fine settimana, ho portato tutta l'elettronica a Aliexpress. Il resto dei materiali che ho trovato sull'elicottero. Basato sulla piattaforma Arduino, puoi assemblare un'ampia varietà di dispositivi utili.

Grazie a tutti per l'attenzione, vi auguro successo e buona fortuna sia nella vostra vita che nel vostro lavoro!
9.2
8.2
8.5

Aggiungi un commento

    • sorrideresorrisiXaxabeneDONTKNOWyahoonea
      capozeroimbrogliaresìSì-sìaggressivosegreto
      scusaballaredance2dance3perdonoaiutobevande
      arrestoamicibuonogoodgoodfischiodeliquiolinguetta
      fumobattimanicraydeclarederisoriodon-t_mentionscaricare
      caloreadiratolaugh1mdaincontromoskingnegativo
      not_ipopcornpunireleggerespaventarespaventacerca
      schernirethank_youquestoto_clueumnikacutoconcordare
      cattivobeeeblack_eyeblum3arrossirevanterianoia
      censuratospiritosagginesecret2minacciarevittoriayusun_bespectacled
      ShokRespektlolPrevedbenvenutoKrutoyya_za
      ya_dobryiaiutantene_huliganne_othodiFludbandovicino

Ti consigliamo di leggere:

Passalo per lo smartphone ...