Mục lục:

Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk: 4 bước
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk: 4 bước

Video: Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk: 4 bước

Video: Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk: 4 bước
Video: ESP8266 WebServer Weather Station with Temperature, Pressure, Humidity, and Rain Detection 2024, Tháng mười một
Anonim
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk
Trạm thời tiết tự làm bằng DHT11, BMP180, Nodemcu với Arduino IDE qua máy chủ Blynk

Github: DIY_Weather_Station

Hackster.io: Trạm thời tiết

Bạn sẽ thấy Ứng dụng thời tiết phải không? Giống như, khi bạn mở nó, bạn sẽ biết các điều kiện thời tiết như Nhiệt độ, Độ ẩm, v.v. Những giá trị đó là giá trị trung bình của một khu vực lớn, vì vậy nếu bạn muốn biết các thông số chính xác liên quan đến phòng của mình, bạn không thể chỉ. dựa vào Ứng dụng thời tiết. Vì mục đích này, chúng ta hãy chuyển sang chế tạo Trạm thời tiết tiết kiệm chi phí, đồng thời đáng tin cậy và cung cấp cho chúng tôi giá trị chính xác.

Trạm thời tiết là cơ sở có các dụng cụ, thiết bị đo điều kiện khí quyển để cung cấp thông tin cho dự báo thời tiết và nghiên cứu thời tiết, khí hậu. Nó đòi hỏi một chút nỗ lực để cắm và viết mã. Vậy hãy bắt đầu.

Về Nodemcu:

NodeMCU là một nền tảng IoT mã nguồn mở.

Nó bao gồm phần sụn chạy trên ESP8266 Wi-Fi SoC của Espressif Systems và phần cứng dựa trên mô-đun ESP-12.

Thuật ngữ "NodeMCU" theo mặc định đề cập đến phần sụn thay vì bộ dụng cụ dành cho nhà phát triển. Phần sụn sử dụng ngôn ngữ kịch bản Lua. Nó dựa trên dự án eLua và được xây dựng trên Espressif Non-OS SDK cho ESP8266. Nó sử dụng nhiều dự án mã nguồn mở, chẳng hạn như lua-cjson và spiffs.

Yêu cầu về cảm biến và phần mềm:

1. Nodemcu (esp8266-12e v1.0)

2. DHT11

3. BMP180

4. Arduino IDE

Bước 1: Biết cảm biến của bạn

Biết cảm biến của bạn
Biết cảm biến của bạn

BMP180:

Sự miêu tả:

BMP180 bao gồm cảm biến điện trở áp, bộ chuyển đổi tương tự sang kỹ thuật số và bộ điều khiển với E2PROM và giao diện I2C nối tiếp. BMP180 mang lại giá trị áp suất và nhiệt độ không bù trừ. E2PROM đã lưu trữ 176 bit dữ liệu hiệu chuẩn riêng lẻ. Điều này được sử dụng để bù đắp, phụ thuộc nhiệt độ và các thông số khác của cảm biến.

  • UP = dữ liệu áp suất (16 đến 19 bit)
  • UT = dữ liệu nhiệt độ (16 bit)

Thông số kỹ thuật:

  • Vin: 3 đến 5VDC
  • Logic: tuân thủ 3 đến 5V
  • Phạm vi cảm biến áp suất: 300-1100 hPa (9000m đến -500m trên mực nước biển)
  • Độ phân giải lên đến 0,03hPa / 0,25m-phạm vi hoạt động 40 đến + 85 ° C, độ chính xác nhiệt độ + -2 ° C
  • Bo mạch / chip này sử dụng I2C 7-bit địa chỉ 0x77.

DHT11:

Sự miêu tả:

  • DHT11 là một cảm biến nhiệt độ và độ ẩm kỹ thuật số cơ bản, chi phí cực thấp.
  • Nó sử dụng một cảm biến độ ẩm điện dung và một điện trở nhiệt để đo không khí xung quanh và phát ra tín hiệu kỹ thuật số trên chân dữ liệu (không cần chân đầu vào tương tự). Nó khá đơn giản để sử dụng, nhưng yêu cầu thời gian cẩn thận để lấy dữ liệu.
  • Nhược điểm thực sự duy nhất của cảm biến này là bạn chỉ có thể lấy dữ liệu mới từ nó cứ sau 2 giây một lần, vì vậy khi sử dụng thư viện của chúng tôi, số đọc cảm biến có thể cũ lên đến 2 giây.

Thông số kỹ thuật:

  • Nguồn 3 đến 5V và I / O
  • Tốt cho các bài đọc nhiệt độ 0-50 ° C độ chính xác ± 2 ° C
  • Tốt cho các bài đọc độ ẩm 20-80% với độ chính xác 5%
  • Sử dụng dòng điện tối đa 2,5 mA trong quá trình chuyển đổi (trong khi yêu cầu dữ liệu)

Bước 2: Kết nối

Kết nối
Kết nối

DHT11 với Nodemcu:

Pin 1 - 3,3V

Pin 2 - D4

Pin 3 - NC

Pin 4 - Gnd

BMP180 với Nodemcu:

Vin - 3,3V

Gnd - Gnd

SCL - D6

SDA - D7

Bước 3: Thiết lập Blynk

Image
Image
Thiết lập Blynk
Thiết lập Blynk

Blynk là gì?

Blynk là một Nền tảng với các ứng dụng iOS và Android để điều khiển Arduino, Raspberry Pi và các ứng dụng tương tự qua Internet.

Đó là một bảng điều khiển kỹ thuật số, nơi bạn có thể xây dựng giao diện đồ họa cho dự án của mình bằng cách kéo và thả các widget. Nó thực sự đơn giản để thiết lập mọi thứ và bạn sẽ bắt đầu mày mò trong vòng chưa đầy 5 phút. Blynk không bị ràng buộc với một số bảng hoặc lá chắn cụ thể. Thay vào đó, nó hỗ trợ phần cứng mà bạn lựa chọn. Cho dù Arduino hoặc Raspberry Pi của bạn được liên kết với Internet qua Wi-Fi, Ethernet hoặc chip ESP8266 mới này, Blynk sẽ giúp bạn trực tuyến và sẵn sàng cho Internet Of Your Things.

Để biết thêm thông tin về cách thiết lập Blynk: Thiết lập Blynk chi tiết

Bước 4: Mã

Mã số
Mã số

// Nhận xét cho mỗi dòng được đưa ra trong tệp.ino bên dưới

#include #define BLYNK_PRINT Serial #include #include #include #include #include Adafruit_BMP085 bmp; #define I2C_SCL 12 #define I2C_SDA 13 float dst, bt, bp, ba; char dstmp [20], btmp [20], bprs [20], balt [20]; bool bmp085_present = true; char auth = "Đặt khóa Authication của bạn từ ứng dụng Blynk tại đây"; char ssid = "WiFi SSID của bạn"; char pass = "Mật khẩu của bạn"; #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht (DHTPIN, DHTTYPE); // Định nghĩa mã pin và bộ định thời dhttype BlynkTimer; void sendSensor () {if (! bmp.begin ()) {Serial.println ("Không thể tìm thấy cảm biến BMP085 hợp lệ, hãy kiểm tra dây!"); while (1) {}} float h = dht.readHumidity (); float t = dht.readTempe Heat (); if (isnan (h) || isnan (t)) {Serial.println ("Không thể đọc từ cảm biến DHT!"); trở lại; } double gamma = log (h / 100) + ((17,62 * t) / (243,5 + t)); kép dp = 243,5 * gamma / (17,62-gamma); float bp = bmp.readPressure () / 100; float ba = bmp.readAltitude (); float bt = bmp.readTempe Heat (); float dst = bmp.readSealevelPressure () / 100; Blynk.virtualWrite (V5, h); Blynk.virtualWrite (V6, t); Blynk.virtualWrite (V10, bp); Blynk.virtualWrite (V11, ba); Blynk.virtualWrite (V12, bt); Blynk.virtualWrite (V13, dst); Blynk.virtualWrite (V14, dp); } void setup () {Serial.begin (9600); Blynk.begin (auth, ssid, pass); dht.begin (); Wire.begin (I2C_SDA, I2C_SCL); chậm trễ (10); timer.setInterval (1000L, sendSensor); } void loop () {Blynk.run (); timer.run (); }

Đề xuất: