ESP8266 NodeMCU có chế độ Deep Sleep (Ngủ sâu) giúp tiết kiệm năng lượng và kéo dài thời gian hoạt động của thiết bị. Khi ở chế độ Deep Sleep, NodeMCU sẽ tắt mọi hoạt động và chỉ tiêu thụ một lượng rất nhỏ của năng lượng.Việc lập trình chế độ Deep Sleep trên ESP8266 NodeMCU sử dụng Arduino IDE khá đơn giản và có thể được thực hiện bằng cách sử dụng các hàm và thư viện có sẵn trong IDE. Khi thiết bị đang chạy, bạn có thể sử dụng hàm ESP.deepSleep () để đặt NodeMCU vào chế độ Deep Sleep với thời gian chờ được chỉ định. Sau thời gian chờ, NodeMCU sẽ tự động thức dậy và tiếp tục chương trình từ điểm cuối cùng trước khi vào chế độ ngủ.
14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Hướng dẫn cách sử dụng chế độ ngủ sâu với ESP8266 (NodeMCU) Arduino IDE Chúng đề cập đến giấc ngủ sâu với tính đánh thức hẹn chế độ ngủ sâu với tính đánh thức bên cách sử dụng chân đặt lại (RST) Để đặt ESP8266 chế độ ngủ sâu, sử dụng ESP.deepSleep(uS) chuyển thời gian ngủ làm đối số tính micro giây GPIO 16 phải kết nối với chân đặt lại (RST) để ESP8266 thức dậy Để đặt ESP8266 chế độ ngủ sâu khoảng thời gian không xác định, sử dụng ESP.deepSleep(0) ESP8266 thức dậy chân RST nhận tín hiệu THẤP Xem video hướng dẫn Hướng dẫn có sẵn dạng video (xem bên dưới) dạng viết (tiếp tục đọc trang này) Nội dung liên quan: Ngủ sâu ESP32 với Arduino IDE đánh thức nguồn Giới thiệu Chế độ Ngủ sâu https://www.printfriendly.com/p/g/hz5PgP 1/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Nếu bạn thực dự án với bo mạch ESP8266 chạy pin bạn vừa kết nối bo mạch ESP8266 NodeMCU với cục sạc dự phòng Sau chạy lúc, bạn nhận thấy pin không dùng lâu, đặc biệt bạn sử dụng Wi-Fi Nếu bạn đặt ESP8266 chế độ ngủ sâu, giảm mức tiêu thụ điện pin bạn hoạt động lâu Để ESP8266 chế độ ngủ sâu có nghĩa cắt bỏ hoạt động tiêu tốn nhiều lượng hoạt động (như Wi-Fi) để lại hoạt động vừa đủ để đánh thức xử lý có điều thú vị xảy Các loại giấc ngủ Có ba loại chế độ ngủ khác nhau: ngủ modem , ngủ nhẹ ngủ sâu Bảng cho thấy khác biệt chế độ (thông tin từ bảng liệu ESP8266) Mục Modem-ngủ giấc ngủ nhẹ Giấc ngủ sâu Wifi TẮT TẮT TẮT Đồng hồ hệ thống TRÊN TẮT TẮT RTC TRÊN TRÊN TRÊN CPU TRÊN Chưa giải TẮT Chất 15mA 0,4mA ~20 uA Dịng điện trung bình (DTIM = 1) 16,2mA 1,8mA – Dịng điện trung bình (DTIM = 3) 15,4mA 0,9mA – Dịng điện trung bình (DTIM = 10) 15,2mA 0,55mA – https://www.printfriendly.com/p/g/hz5PgP 2/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Lưu ý: mức tiêu thụ lượng bảng đề cập đến ESP8266 dạng chip độc lập Nếu bạn sử dụng bảng phát triển, chúng có thành phần thụ động sử dụng nhiều dịng điện Tất chúng có mục đích khác chúng nên sử dụng ứng dụng khác Trong viết này, đề cập đến chế độ ngủ sâu Mọi thứ tắt, ngoại trừ Đồng hồ thời gian thực (RTC), cách mà ESP8266 theo dõi thời gian Đây tùy chọn tiết kiệm lượng chip ESP tiêu thụ khoảng 20uA Tuy nhiên, bạn sử dụng bo mạch phát triển đầy đủ tính với lập trình tích hợp, đèn LED, v.v., bạn đạt trạng thái lượng thấp Bản phác thảo giấc ngủ sâu Với giấc ngủ sâu, ứng dụng ví dụ trơng này: ESP8266 kết nối với Wi-Fi ESP8266 thực tác vụ (đọc cảm biến, xuất thông báo MQTT, v.v.) Ngủ khoảng thời gian xác định trước ESP8266 thức dậy Quá trình lặp lặp lại nhiều lần đánh thức nguồn Sau đặt ESP8266 chế độ ngủ sâu, có nhiều cách khác để đánh thức nó: Đánh thức hẹn số 1: ESP8266 tự đánh thức sau khoảng thời gian xác định trước #2 đánh thức bên ngoài: ESP8266 thức dậy bạn nhấn nút RST (ESP8266 khởi động lại) https://www.printfriendly.com/p/g/hz5PgP 3/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Đối với dự án cơng suất thấp, bạn cân nhắc sử dụng bảng ESP32 cung cấp nhiều chế độ ngủ sâu đánh thức nguồn #1 ESP8266 Ngủ sâu với Hẹn đánh thức Để sử dụng hẹn đánh thức với ESP8266, bạn cần kết nối chân RST với GPIO 16 gắn nhãn D0, bo mạch NodeMCU Chỉ cần làm theo sơ đồ tiếp theo: Chỉ kết nối chân RST với GPIO 16 sau tải mã lên Nếu bạn nhìn vào sơ đồ chân NodeMCU, bạn thấy GPIO 16 chân đặc biệt có tính WAKE https://www.printfriendly.com/p/g/hz5PgP 4/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Đề xuất đọc: Hướng dẫn tham khảo sơ đồ chân ESP8266 Chân RST ESP8266 mức CAO ESP8266 chạy Tuy nhiên, chân RST nhận tín hiệu THẤP, khởi động lại vi điều khiển Nếu bạn đặt hẹn ngủ sâu với ESP8266, sau hẹn kết thúc, GPIO 16 gửi tín hiệu THẤP Điều có nghĩa GPIO 16, kết nối với chân RST, đánh thức ESP8266 sau khoảng thời gian định Bản phác thảo đánh thức đếm thời gian ESP8266 NodeMCU Đã cài đặt tiện ích bổ sung ESP8266 cho Arduino IDE ( cách cài đặt Bảng mạch ESP8266 Arduino IDE ), tới Công cụ chọn “ NodeMCU (Mô-đun ESP-12E) ” Đây mã mà bạn cần tải lên ESP mình: /* * ESP8266 Deep sleep mode example * Rui Santos * Complete Project Details https://randomnerdtutorials.com */ void setup() { Serial.begin(115200); Serial.setTimeout(2000); // Wait for serial to initialize https://www.printfriendly.com/p/g/hz5PgP 5/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) while(!Serial) { } // Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds"); ESP.deepSleep(30e6); // Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch) //Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal"); //ESP.deepSleep(0); } void loop() { } Xem mã thô Trong ví dụ này, chúng tơi in thơng báo Màn hình nối tiếp: Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal"); Sau đó, ESP8266 chuyển sang chế độ ngủ 30 giây ESP.deepSleep(30e6); Để đặt ESP8266 chế độ ngủ sâu, bạn sử dụng ESP.deepsleep(uS) chuyển thời gian ngủ tính micro giây làm đối số Trong trường hợp này, 30e6 tương ứng với 30000000 micro giây tương đương với 30 giây Sau tải mã lên, nhấn nút RST để bắt đầu chạy mã, sau kết nối RST với GPIO 16 ESP8266 hoạt động sau 30 giây in thông báo Màn hình nối tiếp hình bên https://www.printfriendly.com/p/g/hz5PgP 6/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Ví dụ in thơng báo Màn hình nối tiếp, ứng dụng giới thực, bạn thực tác vụ hữu ích đưa yêu cầu, xuất lần đọc cảm biến, v.v Mạch đánh thức hẹn ESP-01 Nếu bạn muốn thực thiết lập tương tự với bảng ESP-01, bạn cần hàn sợi dây hình bên Chân nhỏ GPIO 16 cần kết nối với chân RST https://www.printfriendly.com/p/g/hz5PgP 7/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Tuy nhiên, chân nhỏ nên khó để hàn sợi dây vào GPIO 16 ESP-01… Vì vậy, chế độ đánh thức này, bạn nên sử dụng bo mạch NodeMCU chip ESP12-E trần Đề xuất đọc: Tham khảo sơ đồ chân ESP8266 #2 ESP8266 Ngủ sâu với Đánh thức bên Bạn đánh thức ESP8266 cách đánh thức bên ngồi, chẳng hạn nhấn nút cơng tắc sậy Bạn cần đặt ESP8266 chế độ ngủ sâu khoảng thời gian không xác định, sau đặt chân RST mức THẤP để đánh thức Để kiểm tra thiết lập này, nối nút bấm vào bảng ESP8266 bạn sơ đồ sau Khi bạn nhấn nút, chân RST mức THẤP https://www.printfriendly.com/p/g/hz5PgP 8/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Nếu bạn sử dụng ESP-01 , làm theo sơ đồ https://www.printfriendly.com/p/g/hz5PgP 9/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Bản phác thảo đánh thức bên ngồi ESP8266 Sau đó, tải đoạn mã sau lên bảng ESP8266 bạn /* * ESP8266 Deep sleep mode example * Rui Santos * Complete Project Details https://randomnerdtutorials.com */ void setup() { Serial.begin(115200); Serial.setTimeout(2000); https://www.printfriendly.com/p/g/hz5PgP 10/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) // Wait for serial to initialize while(!Serial) { } // Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin //Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds"); //ESP.deepSleep(30e6); // Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch) Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal"); ESP.deepSleep(0); } void loop() { } Xem mã thô Mã đặt ESP8266 chế độ ngủ sâu khoảng thời gian không xác định Để làm điều đó, bạn cần chuyển làm đối số cho hàm deepSleep() : ESP.deepSleep(0); ESP thức dậy có thứ đặt lại bảng Trong trường hợp này, việc nhấn nút kéo chân RST GND Khi bạn nhấn nút, ESP8266 thức dậy, thực tác vụ lập trình quay lại chế độ ngủ kiện đặt lại kích hoạt đo dịng điện Khi bo mạch chế độ ngủ sâu, đo mức tiêu thụ đồng hồ vạn để xem tiêu thụ lượng Đây cách bạn nên đặt đầu dò vạn https://www.printfriendly.com/p/g/hz5PgP 11/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Khi ESP-01 chế độ ngủ sâu, sử dụng 0,3mA, xấp xỉ 300uA https://www.printfriendly.com/p/g/hz5PgP 12/13 14:38 05/04/2023 Ngủ sâu ESP8266 với Arduino IDE (NodeMCU) Hãy nhớ trình sử dụng bình thường với Wi-Fi, ESP8266 tiêu thụ từ 50mA đến 170mA kết thúc Bây bạn biết cách sử dụng chức deepSleep() , dự án chạy pin bạn tồn lâu https://www.printfriendly.com/p/g/hz5PgP 13/13