» elektronikk » Arduino »Hjemme værstasjon basert på Arduino

Hjemme værstasjon basert på Arduino


I lang tid ønsket jeg å lage en mini værstasjon, lei av å se ut av vinduet for å se på et termometer bak glasset. Denne enheten erstatter hygrometer, barometer og termometer og viser også gjeldende tid. I dette innlegget vil jeg fortelle deg hvordan du raskt og enkelt kan montere en liten værstasjon basert på Arduino. Grunnlaget vil være styret Arduino Nano kan bruke andre brett - Arduino Uno, Arduino Pro mini). Vi vil motta atmosfæretrykk og temperaturdata fra BMP180-sensoren, og fuktighet og utetemperatur fra DHT11-sensoren. DS1302 sanntids klokke vil indikere gjeldende tid. All informasjon vises på en to-linjes LCD1602-skjerm.

DHT11 overfører informasjon over en enkelt ledning til en arduino. Den drives av en spenning på 5 V. Den måler fuktighet i området fra 20 til 80%. Temperatur måler i området 0 til 50omtrentS.

Hjemme værstasjon basert på Arduino

BMP180-sensoren måler atmosfæretrykk i området 300-1100 hPa, temperatur i området -40 +85omtrentC. Forsyningsspenningen er 3,3 V. Den er tilkoblet via I2C kommunikasjonsprotokoll.

DS1302 sanntids klokke drives av 5 V og kobles til via I2C kommunikasjonsprotokoll. Når de er installert i riktig spor, støtter CR2032-batterier klokken når hovedstrømmen er slått av.

LCD1602-skjermen drives av en spenning på 5 volt og er også tilkoblet via I2C-kommunikasjonsprotokollen.

dette hjemmelaget produkt laget på basis av ferdige brett og sensorer, slik at det kan gjentas for enhver nybegynner-kjæreste å jobbe med loddejern. Samtidig kan du få det grunnleggende om programmering av Arduino. Jeg programmerte denne værstasjonen i det visuelle programmeringsprogrammet FLPROG på 15 minutter. Ingen grunn til å manuelt skisse i flere timer, dette programmet hjelper nybegynnere (og ikke bare) raskt å lære det grunnleggende om programmeringsenheter basert på Arduino-plattformen.

Hvem er for lat til å snakke med programmet - en skisse (bare det vil være nødvendig å stille inn klokkeslettet):
#include 
# inkluder "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
lang _bmp085P = 0;
lang _bmp085T = 0;
lang _bmp085A = 0;

LiquidCrystal_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLength1 = 0;
boolsk _isNeedClearDisp1;

DHT _dht1;

iarduino_RTC _RTC1 (RTC_DS1302, 7, 5, 6);

usignert lang _dht1LRT = 0UL;
usignert lang _dht1Tti = 0UL;
int _disp1oldLength = 0;
usignert lang _bmp0852Tti = 0UL;
Streng _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
ugyldig oppsett ()
{
Wire.begin ();
forsinkelse (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, true);
_RTC1.begin ();
_RTC1.periode (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);
}

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

}
Streng _floatToStringWitRaz (float value, int raz)
{

return String (verdi, raz);
}
bool _isTimer (usignert lang starttid, usignert lang periode)
{
usignert lang strømtid;
strømtid = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + periode));} else {return (currentTime> = (4294967295-startTime + periode));}
}

Du kan bruke en slik enhet hvor som helst eller hjemme, i naturen eller plassere i en bil. Det er mulig å strømme kretsen fra batteriene ved bruk av et ladetavle til slutt vil være bærbar modellen værstasjoner.

All informasjon kan fås ved å se på videoen:


Liste over materialer og verktøy

Arduino Nano styre
to-linjes LCD1602 skjerm;
- sanntids klokke DS1302;
- atmosfærisk trykk og temperatursensor BMP180;
- temperatur- og fuktighetssensor DHT11;
-blokker lading fra telefonen;
- eventuelle passende boliger
-pintset;
saks,
loddejern;
-kembrik;
A tester;
-kobler ledninger;
Fire ledninger for ekstern sensor.

Første trinn. Lage en bygning for en værstasjon

Jeg hentet en plastboks fra Fix Price-butikken (totalt 17p). Forkutt vindu for visning i lokket. Deretter kuttet han delvis ut partisjonene i boksen, laget hull til USB-kontakten på Arduino-brettet, åpningen for BMP180-sensoren. BMP180-sensoren vil være plassert på utsiden av saken for å forhindre overdreven oppvarming fra elektronisk pålegg inni. Etter at jeg malte kroppen til det hjemmelagde produktet fra innsiden fordi plasten er gjennomsiktig. Boksen lukkes med en sperre og i den passer alle elementene fint.


Trinn to Monteringsskjema over enheten.

Fotografering


Deretter må du koble alle tavlene og sensorene til værstasjonen i henhold til ordningen. Vi gjør dette ved å bruke monteringsledninger med de aktuelle kontaktene. Jeg opprettet ikke loddetilkobling, så i fremtiden, når en modul mislykkes (eller av andre grunner), kan du enkelt bytte den ut. På skruekontakten er DHT11-sensorkabelen som går til gaten tilkoblet. Strøm kan leveres fra USB-kontakten på Arduino-kortet til en datamaskin, eller ved å bruke en spenning på 7-12V til VIN- og GND-stiften.

Først samlet jeg kretsen utenfor kabinettet og programmerte og feilsøkte den i FLPROG-programmet.

Fotoklossediagram i FLPROG-programmet.

Da jeg først programmerte og slo på værstasjonskretsen, fungerte det. Nå har det blitt mulig å ha værdata over bord og i rommet. Generelt viste det seg at en interessant værstasjon hjemme med mange forskjellige funksjoner.

Bildet er fullført

Et godt hjemmelaget design ble satt sammen i helgen. Det var spennende å lage et interessant og nyttig apparat selv. For å lage et slikt apparat selv, tror jeg at en nybegynner kan gjøre det. Det krever ikke mye tid og penger. Du kan bruke den hvor du vil i et hus i en hytte. For hele arbeidet gikk det to helgens netter, jeg tok all elektronikken til Aliexpress. Resten av materialene fant jeg på huggeren. Basert på Arduino-plattformen kan du sette sammen et bredt utvalg av nyttige enheter.

Takk alle for oppmerksomheten, jeg ønsker deg suksess og lykke til både i livet og i arbeidet ditt!
9.2
8.2
8.5

Legg til en kommentar

    • smilersmilerxaxaokdontknowyahoonea
      sjefscratchlurejaja-jaaggressivhemmelighet
      beklagerdansedance2dance3benådninghjelpdrikkevarer
      stoppvennergodgoodgoodfløytebesvimelsetunge
      røykklappingCrayerklærehånligdon-t_mentionnedlasting
      heteirefullaugh1MDAmøtemoskingnegative
      not_ipopcornstraffeleseskremmeskremmersøk
      spydighetthank_youdetteto_clueumnikakuttenig
      dårligbeeeblack_eyeblum3rødmeskrytekjedsomhet
      sensurertpleasantrysecret2trueseieryusun_bespectacled
      ShokRespektlolPrevedvelkommenKrutoyya_za
      ya_dobryihelperne_huliganne_othodiFLUDforbudnær

Vi anbefaler deg å lese:

Gi den til smarttelefonen ...