- Các thành phần bắt buộc:
- Cảm biến nhiệt độ LM35:
- Kết nối LM35 với NodeMCU:
- Giải thích mã:
- Mã HTML để hiển thị Nhiệt độ trên Trang Web:
- Đang làm việc:
Trong hướng dẫn Bắt đầu với NodeMCU trước, chúng ta đã biết NodeMCU là gì và cách chúng ta có thể lập trình nó bằng Arduino IDE . Như bạn đã biết NodeMCU có chip Wi-Fi bên trong nên nó cũng có thể kết nối với internet. Nó rất hữu ích để xây dựng các Dự án IoT. Trước đây chúng tôi đã sử dụng ThingSpeak với Arduino để tạo nhiệt kế IoT, nhưng ở đây chúng tôi sẽ tạo trang web của riêng mình để hiển thị nhiệt độ.
Trong hướng dẫn này, chúng ta sẽ khám phá thêm về MCU thú vị này và dần dần chúng ta đi sâu vào thế giới Internet vạn vật bằng cách kết nối NodeMCU với Internet. Ở đây chúng ta sẽ sử dụng module này để lấy nhiệt độ phòng trên trình duyệt web tức là chúng ta sẽ làm một web server để hiển thị nhiệt độ bằng cách sử dụng LM35 làm cảm biến nhiệt độ.
Các thành phần bắt buộc:
- NodeMCU - ESP12
- Cảm biến nhiệt độ LM35
- Breadboard
- Kết nối nam-nữ
Cảm biến nhiệt độ LM35:
LM35 là một cảm biến nhiệt độ tuyến tính tương tự. Đầu ra của nó tỷ lệ với nhiệt độ (theo độ C). Phạm vi nhiệt độ hoạt động là từ -55 ° C đến 150 ° C. Điện áp đầu ra thay đổi 10mV tùy theo nhiệt độ tăng hoặc giảm o C. Nó có thể hoạt động từ nguồn 5V cũng như 3,3 V và dòng điện chờ nhỏ hơn 60uA.
Lưu ý rằng LM35 có sẵn trong 3 biến thể dòng là dòng LM35A, LM35C và LM35D. Sự khác biệt chính là trong phạm vi đo nhiệt độ của chúng. Dòng LM35D được thiết kế để đo từ 0 đến 100 độ C, trong khi dòng LM35A được thiết kế để đo phạm vi rộng hơn từ -55 đến 155 độ C. Dòng LM35C được thiết kế để đo từ -40 đến 110 độ C.
Chúng tôi đã sử dụng LM35 với nhiều bộ vi điều khiển khác để đo nhiệt độ:
- Nhiệt kế kỹ thuật số sử dụng Vi điều khiển LM35 và 8051
- Đo nhiệt độ sử dụng LM35 và Vi điều khiển AVR
- Nhiệt kế kỹ thuật số sử dụng Arduino và cảm biến nhiệt độ LM35
- Đo nhiệt độ phòng với Raspberry Pi
Kết nối LM35 với NodeMCU:
Sơ đồ mạch để kết nối LM35 với NodeMCU được đưa ra dưới đây:
LM35 là cảm biến tương tự nên chúng ta phải chuyển đầu ra tương tự này sang kỹ thuật số. Đối với điều này, chúng tôi sử dụng chân ADC của NodeMCU được định nghĩa là A0. Chúng tôi sẽ kết nối đầu ra của LM35 với A0.
Chúng tôi có 3,3 V là điện áp đầu ra trên các chân của NodeMCU. Vì vậy, chúng tôi sẽ sử dụng 3.3V làm Vcc cho LM35.
Giải thích mã:
Mã hoàn chỉnh với Video minh họa được đưa ra ở cuối bài viết. Ở đây chúng tôi đang giải thích một số phần của mã. Chúng tôi đã giải thích cách tải mã lên MCU bằng Arduino IDE.
Đầu tiên, chúng ta phải bao gồm thư viện ESP8266wifi để truy cập các chức năng Wi-Fi..
#include
Sau đó, nhập tên và mật khẩu Wi-Fi của bạn vào trường ssid và mật khẩu . Đồng thời khởi tạo các biến và khởi động máy chủ trên cổng 80 với tốc độ truyền 115200.
const char * ssid = "*********"; // ssid của bạn const char * password = "***********"; // Mật khẩu của bạn float temp_cators = 0; float temp_fahrenheit = 0; Máy chủ WiFiServer (80); void setup () { Serial.begin (115200);
Kết nối Wi-Fi được thiết lập bằng cách gọi các chức năng này.
Serial.println (); Serial.println (); Serial.print ("Đang kết nối với"); Serial.println (ssid); WiFi.begin (ssid, mật khẩu);
Có thể mất vài giây để thiết lập kết nối vì vậy hãy tiếp tục hiển thị '…' cho đến khi kết nối không được thiết lập. Sau đó, hệ thống sẽ tiếp tục chờ đợi và kiểm tra xem khách hàng có kết nối…
while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi được kết nối"); server.begin (); Serial.println ("Máy chủ đã khởi động"); Serial.println (WiFi.localIP ()); }
Trong phần vòng lặp , đọc các giá trị cảm biến và chuyển nó thành độ C và độ F và hiển thị các giá trị này trên màn hình nối tiếp.
void loop () { temp_cators = (analogRead (A0) * 330.0) / 1023.0; // Để chuyển đổi các giá trị tương tự sang độ C Chúng ta có 3,3 V trên bo mạch của mình và chúng ta biết rằng điện áp đầu ra của LM35 thay đổi 10 mV với mỗi độ tăng / giảm độ C. Vì vậy, (A0 * 3300/10 ) / 1023 = c độ temp_fahrenheit = c độ * 1.8 + 32.0; Serial.print ("Nhiệt độ ="); Serial.print (temp_c độ); Serial.print ("C,");
Mã HTML để hiển thị Nhiệt độ trên Trang Web:
Chúng tôi đang hiển thị nhiệt độ trên trang web để có thể truy cập nhiệt độ từ mọi nơi trên thế giới thông qua internet. Mã HTML rất đơn giản; chúng ta chỉ cần sử dụng hàm client.println để lặp lại từng dòng của mã HTML, để trình duyệt có thể thực thi nó.
Phần này hiển thị mã HTML để tạo một trang web hiển thị giá trị nhiệt độ.
WiFiClient client = server.available (); client.println ("HTTP / 1.1 200 OK"); client.println ("Loại-Nội dung: text / html"); client.println ("Kết nối: đóng"); // kết nối sẽ bị đóng sau khi hoàn thành phản hồi client.println ("Refresh: 10"); // cập nhật trang sau 10 giây client.println (); client.println (""); client.println (""); client.print ("
Nhiệt kế kỹ thuật số
"); client.print ("Nhiệt độ (* C) = "); client.println (nhiệt độ); client.print ("
Nhiệt độ (F) = "); client.println (temp_fahrenheit); client.print ("
"); client.println (" "); delay (5000); }Đang làm việc:
Sau khi tải mã lên bằng Arduino IDE, hãy mở màn hình nối tiếp và nhấn nút Đặt lại trên NodeMCU.
Bây giờ, bạn có thể thấy bảng được kết nối với mạng Wi-Fi mà bạn đã xác định trong mã của mình và bạn cũng đã có IP. Sao chép IP này và dán vào bất kỳ trình duyệt web nào. Đảm bảo rằng hệ thống của bạn mà bạn đang chạy trình duyệt web phải được kết nối với cùng một mạng.
Nhiệt kế kỹ thuật số của bạn đã sẵn sàng và nhiệt độ sẽ tự động được làm mới trong trình duyệt web sau mỗi 10 giây.
Để làm cho trang web này có thể truy cập được từ internet, bạn chỉ cần đặt Port Forwarding trong bộ định tuyến / modem của mình. Kiểm tra mã hoàn chỉnh và Video bên dưới.
Cũng kiểm tra:
- Trạm thời tiết Raspberry Pi: Theo dõi độ ẩm, nhiệt độ và áp suất qua Internet
- Giám sát nhiệt độ và độ ẩm trực tiếp qua Internet bằng Arduino và ThingSpeak