» Điện tử » Arduino »Trạm thời tiết gia đình dựa trên Arduino

Trạm thời tiết gia đình dựa trên Arduino


Trong một thời gian dài, tôi muốn làm một trạm thời tiết mini, mệt mỏi khi nhìn ra cửa sổ để nhìn vào một nhiệt kế đằng sau tấm kính. Thiết bị này sẽ thay thế ẩm kế, áp kế và nhiệt kế và cũng hiển thị thời gian hiện tại. Trong bài viết này tôi sẽ cho bạn biết làm thế nào để nhanh chóng và dễ dàng lắp ráp một trạm thời tiết nhỏ dựa trên Arduino. Cơ sở sẽ là hội đồng quản trị Arduino Nano có thể sử dụng các bo mạch khác - Arduino Uno, Arduino Pro mini). Chúng tôi sẽ nhận dữ liệu áp suất và nhiệt độ khí quyển từ cảm biến BMP180, độ ẩm và nhiệt độ ngoài trời từ cảm biến DHT11. Đồng hồ thời gian thực DS1302 sẽ cho biết thời gian hiện tại. Tất cả thông tin được hiển thị trên màn hình LCD1602 hai dòng.

DHT11 truyền thông tin qua một dây duy nhất đến một arduino. Nó được cung cấp bởi điện áp 5 V. Nó đo độ ẩm trong khoảng từ 20 đến 80%. Đo nhiệt độ trong khoảng từ 0 đến 50vềC.

Trạm thời tiết gia đình dựa trên Arduino

Cảm biến BMP180 đo áp suất khí quyển trong khoảng 300-1100 hPa, nhiệt độ trong phạm vi -40 +85vềC. Điện áp cung cấp là 3,3 V. Nó được kết nối qua giao thức truyền thông I2C.

Đồng hồ thời gian thực DS1302 được cung cấp bởi 5 V và được kết nối thông qua giao thức truyền thông I2C. Khi được lắp đặt vào khe thích hợp, pin CR2032 hỗ trợ đồng hồ khi tắt nguồn chính.

Màn hình LCD1602 được cung cấp bởi điện áp 5 Volts và cũng được kết nối thông qua giao thức truyền thông I2C.

Cái này tự làm được làm trên cơ sở các bảng và cảm biến làm sẵn, vì vậy nó có thể được lặp lại cho bất kỳ người yêu mới làm việc với một bàn ủi hàn. Đồng thời, bạn có thể có được những điều cơ bản về lập trình Arduino. Tôi đã lập trình trạm thời tiết này trong chương trình lập trình trực quan FLPROG trong 15 phút. Không cần phải phác thảo thủ công trong nhiều giờ, chương trình này giúp người mới bắt đầu (và không chỉ) nhanh chóng tìm hiểu những điều cơ bản của các thiết bị lập trình dựa trên nền tảng Arduino.

Ai quá lười để nghiên cứu chương trình - một bản phác thảo (chỉ cần thiết lập thời gian hiện tại của đồng hồ):
#inc loại 
#inc loại "DHT_NEW.h"
#inc loại 
#include 
#inc loại 
BMP085 _bmp085 = BMP085 ();
dài _bmp085P = 0;
dài _bmp085T = 0;
dài _bmp085A = 0;

LiquidCstall_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLpm1 = 0;
boolean _isNeedClearDisp1;

DHT _dht1;

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

dài không dấu _dht1LRT = 0UL;
dài không dấu _dht1Tti = 0UL;
int _disp1oldLpm = 0;
dài không dấu _bmp0852Tti = 0UL;
Chuỗi _RTC1_GetTime2_StrOut;
int _disp2oldLpm = 0;
thiết lập void ()
{
Dây.begin ();
trì hoãn (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, đúng);
_RTC1.begin ();
_RTC1. Period (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1.setup (4);
_dht1LRT = millis ();
_dht1Tti = millis ();
}
vòng lặp void ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
if (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = millis ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTem Nhiệt độ (& _ bmp085T);
}

// Phí: 1
nếu (1) {
_dispTempLpm1 = ((((((Chuỗi ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10,00), 1))) + (Chuỗi ("*")))) + ((Chuỗi ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (Chuỗi ("*"))) + (((Chuỗi ("")) + ((_floatToStringWitRaz (_) .humness, 0))) + (Chuỗi ("%"))))). length ();
if (_disp1oldLpm> _dispTempLpm1) {_isNeedClearDisp1 = 1;}
_disp1oldLpm = _dispTempLpm1;
_lcd1.setCoder (int ((16 - _dispTempLpm1) / 2), 0);
_lcd1.print ((((((Chuỗi ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10,00), 1))) + (Chuỗi ("*")))) (((Chuỗi ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (Chuỗi ("*")))) + (((Chuỗi ("")) + ((_floatToStringWit ( _dht1.humness, 0))) + (Chuỗi ("%")))));
} khác {
if (_disp1oldLpm> 0) {_isNeedClearDisp1 = 1; _disp1oldLpm = 0;}
}
if (_isTimer (_dht1Tti, 2000)) {
if (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = millis ();
_dht1Tti = millis ();
}
}
nếu (1) {
_dispTempL wavel1 = ((((((String ("t:")) + ((_floatToStringWitRaz (_dht1.tem Nhiệt độ, 0))) + (Chuỗi ("*")))) + (_RTC1_GetTime2_r) );
if (_disp2oldLpm> _dispTempLpm1) {_isNeedClearDisp1 = 1;}
_disp2oldLpm = _dispTempLpm1;
_lcd1.setCoder (int ((16 - _dispTempLpm1) / 2), 1);
_lcd1.print ((((((Chuỗi ("t:"))) + ((_floatToStringWitRaz (_dht1.tem Nhiệt độ, 0))) + (Chuỗi ("*")))) + (_RTC1_GetTime2_StrOut)
} khác {
if (_disp2oldLpm> 0) {_isNeedClearDisp1 = 1; _disp2oldLpm = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
Chuỗi _floatToStringWitRaz (giá trị float, int raz)
{

chuỗi trả về (giá trị, raz);
}
bool _isTimer (thời gian dài không dấu, thời gian dài không dấu)
{
thời gian dài không dấu;
currentTime = millis ();
if (currentTime> = startTime) {return (currentTime> = (startTime + period));} khác {return (currentTime> = (4294967295-startTime + period));}
}

Bạn có thể sử dụng một thiết bị như vậy ở bất cứ đâu hoặc ở nhà, trong tự nhiên hoặc đặt tại một chiếc xe hơi. Có thể cấp nguồn cho mạch từ pin, sử dụng bảng sạc, cuối cùng sẽ là thiết bị cầm tay mô hình trạm thời tiết.

Tất cả thông tin có thể thu được bằng cách xem video:


Danh sách vật liệu và dụng cụ

Arduino Nano Board
màn hình LCD1602 hai dòng;
- đồng hồ thời gian thực DS1302;
- cảm biến áp suất và nhiệt độ khí quyển BMP180;
- cảm biến nhiệt độ và độ ẩm DHT11;
- chặn sạc từ điện thoại;
- bất kỳ nhà ở phù hợp
nhíp;
kéo;
hàn sắt;
Cambridge;
người kiểm tra;
- dây kết nối;
Bốn dây cho cảm biến từ xa.

Bước đầu tiên. Làm một tòa nhà cho một trạm thời tiết

Tôi nhặt một hộp nhựa từ cửa hàng Fix Price (tổng cộng 17p). Cửa sổ cắt trước để hiển thị trong nắp. Sau đó, anh ta cắt một phần các phân vùng trong hộp, tạo lỗ cho đầu nối USB của bo mạch Arduino, lỗ mở cho cảm biến BMP180 Cảm biến BMP180 sẽ được đặt ở bên ngoài vỏ để tránh làm nóng quá mức e lớp phủ bên trong. Sau khi tôi sơn thân sản phẩm tự chế từ bên trong vì nhựa trong suốt. Hộp đóng lại với một chốt và trong đó tất cả các yếu tố phù hợp độc đáo.


Bước hai Sơ đồ lắp ráp của thiết bị.

Sơ đồ hình ảnh


Tiếp theo, bạn cần kết nối tất cả các bảng và cảm biến của trạm thời tiết theo sơ đồ. Chúng tôi làm điều này bằng cách sử dụng dây gắn với các đầu nối thích hợp. Tôi đã không thực hiện kết nối hàn, vì vậy trong tương lai, khi một mô-đun bị lỗi (hoặc vì lý do khác), bạn có thể dễ dàng thay thế nó. Trên đầu nối vít, cáp cảm biến DHT11 đi ra đường được kết nối. Nguồn có thể được cung cấp từ đầu nối USB của bo mạch Arduino đến máy tính hoặc bằng cách đặt điện áp 7-12V vào chân VIN và GND.

Đầu tiên, tôi lắp ráp mạch bên ngoài vỏ bọc và lập trình và gỡ lỗi nó trong chương trình FLPROG.

Sơ đồ khối ảnh trong chương trình FLPROG.

Khi tôi lần đầu tiên lập trình và bật mạch trạm thời tiết, nó đã hoạt động. Bây giờ nó đã có thể có dữ liệu thời tiết trên tàu và trong phòng. Nói chung, một trạm thời tiết nhà thú vị với nhiều chức năng khác nhau bật ra.

Ảnh hoàn thành

Một thiết kế nhà làm tốt đã được lắp ráp vào cuối tuần. Thật thú vị khi tự làm một thiết bị thú vị và hữu ích. Để tự làm một thiết bị như vậy, tôi nghĩ ngay cả một người mới bắt đầu cũng có thể làm được. Nó không đòi hỏi nhiều thời gian và tiền bạc. Bạn có thể áp dụng nó bất cứ nơi nào bạn muốn trong một ngôi nhà trong một ngôi nhà nông thôn. Đối với toàn bộ công việc, hai đêm cuối tuần trôi qua, tôi lấy tất cả các thiết bị điện tử đến Aliexpress. Phần còn lại của các tài liệu tôi tìm thấy trên chopper. Dựa trên nền tảng Arduino, bạn có thể lắp ráp rất nhiều thiết bị hữu ích.

Cảm ơn tất cả sự quan tâm của bạn, tôi chúc bạn thành công và may mắn cả trong cuộc sống và trong công việc của bạn!
9.2
8.2
8.5

Thêm một bình luận

    • cườinhững nụ cườixaxađược rồikhông biếtyahookhông
      ông chủvết xướcđồ ngốcvângvâng-vânghung hăngbí mật
      xin lỗinhảynhảy2nhảy3ân xágiúp đỡđồ uống
      dừng lạibạn bètốttốt lànhcòingấtlưỡi
      hút thuốcvỗ taycraytuyên bốgiễu cợtdon-t_mentiontải về
      nhiệttôi rấtcười1mdacuộc họpmoskingtiêu cực
      không phảibỏng ngôtrừng phạtđọcsợsợ hãitìm kiếm
      chế nhạocảm ơncái nàyto_cluecựu sinh viêncấp tínhđồng ý
      xấubeeeđen_eyeblum3đỏ mặttự hàobuồn chán
      bị kiểm duyệtdễ chịubí mật2đe dọachiến thắngyusun_bespectacled
      shokrespekthahacó trướcchào mừngkrutoyya_za
      ya_dobryingười trợ giúpne_huliganne_othodifludcấmđóng

Chúng tôi khuyên bạn nên đọc:

Đưa nó cho điện thoại thông minh ...