Mục lục:

IoT được thực hiện đơn giản: Giám sát nhiều cảm biến: 7 bước
IoT được thực hiện đơn giản: Giám sát nhiều cảm biến: 7 bước

Video: IoT được thực hiện đơn giản: Giám sát nhiều cảm biến: 7 bước

Video: IoT được thực hiện đơn giản: Giám sát nhiều cảm biến: 7 bước
Video: Lập trình esp8266 - Bài 3 - Giám sát nhiệt độ và độ ẩm cảnh báo từ xa qua điện thoại dùng blynk iot 2024, Tháng bảy
Anonim
IoT được thực hiện đơn giản: Giám sát nhiều cảm biến
IoT được thực hiện đơn giản: Giám sát nhiều cảm biến
IoT được thực hiện đơn giản: Giám sát nhiều cảm biến
IoT được thực hiện đơn giản: Giám sát nhiều cảm biến

Một vài tuần trước, tôi đã xuất bản ở đây một hướng dẫn về theo dõi nhiệt độ bằng cách sử dụng DS18B20, một cảm biến kỹ thuật số giao tiếp qua bus 1-Wire, gửi dữ liệu qua internet với NodeMCU và Blynk:

IoT Made Simple: Giám sát nhiệt độ mọi nơi

Nhưng những gì chúng tôi đã bỏ lỡ khi khám phá, là một trong những lợi thế lớn của loại cảm biến này là khả năng thu thập nhiều dữ liệu, từ nhiều cảm biến được kết nối với cùng một bus 1 dây. Và, bây giờ là lúc để khám phá nó.

Chúng tôi sẽ mở rộng những gì đã được phát triển trong hướng dẫn trước, theo dõi hai cảm biến DS18B20, một cảm biến ở Celcius và một ở Fahrenheit. Dữ liệu sẽ được gửi đến Ứng dụng Blynk, như thể hiện trong sơ đồ khối ở trên.

Bước 1: Hóa đơn nguyên vật liệu

  • NodeMCU ESP 12-E (*)
  • Cảm biến nhiệt độ 2 X DS18B20
  • Điện trở 4,7K Ohms
  • BreadBoard
  • Đấu dây

(*) Mọi loại thiết bị ESP đều có thể được sử dụng tại đây. Phổ biến nhất là NodeMCU V2 hoặc V3. Cả hai sẽ luôn hoạt động tốt.

Bước 2: Cảm biến nhiệt độ DS18B20

Cảm biến nhiệt độ DS18B20
Cảm biến nhiệt độ DS18B20

Trong hướng dẫn này, chúng tôi sẽ sử dụng phiên bản không thấm nước của cảm biến DS18B20. Nó rất hữu ích cho nhiệt độ từ xa trong điều kiện ẩm ướt, ví dụ như trên đất ẩm. Cảm biến được cách ly và có thể thực hiện các phép đo cho đến 125oC (Adafrut không khuyến nghị sử dụng cảm biến trên 100oC do vỏ bọc PVC của cáp).

DS18B20 là một cảm biến kỹ thuật số giúp nó sử dụng tốt ngay cả trong khoảng cách xa! Các cảm biến nhiệt độ kỹ thuật số 1 dây này khá chính xác (± 0,5 ° C trong nhiều phạm vi) và có thể cung cấp độ chính xác lên đến 12 bit từ bộ chuyển đổi kỹ thuật số sang tương tự trên bo mạch. Chúng hoạt động hiệu quả với NodeMCU bằng cách sử dụng một chân kỹ thuật số duy nhất và bạn thậm chí có thể kết nối nhiều chân với cùng một chân, mỗi chân có một ID 64-bit duy nhất được đốt tại nhà máy để phân biệt chúng.

Cảm biến hoạt động từ 3.0 đến 5.0V, có nghĩa là nó có thể được cấp nguồn trực tiếp từ một trong các chân 3.3V NodeMCU.

Cảm biến có 3 dây:

  • Đen: GND
  • Đỏ: VCC
  • Màu vàng: Dữ liệu 1 dây

Tại đây, bạn có thể tìm thấy toàn bộ dữ liệu: DS18B20 Datasheet

Bước 3: Kết nối Cảm biến với NodeMCU

Kết nối các cảm biến với NodeMCU
Kết nối các cảm biến với NodeMCU
  1. Kết nối 3 dây từ mỗi cảm biến tại Mini Breadboard như trong hình trên. Tôi đã sử dụng các đầu nối đặc biệt để cố định tốt hơn cáp của cảm biến trên đó.
  2. Lưu ý rằng cả hai cảm biến đều song song. Nếu bạn có nhiều hơn 2 cảm biến, bạn cũng nên làm như vậy.

    • Đỏ ==> 3,3V
    • Đen ==> GND
    • Vàng ==> D4
  3. Sử dụng điện trở 4,7K ohms giữa VCC (3,3V) và Dữ liệu (D4)

Bước 4: Cài đặt các thư viện đã chiếm dụng

Để sử dụng DS18B20 đúng cách, cần có hai thư viện:

  1. OneWire
  2. DallasTempe Nhiệt

Cài đặt cả hai thư viện trong kho lưu trữ Thư viện IDE Arduino của bạn.

Lưu ý rằng thư viện OneWire PHẢI là thư viện đặc biệt, được sửa đổi để sử dụng với ESP8266, nếu không bạn sẽ gặp lỗi trong quá trình biên dịch. Bạn sẽ tìm thấy phiên bản cuối cùng tại liên kết trên.

Bước 5: Kiểm tra cảm biến

Kiểm tra cảm biến
Kiểm tra cảm biến

Để kiểm tra các cảm biến, hãy tải xuống tệp bên dưới từ GitHub của tôi:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

* Kiểm tra nhiều bộ gửi nhiệt độ * * 2 x Cảm biến OneWire: DS18B20 * Được kết nối với NodeMCU D4 (hoặc Arduino Pin 2) * * Được phát triển bởi Marcelo Rovai - ngày 25 tháng 8 năm 2017 **************** **********************************************/ #bao gồm # bao gồm #define ONE_WIRE_BUS 2 // DS18B20 trên chân NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTempether DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Kiểm tra dữ liệu Cảm biến Kép"); } void loop () {float temp_0; float temp_1; DS18B20.requestTempe Nhiệt độ (); temp_0 = DS18B20.getTempCByIndex (0); // Cảm biến 0 sẽ bắt Temp trong Celcius temp_1 = DS18B20.getTempFByIndex (1); // Cảm biến 0 sẽ bắt Temp trong Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); chậm trễ (1000); }

Nhìn vào đoạn mã trên, chúng ta sẽ nhận thấy rằng các dòng quan trọng nhất là:

temp_0 = DS18B20.getTempCByIndex (0); // Cảm biến 0 sẽ bắt Temp trong Celcius

temp_1 = DS18B20.getTempFByIndex (1); // Cảm biến 0 sẽ ghi lại Nhiệt độ bằng Fahrenheit

Dòng đầu tiên sẽ trả về giá trị từ Sensor [0] (xem "chỉ mục (0)") trong Celcius (xem phần của mã: "getTempC". Dòng thứ hai liên quan đến Sensor [1] và sẽ trả về dữ liệu ở độ F. Bạn có thể có "n" cảm biến ở đây vì bạn có "chỉ số" khác nhau cho từng cảm biến.

Tải ngay mã lên NodeMCU của bạn và theo dõi nhiệt độ bằng Màn hình nối tiếp.

Ảnh trên cho thấy kết quả mong đợi. Giữ từng cảm biến trong tay, bạn sẽ thấy nhiệt độ tăng lên.

Bước 6: Sử dụng Blynk

Sử dụng Blynk
Sử dụng Blynk
Sử dụng Blynk
Sử dụng Blynk

Khi bạn bắt đầu ghi lại dữ liệu nhiệt độ, đã đến lúc bạn có thể xem dữ liệu đó từ bất kỳ đâu. Chúng tôi sẽ làm điều này bằng cách sử dụng Blynk. Vì vậy, tất cả dữ liệu đã thu thập sẽ được hiển thị trong thời gian thực trên thiết bị di động của bạn và chúng tôi cũng sẽ xây dựng một kho lưu trữ lịch sử cho điều đó.

Làm theo các bước sau:

  1. Tạo một dự án mới.
  2. Đặt tên cho nó (trong trường hợp của tôi là "Màn hình nhiệt độ kép")
  3. Chọn Thiết bị mới - ESP8266 (WiFi) làm "Thiết bị của tôi"
  4. Sao chép AUTH TOKEN sẽ được sử dụng trong mã (bạn có thể gửi mã này đến email của mình).
  5. Bao gồm hai Widget "Gauge", xác định:

    • Chân ảo được sử dụng với mỗi cảm biến: V10 (Cảm biến [0]) và V11 (Cảm biến [1])
    • Phạm vi nhiệt độ: -5 đến 100 oC cho Cảm biến [0]
    • Phạm vi nhiệt độ: 25 đến 212 oC cho Cảm biến [1]
    • Tần suất đọc dữ liệu: 1 giây
  6. Bao gồm một tiện ích "Đồ thị lịch sử", xác định V10 và V11 là các chân ảo
  7. Nhấn "Play" (Hình tam giác ở góc trên bên phải)

Tất nhiên, Ứng dụng Blynk sẽ thông báo cho bạn rằng NodeMCU không hoạt động. Đã đến lúc tải lên mã đầy đủ tại Arduino IDE của bạn. Bạn có thể lấy nó ở đây:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Thay đổi "dữ liệu giả" bằng thông tin đăng nhập của riêng bạn.

/ * Thông tin đăng nhập Blynk * /

char auth = "MÃ BLYNK AUTH CỦA BẠN Ở ĐÂY"; / * Thông tin đăng nhập WiFi * / char ssid = "SSID CỦA BẠN"; char pass = "MẬT KHẨU CỦA BẠN";

Và đó là nó!

Dưới đây là mã đầy đủ. Về cơ bản nó là mã trước đó, nơi chúng tôi đã nhập với các tham số Blynk và các chức năng cụ thể. Lưu ý 2 dòng cuối của đoạn mã. Đó là những điều quan trọng nhất ở đây. Nếu bạn có nhiều cảm biến thu thập dữ liệu hơn, bạn cũng nên có các dòng mới tương đương như những dòng đó (với các chân ảo mới thích hợp được xác định).

/**************************************************************

* Máy theo dõi nhiều nhiệt độ IoT với Blynk * Thư viện Blynk được cấp phép theo giấy phép MIT * Mã ví dụ này nằm trong miền công cộng. * * Nhiều cảm biến OneWire: DS18B20 * Được phát triển bởi Marcelo Rovai - ngày 25 tháng 8 năm 2017 ********************************** **************************** / / * ESP & Blynk * / #include #include #define BLYNK_PRINT Serial // Bình luận cái này cho vô hiệu hóa bản in và tiết kiệm dung lượng / * Thông tin đăng nhập Blynk * / char auth = "MÃ BLYNK AUTH CỦA BẠN TẠI ĐÂY"; / * Thông tin đăng nhập WiFi * / char ssid = "SSID CỦA BẠN"; char pass = "MẬT KHẨU CỦA BẠN"; / * TIMER * / #include SimpleTimer timer; / * Cảm biến nhiệt độ DS18B20 * / #include #include #define ONE_WIRE_BUS 2 // DS18B20 trên arduino pin2 tương ứng với D4 trên bo mạch vật lý OneWire oneWire (ONE_WIRE_BUS); DallasTempether DS18B20 (& oneWire); int temp_0; int temp_1; void setup () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Kiểm tra dữ liệu Cảm biến Kép"); } void loop () {timer.run (); // Khởi tạo SimpleTimer Blynk.run (); } / ************************************************ *** * Gửi dữ liệu cảm biến tới Blynk ***************************************** ********* / void getSendData () {DS18B20.requestTempe Nhiệt độ (); temp_0 = DS18B20.getTempCByIndex (0); // Cảm biến 0 sẽ bắt Temp trong Celcius temp_1 = DS18B20.getTempFByIndex (1); // Cảm biến 0 sẽ bắt Temp trong Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // chân ảo V10 Blynk.virtualWrite (11, temp_1); // chân ảo V11}

Sau khi mã được tải lên và chạy, hãy kiểm tra ứng dụng Blynk. Bây giờ nó cũng sẽ chạy như được hiển thị ở trên màn hình in từ iPhone của tôi.

Bước 7: Kết luận

Phần kết luận
Phần kết luận

Như mọi khi, tôi hy vọng dự án này có thể giúp những người khác tìm thấy con đường của họ trong thế giới thú vị của điện tử, robot và IoT!

Vui lòng truy cập GitHub của tôi để biết các tệp cập nhật: NodeMCU Dual Temp Monitor

Để biết thêm các dự án khác, vui lòng truy cập blog của tôi: MJRoBot.org

Saludos từ phía nam của thế giới!

Hẹn gặp bạn ở hướng dẫn tiếp theo của tôi!

Cảm ơn bạn, Marcelo

Đề xuất: