» Electronics » Arduino »Tahanan ng istasyon ng panahon batay sa Arduino

Home station istasyon batay sa Arduino


Sa loob ng mahabang panahon nais kong gumawa ng isang mini istasyon ng panahon, pagod na tumingin sa labas ng window upang tumingin sa isang thermometer sa likod ng baso. Papalitan ng aparatong ito ang hygrometer, barometer at thermometer at ipinapakita din ang kasalukuyang oras. Sa post na ito sasabihin ko sa iyo kung paano mabilis at madaling mag-ipon ng isang maliit na istasyon ng panahon batay sa Arduino. Ang batayan ay magiging board Arduino Ang Nano ay maaaring gumamit ng iba pang mga board - Arduino Uno, Arduino Pro mini). Makakatanggap kami ng presyur at temperatura ng temperatura mula sa sensor ng BMP180, at kahalumigmigan at panlabas na temperatura mula sa sensor ng DHT11. Ang orasan ng DS1302 real-time ay magpapakilala sa kasalukuyang oras. Ang lahat ng impormasyon ay ipinapakita sa isang dalawang linya na LCD1602 display.

Ang DHT11 ay naghahatid ng impormasyon sa isang solong kawad sa isang arduino. Ito ay pinalakas ng boltahe ng 5 V. Sinusukat nito ang halumigmig sa saklaw mula 20 hanggang 80%. Ang mga panukalang temperatura sa saklaw ng 0 hanggang 50tungkol saC.

Home station istasyon batay sa Arduino

Sinusukat ng sensor ng BMP180 sensor ang presyon ng atmospera sa saklaw na 300-1100 hPa, temperatura sa saklaw ng -40 +85tungkol saC. Ang supply boltahe ay 3.3 V. Ito ay konektado sa pamamagitan ng komunikasyon na komunikasyon ng I2C.

Ang orasan ng DS1302 real-time ay pinalakas ng 5 V at konektado sa pamamagitan ng protocol ng komunikasyon ng I2C. Kapag na-install sa naaangkop na puwang, ang mga baterya ng CR2032 ay sumusuporta sa orasan kapag ang pangunahing kapangyarihan ay naka-off.

Ang display LCD1602 ay pinalakas ng isang boltahe ng 5 Volts at konektado din sa pamamagitan ng protocol ng komunikasyon I2C.

Ito gawang bahay Ginagawa ito batay sa mga yari na board at sensor, kaya maaari itong ulitin ng anumang nagsisimula upang gumana sa isang paghihinang bakal. Sa parehong oras, maaari mong makuha ang mga pangunahing kaalaman sa programming Arduino. In-program ko ang istasyon ng panahon na ito sa visual program ng programa ng FLPROG sa loob ng 15 minuto. Hindi na kailangang manu-mano ang pag-sketch ng maraming oras, tumutulong ang program na ito sa mga nagsisimula (at hindi lamang) mabilis na matutunan ang mga pangunahing kaalaman sa mga aparato ng programming batay sa platform ng Arduino.

Sino ang masyadong tamad upang makintal sa programa - isang sketsa (kailangan mo lamang itakda ang kasalukuyang oras ng orasan):
#include 
#include "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
mahaba _bmp085P = 0;
mahaba _bmp085T = 0;
mahaba _bmp085A = 0;

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

DHT _dht1;

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

hindi naka-unsign na haba _dht1LRT = 0UL;
hindi naka-unsign na haba _dht1Tti = 0UL;
int _disp1oldLength = 0;
hindi naka-unsign na haba _bmp0852Tti = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
walang pag-setup ()
{
Wire.begin ();
pagkaantala (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, totoo);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
walang bisa loop ()
{kung (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
kung (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}

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

}
String _floatToStringWitRaz (halaga ng float, int raz)
{

ibalik ang String (halaga, raz);
}
bool _isTimer (hindi naka-lagay na mahabang pagsisimula, hindi naka -ignign na mahabang panahon)
{
hindi naka -ignign na mahabang kasalukuyangTime;
kasalukuyangTime = millis ();
kung (kasalukuyangTime> = startTime) {return (currentTime> = (startTime + period));} iba pa {return (currentTime> = (4294967295-startTime + period));}
}

Maaari mong gamitin ang tulad ng isang aparato saan man o sa bahay, sa kalikasan, o lugar sa isang kotse. Posible na kuryente ang circuit mula sa mga baterya, gamit ang isang board ng singil, sa dulo ay magiging portable ang modelo istasyon ng panahon

Ang lahat ng impormasyon ay maaaring makuha sa pamamagitan ng pagtingin sa video:


Listahan ng mga materyales at tool

Board ng Arduino Nano
two-line LCD1602 display;
- real time orasan DS1302;
- presyon ng atmospera at sensor ng temperatura BMP180;
- sensor ng temperatura at halumigmig DHT11;
-block singilin mula sa telepono;
- anumang naaangkop na pabahay
sipit;
gunting;
paghihinang iron;
Cambridge;
tester;
-konekta sa mga wire;
Apat na wire para sa remote sensor.

Unang hakbang. Ang paggawa ng isang gusali para sa isang istasyon ng panahon

Kumuha ako ng isang plastic box mula sa tindahan ng Fix Presyo (kabuuang 17p). Pre cut window para maipakita sa talukap ng mata. Pagkatapos ay bahagyang pinutol niya ang mga partisyon sa kahon, na ginawa mga butas para sa USB konektor ng Arduino board, ang pagbubukas para sa BMP180 sensor Ang sensor ng BMP180 ay matatagpuan sa labas ng kaso upang maiwasan ang labis na pag-init mula sa e toppings sa loob. Matapos kong ipinta ang katawan ng produktong gawang bahay mula sa loob sapagkat ang plastik ay transparent. Ang kahon ay nagsasara ng isang trangka at sa loob nito ang lahat ng mga elemento ay magkasya nang maayos.


Hakbang Dalawang Assembly diagram ng aparato.

Scheme ng larawan


Susunod, kailangan mong ikonekta ang lahat ng mga board at sensor ng istasyon ng panahon ayon sa pamamaraan. Ginagawa namin ito gamit ang pag-mount ng mga wire sa naaangkop na konektor. Hindi ako gumawa ng koneksyon sa panghinang, kaya sa hinaharap, kapag nabigo ang isang module (o para sa iba pang mga kadahilanan), madali mong palitan ito. Sa konektor ng tornilyo, ang cable cable ng DHT11 na pupunta sa kalye ay konektado. Ang kapangyarihan ay maaaring ibigay mula sa USB konektor ng Arduino board sa isang computer, o sa pamamagitan ng pagbibigay ng isang boltahe ng 7-12V sa VIN at GND pin.

Una, tipunin ko ang circuit sa labas ng enclosure at na-program at na-debug ito sa programa ng FLPROG.

Larawan ng diagram ng bloke sa programa ng FLPROG.

Nang una kong ma-program at naka-on ang circuit ng istasyon ng panahon, gumana ito. Ngayon posible na magkaroon ng data ng panahon sa dagat at sa silid. Sa pangkalahatan, ang isang kawili-wiling istasyon ng panahon ng bahay na may maraming iba't ibang mga pag-andar ay naka-out.

Kumpleto ang larawan

Ang isang mahusay na disenyo ng gawa sa bahay ay natipon sa katapusan ng linggo. Nakatutuwang gumawa ng isang kawili-wili at kapaki-pakinabang na kagamitan sa iyong sarili. Upang gumawa ng tulad ng isang aparato sa iyong sarili, sa palagay ko kahit ang isang baguhan ay maaaring gawin ito.Hindi ito nangangailangan ng maraming oras at pera. Maaari mong ilapat ito kung saan mo nais sa isang bahay sa isang kubo ng bansa. Para sa buong trabaho, dalawang gabi ng katapusan ng linggo, kinuha ko ang lahat ng mga elektronik sa Aliexpress. Ang natitirang mga materyales na natagpuan ko sa puthaw. Batay sa Arduino platform, maaari kang mag-ipon ng iba't ibang mga kapaki-pakinabang na aparato.

Salamat sa lahat para sa iyong pansin, nais kong tagumpay at good luck kapwa sa iyong buhay at sa iyong trabaho!
9.2
8.2
8.5

Magdagdag ng isang puna

    • ngitinakangitixaxaok langhindi alamyahoonea
      bosskumamottangaoooo-ooagresibolihim
      sorrysayawsayaw2sayaw3kapatawarantumulonginumin
      humintomga kaibiganmabutigoodgoodsipolswoondila
      usokpumapalakpakkrayolaipahayagnakakainisdon-t_mentionpag-download
      initnakakainistumawa1mdapagpupulongnakikipag-usapnegatibo
      hindi_ipopcornparusahanbasahintakottakotpaghahanap
      panunuyasalamat_youitoto_clueumniktalamaksumang-ayon
      masamabeeeblack_eyeblum3namulamagyabanginip
      censoredkaaya-ayalihim2nagbabantatagumpayyusun_bespectacled
      shokrespektlolnagustuhanmaligayang pagdatingkrutoyya_za
      ya_dobryikatulongne_huliganne_othodimapusokpagbabawalmalapit

Pinapayuhan ka naming basahin:

Ipasa ito para sa smartphone ...