1. Trang chủ
  2. » Công Nghệ Thông Tin

Chế độ Deep Sleep trên ESP8266 NodeMCU với Arduino IDE

13 121 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chế độ Deep Sleep trên ESP8266 NodeMCU với Arduino IDE
Thể loại Hướng dẫn
Năm xuất bản 2023
Định dạng
Số trang 13
Dung lượng 800,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ủ.

Trang 1

Ngủ sâu ESP8266 với Arduino IDE (NodeMCU)

Hướng dẫn này chỉ ra cách sử dụng chế độ ngủ sâu với ESP8266 (NodeMCU) bằng

Arduino IDE Chúng tôi sẽ đề cập đến giấc ngủ sâu với tính năng đánh thức hẹn giờ và

chế độ ngủ sâu với tính năng đánh thức bên ngoài bằng cách sử dụng chân đặt lại

(RST)

Để đặt ESP8266 ở chế độ ngủ sâu, hãy sử dụng ESP.deepSleep(uS) và chuyển thời

gian ngủ làm đối số tính bằng micro giây GPIO 16 phải được kết nối với chân đặt lại

(RST) để ESP8266 có thể thức dậy

Để đặt ESP8266 ở chế độ ngủ sâu trong một khoảng thời gian không xác định, hãy sử

dụng ESP.deepSleep(0) ESP8266 sẽ thức dậy khi chân RST nhận được tín hiệu

THẤP

Xem video hướng dẫn

Hướng dẫn này có sẵn ở dạng video (xem bên dưới) và ở 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 và đánh thức nguồn

Giới thiệu Chế độ Ngủ sâu

Trang 2

Nếu bạn đã thực hiện một dự án với bo mạch ESP8266 chạy bằng pin hoặc nếu bạn

vừa kết nối bo mạch ESP8266 NodeMCU của mình với một cục sạc dự phòng Sau khi

chạy một lúc, bạn nhận thấy pin không dùng được lâu, đặc biệt nếu bạn đang sử dụng

Wi-Fi

Nếu bạn đặt ESP8266 ở chế độ ngủ sâu, nó sẽ giảm mức tiêu thụ điện năng và pin của

bạn sẽ hoạt động lâu hơn

Để ESP8266 ở chế độ ngủ sâu có nghĩa là cắt bỏ các hoạt động tiêu tốn nhiều năng

lượng hơn khi hoạt động (như Wi-Fi) nhưng chỉ để lại hoạt động vừa đủ để đánh thức bộ

xử lý khi có điều gì đó thú vị xảy ra

Các loại giấc ngủ

Có ba loại chế độ ngủ khác nhau: ngủ modem , ngủ nhẹ và ngủ sâu Bảng dưới đây

cho thấy sự khác biệt giữa từng chế độ (thông tin từ bảng dữ liệu ESP8266)

Mục Modem-ngủ giấc ngủ nhẹ Giấc ngủ sâu

Chất nền hiện tại 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 –

Trang 3

Lưu ý: mức tiêu thụ năng lượng trên bảng đề cập đến ESP8266 dưới dạng chip độc lập

Nếu bạn đang sử dụng bảng phát triển, chúng có các thành phần thụ động sử dụng

nhiều dòng điện hơn

Tất cả chúng đều có mục đích khác nhau và chúng nên được sử dụng trong các ứng

dụng khác nhau

Trong bài viết này, chúng tôi sẽ đề cập đến chế độ ngủ sâu Mọi thứ luôn tắt, ngoại trừ

Đồng hồ thời gian thực (RTC), đây là cách mà ESP8266 theo dõi thời gian

Đây là tùy chọn tiết kiệm năng lượng nhất và chip ESP chỉ tiêu thụ khoảng 20uA Tuy

nhiên, nếu bạn sử dụng bo mạch phát triển đầy đủ tính năng với bộ lập trình tích hợp,

đèn LED, v.v., bạn sẽ không thể đạt được trạng thái năng lượng thấp như vậy

Bản phác thảo giấc ngủ sâu

Với giấc ngủ sâu, một ứng dụng ví dụ trông như thế này:

1 ESP8266 kết nối với Wi-Fi

2 ESP8266 thực hiện một tác vụ (đọc cảm biến, xuất bản thông báo MQTT, v.v.)

3 Ngủ trong một khoảng thời gian xác định trước

4 ESP8266 thức dậy

5 Quá trình được lặp đi lặp lại nhiều lần

đánh thức nguồn

Sau khi đặt ESP8266 ở chế độ ngủ sâu, có nhiều cách khác nhau để đánh thức nó:

Đánh thức hẹn giờ số 1: ESP8266 tự đánh thức sau một khoảng thời gian được

xác định trước

#2 đánh thức bên ngoài: ESP8266 thức dậy khi bạn nhấn nút RST (ESP8266 khởi

động lại)

Trang 4

Đối với các dự án công suất thấp, bạn có thể cân nhắc sử dụng bảng ESP32 cung cấp

nhiều chế độ ngủ sâu hơn và đánh thức các nguồn

#1 ESP8266 Ngủ sâu với Hẹn giờ đánh thức

Để sử dụng bộ hẹn giờ đánh thức với ESP8266, bạn cần kết nối chân RST với GPIO 16

được gắn nhãn là D0, trong 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 khi tải mã lên

Nếu bạn nhìn vào sơ đồ chân của NodeMCU, bạn có thể thấy rằng GPIO 16 là một chân

đặc biệt và nó có tính năng WAKE

Trang 5

Đề xuất đọc: Hướng dẫn tham khảo sơ đồ chân ESP8266

Chân RST của ESP8266 luôn ở mức CAO trong khi ESP8266 đang chạy Tuy nhiên, khi

chân RST nhận được tín hiệu THẤP, nó sẽ khởi động lại vi điều khiển

Nếu bạn đặt bộ hẹn giờ ngủ sâu với ESP8266, sau khi bộ hẹn giờ kết thúc, GPIO 16 sẽ

gửi tín hiệu THẤP Điều đó có nghĩa là GPIO 16, khi được kết nối với chân RST, có thể

đánh thức ESP8266 sau một khoảng thời gian nhất định

Bản phác thảo đánh thức bộ đế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 trong Arduino IDE ), đi tới Công cụ và chọn “ NodeMCU (Mô-đun ESP-12E) ”

Đây là mã mà bạn cần tải lên ESP của 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.

Trang 6

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 một thông báo trong 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ủ trong 30 giây

ESP.deepSleep(30e6);

Để đặt ESP8266 ở chế độ ngủ sâu, bạn sử dụng ESP.deepsleep(uS) và chuyển thời

gian ngủ tính bằng 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 khi tải mã lên, hãy nhấn nút RST để bắt đầu chạy mã, sau đó kết nối RST với GPIO

16 ESP8266 sẽ hoạt động sau mỗi 30 giây và in một thông báo trong Màn hình nối tiếp

như hình bên dưới

Trang 7

Ví dụ này chỉ in một thông báo trong Màn hình nối tiếp, nhưng trong một ứng dụng trong

thế giới thực, bạn sẽ thực hiện một tác vụ hữu ích như đưa ra yêu cầu, xuất bản các lần

đọc cảm biến, v.v

Mạch đánh thức hẹn giờ ESP-01

Nếu bạn muốn thực hiện một thiết lập tương tự với bảng ESP-01, bạn cần hàn một sợi

dây như hình bên dưới Chân nhỏ đó là GPIO 16 và nó cần được kết nối với chân RST

Trang 8

Tuy nhiên, các chân quá nhỏ nên rất khó để hàn một sợi dây như vậy vào GPIO 16 trên

ESP-01… Vì vậy, đối với chế độ đánh thức này, bạn nên sử dụng bo mạch NodeMCU

hoặc 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 ngoài

Bạn cũng có thể đánh thức ESP8266 bằng cách đánh thức bên ngoài, chẳng hạn như

nhấn nút hoặc công tắc sậy Bạn chỉ cần đặt ESP8266 ở chế độ ngủ sâu trong một

khoảng thời gian không xác định, sau đó đặt chân RST ở mức THẤP để đánh thức nó

Để kiểm tra thiết lập này, hãy nối một nút bấm vào bảng ESP8266 của bạn như trong sơ

đồ sau Khi bạn nhấn nút, chân RST ở mức THẤP

Trang 9

Nếu bạn đang sử dụng ESP-01 , hãy làm theo sơ đồ tiếp theo

Trang 10

Bản phác thảo đánh thức bên ngoài ESP8266

Sau đó, tải đoạn mã sau lên bảng ESP8266 của bạn

/*

* ESP8266 Deep sleep mode example

* Rui Santos

* Complete Project Details https://randomnerdtutorials.com

Trang 11

// 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ã này đặt ESP8266 ở chế độ ngủ sâu trong một khoảng thời gian không xác định Để

làm được điều đó, bạn chỉ cần chuyển 0 làm đối số cho hàm deepSleep() :

ESP.deepSleep(0);

ESP sẽ chỉ thức dậy khi có thứ gì đó đặt lại bảng Trong trường hợp này, việc nhấn nút

sẽ kéo chân RST về GND

Khi bạn nhấn nút, ESP8266 sẽ thức dậy, thực hiện tác vụ đã lập trình và quay lại chế độ

ngủ cho đến khi một sự kiện đặt lại mới được kích hoạt

đo dòng điện

Khi bo mạch ở chế độ ngủ sâu, hãy đo mức tiêu thụ hiện tại bằng đồng hồ vạn năng để

xem nó đang tiêu thụ bao nhiêu năng lượng

Đây là cách bạn nên đặt đầu dò vạn năng của mình

Trang 12

Khi ESP-01 ở chế độ ngủ sâu, nó chỉ sử dụng 0,3mA, xấp xỉ 300uA

Trang 13

Hãy nhớ rằng trong quá trình sử dụng bình thường với Wi-Fi, ESP8266 có thể tiêu thụ từ

50mA đến 170mA kết thúc

Bây giờ bạn đã biết cách sử dụng chức năng deepSleep() , dự án chạy bằng pin của

bạn có thể tồn tại lâu hơn

Ngày đăng: 05/04/2023, 21:16

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w