Mục lục:
- Bước 1: Hóa đơn nguyên vật liệu
- Bước 2: Cảm biến nhiệt độ DS18B20
- Bước 3: Kết nối Cảm biến với NodeMCU
- Bước 4: Cài đặt các thư viện đã chiếm dụng
- Bước 5: Kiểm tra cảm biến
- Bước 6: Sử dụng Blynk
- Bước 7: Kết luận
Video: IoT được thực hiện đơn giản: Giám sát nhiều cảm biến: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
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
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 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 đó.
-
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
- 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:
- OneWire
- 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á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
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:
- Tạo một dự án mới.
- Đặt tên cho nó (trong trường hợp của tôi là "Màn hình nhiệt độ kép")
- Chọn Thiết bị mới - ESP8266 (WiFi) làm "Thiết bị của tôi"
- 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).
-
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
- Bao gồm một tiện ích "Đồ thị lịch sử", xác định V10 và V11 là các chân ảo
- 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
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:
Robot giám sát đơn giản với ESP32-CAM: 4 bước
Robot giám sát đơn giản với ESP32-CAM: Mô-đun ESP32-CAM là mô-đun giá rẻ, tiêu thụ điện năng thấp, nhưng nó cung cấp nhiều tài nguyên cho tầm nhìn, giao tiếp nối tiếp và GPIO. Trong dự án này, tôi cố gắng sử dụng tài nguyên mô-đun ESP32-CAM để chế tạo một robot rc giám sát đơn giản có thể p
Trồng nhiều rau diếp trong ít không gian hơn hoặc Trồng rau diếp trong không gian, (nhiều hơn hoặc ít hơn).: 10 bước
Trồng nhiều rau diếp hơn trong ít không gian hơn hoặc … Trồng rau diếp trong không gian, (Nhiều hơn hoặc ít hơn): Đây là bài dự thi chuyên nghiệp cho Cuộc thi trồng trọt ngoài Trái đất, được gửi thông qua Huấn luyện viên. Tôi không thể vui mừng hơn khi được thiết kế cho sản xuất cây trồng vũ trụ và đăng Tài liệu hướng dẫn đầu tiên của mình. Để bắt đầu, cuộc thi yêu cầu chúng tôi
CloudyData - ESP8266 với Google Trang tính được thực hiện đơn giản: 10 bước (có hình ảnh)
CloudyData - ESP8266 to Google Sheets Made Simple: Tôi đã tìm kiếm dữ liệu đám mây lưu trữ trong suốt nhiều năm qua: thật thú vị khi theo dõi dữ liệu từ bất kỳ loại cảm biến nào, nhưng sẽ thú vị hơn nếu những dữ liệu này có sẵn ở mọi nơi mà không bất kỳ khó khăn nào về lưu trữ chẳng hạn như sử dụng SD
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] DỮ LIỆU CẢM BIẾN NHIỀU LOẠI CẢM BIẾN !: 3 bước
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] DỮ LIỆU CẢM BIẾN NHIỀU LẦN!: Xin chào, tôi thấy rằng thiếu thông tin về cách đăng nhiều dữ liệu cảm biến để điều khiển bằng Arduino Uno với mô-đun SIM900. Vì vậy, tôi đã hướng dẫn ngắn gọn về kết nối và cấu hình Arduino UNO với SIM900 và cảm biến DHT22. Dữ liệu từ DHT22 (temper
Cuộc đua không gian: Trò chơi Arduino Clicker đơn giản để thực hiện với trẻ em: 7 bước
Space Race: Trò chơi Arduino Clicker đơn giản để làm với trẻ em: ¡ Tôi đang tải lên một video cho thấy nó hoạt động như thế nào hôm nay! Hãy theo dõiHãy vui vẻ với một hướng dẫn theo chủ đề không gian có thể được tạo ra cùng với trẻ em và sau đó được chúng thưởng thức một mình như một món đồ chơi. Bạn có thể sử dụng nó như một phương tiện để dạy chúng lịch sử về đồng