» Elektronik » Arduino »Stesen cuaca rumah berdasarkan Arduino

Stesen cuaca rumah berdasarkan Arduino


Untuk masa yang lama saya ingin membuat stesen cuaca mini, bosan melihat keluar tingkap untuk melihat termometer di sebalik kaca. Peranti ini akan menggantikan hygrometer, barometer dan termometer dan juga menunjukkan masa semasa. Dalam siaran ini, saya akan memberitahu anda bagaimana dengan cepat dan mudah memasang stesen cuaca kecil berdasarkan Arduino. Asas akan menjadi papan Arduino Nano boleh menggunakan papan lain - Arduino Uno, Arduino Pro mini). Kami akan menerima data tekanan dan suhu atmosfera dari sensor BMP180, dan kelembapan dan suhu luar dari sensor DHT11. Jam real-time DS1302 akan menunjukkan waktu semasa. Semua maklumat dipaparkan pada paparan LCD1602 dua baris.

DHT11 menghantar maklumat melalui wayar tunggal kepada arduino. Ia dikuasakan oleh voltan 5 V. Ia mengukur kelembapan di antara 20 hingga 80%. Langkah-langkah suhu dalam lingkungan 0 hingga 50kira-kiraC.

Stesen cuaca rumah berdasarkan Arduino

Sensor BMP180 mengukur tekanan atmosfera dalam lingkungan 300-1100 hPa, suhu dalam lingkungan -40 +85kira-kiraC. Voltan bekalan adalah 3.3 V. Ia disambungkan melalui protokol komunikasi I2C.

Jam real-time DS1302 dikuasakan oleh 5 V dan disambungkan melalui protokol komunikasi I2C. Apabila dipasang di slot yang sesuai, bateri CR2032 menyokong jam apabila kuasa utama dimatikan.

Paparan LCD1602 dikuasakan oleh voltan 5 Volt dan juga disambungkan melalui protokol komunikasi I2C.

Ini buatan sendiri Ia dibuat berdasarkan papan sedia ada dan sensor, jadi ia boleh diulang oleh mana-mana pemula untuk bekerja dengan besi pematerian. Pada masa yang sama, anda boleh mendapatkan asas-asas pengaturcaraan Arduino. Saya memprogram stesen cuaca ini dalam program pengaturcaraan visual FLPROG dalam masa 15 minit. Tidak perlu melakar secara manual selama berjam-jam, program ini membantu pemula (dan bukan sahaja) dengan cepat mempelajari asas-asas peranti pengaturcaraan berdasarkan platform Arduino.

Siapa yang terlalu malas untuk mengerling dengan program itu - sketsa (anda hanya perlu menetapkan masa semasa jam):
#include 
#include "DHT_NEW.h"
#include 
#include 
#include 
BMP085 _bmp085 = BMP085 ();
_bmp085P = 0 lama;
lama _bmp085T = 0;
_bmp085A = 0 lama;

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

DHT _dht1;

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

unsigned lama _dht1LRT = 0UL;
unsigned lama _dht1Tti = 0UL;
int _disp1oldLength = 0;
unsigned long _bmp0852Tti = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
batal persediaan ()
{
Wire.begin ();
kelewatan (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, benar);
_RTC1.begin ();
_RTC1.period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
kekosongan gelung ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
jika (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}

// Bayaran: 1
jika (1) {
_dispTempLength1 = ((((((String ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (String (" "(P (" ")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0) .humidity, 0))) + (String ("%"))))). panjang ();
jika (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 0);
(String ("(" * ")))) + ((((((String (" T: ")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00) ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (String ("*" _dht1.humidity, 0))) + (String ("%")))));
} else {
jika (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
jika (_isTimer (_dht1Tti, 2000)) {
jika (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = millis ();
}
}
jika (1) {
_dispTempLength1 = ((((((String ("t:")) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut) );
jika (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 1);
_lcd1.print () () () () ()
} else {
jika (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
String _floatToStringWitRaz (nilai apungan, int raz)
{

kembali String (nilai, raz);
}
bool _isTimer (permulaan lama tidak ditandatangani, tempoh lama tidak ditandatangani)
{
semasa semasa yang tidak ditandatangani;
currentTime = millis ();
jika (semasaTime> = startTime) {return (currentTime> = (startTime + period));} else {return (currentTime> = (4294967295-startTime + period)
}

Anda boleh menggunakan apa-apa peranti di mana-mana atau di rumah, bersifat, atau tempat masuk sebuah kereta. Ia adalah mungkin untuk kuasa litar dari bateri, menggunakan papan caj, pada akhirnya akan mudah alih model itu stesen cuaca.

Semua maklumat boleh didapati dengan melihat video:


Senarai bahan dan alat

Arduino Nano Board
paparan dua baris LCD1602;
- jam masa nyata DS1302;
- Tekanan atmosfera dan sensor suhu BMP180;
- sensor suhu dan kelembapan DHT11;
-block pengecasan dari telefon;
- mana-mana perumahan yang sesuai
pinset;
gunting;
besi pematerian;
Cambridge;
penguji;
-kabel sambungan;
Empat dawai untuk sensor jauh.

Langkah pertama. Membuat bangunan untuk stesen cuaca

Saya mengambil kotak plastik dari kedai Harga Fix (jumlah 17p). Tingkap sebelum dipotong untuk dipamerkan di tudung. Kemudian dia sebahagiannya memotong partition dalam kotak, membuat lubang untuk penyambung USB papan Arduino, pembukaan untuk sensor BMP180 Sensor BMP180 akan terletak di luar kes itu untuk mengelakkan pemanasan berlebihan dari e topping di dalam. Selepas saya melukis badan produk buatan sendiri dari dalam kerana plastik itu telus. Kotak ditutup dengan selak dan di dalamnya semua elemen sesuai dengan baik.


Langkah Dua Gambarajah pemasangan peranti.

Skim foto


Seterusnya, anda perlu menyambungkan semua papan dan sensor stesen cuaca mengikut skema. Kami melakukan ini menggunakan wayar pemasangan dengan penyambung yang sesuai. Saya tidak membuat sambungan pateri, jadi pada masa akan datang, apabila modul gagal (atau atas sebab-sebab lain), anda boleh dengan mudah menggantikannya. Pada penyambung skru, kabel sensor DHT11 ke jalan disambungkan. Kuasa boleh dibekalkan dari penyambung USB papan Arduino ke komputer, atau dengan membekalkan voltan 7-12V ke pin VIN dan GND.

Pertama, saya memasang litar di luar kandang dan diprogramkan dan di-debugkan dalam program FLPROG.

Gambar gambarajah blok dalam program FLPROG.

Apabila saya mula-mula memprogramkan dan menghidupkan litar stesen cuaca, ia berfungsi. Sekarang ia telah menjadi mustahil untuk mempunyai data cuaca ke laut dan di dalam bilik. Pada umumnya, stesen cuaca rumah yang menarik dengan banyak fungsi yang berbeza berubah.

Foto selesai

Reka bentuk buatan rumah yang baik telah dipasang pada hujung minggu. Ia menarik untuk membuat perkakas menarik dan berguna. Untuk membuat apa-apa peranti itu sendiri, saya fikir walaupun pemula dapat melakukannya, ia tidak memerlukan banyak masa dan wang. Anda boleh memohonnya di mana sahaja yang anda mahu di rumah di kampung negara. Untuk keseluruhan kerja, dua malam hujung minggu pergi, saya mengambil semua elektronik ke Aliexpress. Selebihnya bahan yang saya dapati pada pencincang itu. Berdasarkan platform Arduino, anda boleh memasang pelbagai jenis peranti berguna.

Terima kasih semua atas perhatian anda, saya harap anda berjaya dan nasib baik dalam hidup anda dan dalam kerja anda!
9.2
8.2
8.5

Tambah komen

    • senyumtersenyumxaxaokdontknowyahoonea
      bosawalbodohyaya-yaagresifrahsia
      maaftariandance2dance3pengampunanmembantuminuman
      berhentikawan-kawanbaikgoodgoodwiseltolaklidah
      asapbertepuk tangancraymengisytiharkanderisivejangan dengarmuat turun
      panasberalunketawa1mdamesyuaratmoskingnegatif
      not_ipopcornmenghukumbacamenakutkanmenakutkancarian
      mengejekterima kasihinito_clueumnikakutbersetuju
      burukbeeeblack_eyeblum3memerahbermegahkebosanan
      ditapiskesenanganrahsia2mengancamkemenanganyusun_bespectacled
      shokrespektloldiingatiselamat datangkrutoyya_za
      ya_dobryipembantune_huliganne_othodifludlarangantutup

Kami menasihati anda untuk membaca:

Bawa ia untuk telefon pintar ...