- Các phương pháp khác nhau để giảm thiểu mức tiêu thụ điện năng
- Thành phần bắt buộc
- Các loại chế độ ngủ trong ESP8266
- Lập trình chế độ ngủ sâu ESP8266
- Thử nghiệm DeepSleep trong ESP8266
Khi cuộc cách mạng IoT đang bùng nổ từng ngày, số lượng thiết bị được kết nối đang tăng lên rất nhanh. Trong tương lai, hầu hết các thiết bị sẽ được kết nối với nhau và sẽ giao tiếp trong thời gian thực. Một trong những vấn đề mà thiết bị này phải đối mặt là tiêu thụ điện năng. Hệ số tiêu thụ điện năng này là một trong những yếu tố quan trọng và quyết định đối với bất kỳ thiết bị IoT và Dự án IoT nào.
Như chúng ta biết rằng ESP8266 là một trong những mô-đun phổ biến nhất để xây dựng bất kỳ dự án IoT nào, vì vậy trong bài viết này chúng ta sẽ tìm hiểu về cách tiết kiệm điện khi sử dụng ESP8266 trong bất kỳ ứng dụng IoT nào. Ở đây, chúng tôi tải dữ liệu cảm biến nhiệt độ LM35 lên đám mây ThingSpeak trong khoảng thời gian 15 giây và trong 15 giây đó, ESP8266 vẫn ở chế độ DeepSleep để tiết kiệm năng lượng
Các phương pháp khác nhau để giảm thiểu mức tiêu thụ điện năng
Có một số cách để tối ưu hóa mức tiêu thụ điện năng trong các thiết bị nhúng và IoT. Việc tối ưu hóa có thể được thực hiện trên phần cứng và phần mềm. Đôi khi chúng tôi không thể tối ưu hóa các thành phần phần cứng để giảm tiêu thụ điện năng, nhưng chắc chắn chúng tôi có thể làm điều đó về mặt phần mềm bằng cách thay đổi và tối ưu hóa các lệnh và chức năng mã. Không chỉ vậy, các nhà phát triển cũng có thể sửa đổi tần số xung nhịp để giảm mức tiêu thụ điện năng của bộ vi điều khiển.Chúng ta có thể viết một chương trình cơ sở để làm cho phần cứng ngủ khi không có trao đổi dữ liệu và thực hiện tác vụ đã xác định trong một khoảng thời gian cụ thể. Ở chế độ ngủ, phần cứng được kết nối tiêu thụ rất ít năng lượng và do đó pin có thể kéo dài. Bạn cũng có thể đọc Giảm thiểu mức tiêu thụ điện năng trong Bộ vi điều khiển, nếu bạn muốn biết thêm về các kỹ thuật tiêu thụ điện năng.
Mô-đun ESP8266 là mô-đun Wi-Fi được sử dụng rộng rãi nhất đi kèm với nhiều tính năng ở kích thước nhỏ có các chế độ khác nhau bao gồm cả chế độ ngủ và các chế độ này có thể được truy cập bằng cách sử dụng một số sửa đổi trong phần cứng và phần mềm. Để tìm hiểu thêm về ESP8266, bạn có thể kiểm tra các dự án dựa trên IoT của chúng tôi bằng cách sử dụng mô-đun Wi-Fi ESP826, một số trong số chúng được liệt kê bên dưới:
- Giao diện ESP8266 NodeMCU với Vi điều khiển Atmega16 để gửi email
- Gửi dữ liệu cảm biến nhiệt độ và độ ẩm tới Cơ sở dữ liệu thời gian thực của Firebase bằng NodeMCU ESP8266
- Đèn LED được điều khiển IoT bằng Google Firebase Console và ESP8266 NodeMCU
Ở đây chúng tôi sẽ giải thích các chế độ ngủ khác nhau có trong ESP8266 và chứng minh chúng bằng cách gửi dữ liệu nhiệt độ đến máy chủ Thingspeak trong một khoảng thời gian đều đặn bằng chế độ ngủ sâu.
Thành phần bắt buộc
- Mô-đun Wi-Fi ESP8266
- Cảm biến nhiệt độ LM35
- Dây nhảy
Các loại chế độ ngủ trong ESP8266
Mô-đun Esp8266 hoạt động ở các chế độ sau:
- Chế độ hoạt động: Ở chế độ này, toàn bộ chip được bật và chip có thể nhận, truyền dữ liệu. Rõ ràng, đây là chế độ tiêu tốn nhiều điện năng nhất.
- Chế độ ngủ của modem: Ở chế độ này, CPU hoạt động và radio Wi-Fi bị tắt. Chế độ này có thể được sử dụng trong các ứng dụng yêu cầu CPU hoạt động, như trong PWM. Nó làm cho mạch Wi-Fi Modem tắt khi được kết nối với Wi-Fi AP (Access Point) mà không cần truyền dữ liệu để tối ưu hóa mức tiêu thụ điện năng.
- Chế độ ngủ nhẹ: Ở chế độ này, CPU và tất cả các thiết bị ngoại vi bị tạm dừng. Bất kỳ đánh thức nào chẳng hạn như ngắt bên ngoài sẽ đánh thức chip. Nếu không truyền dữ liệu, có thể tắt mạch Wi-Fi Modem và treo CPU để tiết kiệm điện năng tiêu thụ.
- Chế độ ngủ sâu: Trong chế độ này, chỉ RTC hoạt động và tất cả các thành phần khác của chip được tắt nguồn. Chế độ này hữu ích khi dữ liệu được truyền sau một khoảng thời gian dài.
Kết nối cảm biến nhiệt độ LM35 với chân A0 của NodeMCU.
Khi mô-đun ESP có HIGH trên chân RST, nó đang ở trạng thái chạy. Ngay sau khi nó nhận được tín hiệu LOW trên chân RST, ESP sẽ khởi động lại.
Đặt hẹn giờ bằng chế độ ngủ sâu, sau khi bộ hẹn giờ kết thúc thì chân D0 sẽ gửi tín hiệu THẤP đến chân RST và mô-đun sẽ thức dậy bằng cách khởi động lại.
Bây giờ, phần cứng đã sẵn sàng và được cấu hình tốt. Kết quả đo nhiệt độ sẽ được gửi trên máy chủ Thingspeak. Đối với điều này, hãy tạo một tài khoản trên thingspeak.com và tạo một kênh bằng cách thực hiện các bước dưới đây.
Bây giờ, hãy sao chép khóa API Viết. Cái nào sẽ được sử dụng trong mã ESP.
Lập trình chế độ ngủ sâu ESP8266
Arduino IDE dễ dàng có sẵn sẽ được sử dụng để lập trình mô-đun ESP8266. Đảm bảo rằng tất cả các tệp bảng ESP8266 đã được cài đặt.
Bắt đầu với việc bao gồm tất cả các thư viện quan trọng cần thiết.
#include
Sau khi tất cả các thư viện được bao gồm để truy cập các chức năng, sau đó chỉ định khóa ghi API, hãy định cấu hình tên và mật khẩu Wi-Fi của bạn. Sau đó khai báo tất cả các biến để sử dụng thêm ở nơi dữ liệu được lưu trữ.
String apiWritekey = "*************"; // thay thế bằng khóa THINGSPEAK WRITEAPI của bạn tại đây char ssid = "******"; // tên SSID wifi của bạn char password = "******"; // mật khẩu wifi
Bây giờ, hãy tạo một chức năng kết nối mô-đun với mạng Wi-Fi bằng hàm wifi.begin () và sau đó kiểm tra liên tục cho đến khi mô-đun không được kết nối với Wi-Fi bằng vòng lặp while.
void connect1 () { WiFi.disconnect (); chậm trễ (10); WiFi.begin (ssid, mật khẩu); trong khi (WiFi.status ()! = WL_CONNECTED) {
Thực hiện một chức năng khác để gửi dữ liệu đến máy chủ điều hành. Tại đây, một chuỗi sẽ được gửi trong đó có khóa ghi API, số trường và dữ liệu phải được gửi. Sau đó, gửi chuỗi này bằng cách sử dụng hàm client.print ().
void data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = String (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / update HTTP / 1.1 \ n"); client.print ("Máy chủ: api.thingspeak.com \ n");
Gọi hàm connect1 sẽ gọi hàm kết nối Wi-Fi, sau đó lấy kết quả đo nhiệt độ và chuyển thành độ C.
void setup () { Serial.begin (115200); Serial.println ("thiết bị đang ở chế độ Đánh thức"); kết nối1 (); giá trị int = analogRead (A0); float volt = (giá trị / 1024.0) * 5.0; tempC = vôn * 100.0;
Bây giờ, hãy gọi hàm data () để tải dữ liệu lên đám mây thingspeak. Cuối cùng, hàm quan trọng để gọi là ESP.deepSleep (); điều này sẽ làm cho mô-đun ở chế độ ngủ trong khoảng thời gian xác định tính bằng micro giây.
dữ liệu(); Serial.println ("ngủ sâu trong 15 giây"); ESP.deepSleep (15e6);
Chức năng lặp sẽ vẫn trống vì tất cả tác vụ phải được thực hiện một lần và sau đó đặt lại mô-đun sau khoảng thời gian xác định.
Video làm việc và mã đầy đủ được đưa ra ở cuối hướng dẫn này. Tải lên mã trong mô-đun ESP8266. Tháo dây kết nối RST và D0 trước khi tải lên chương trình, nếu không nó sẽ báo lỗi.
Thử nghiệm DeepSleep trong ESP8266
Sau khi tải lên chương trình, bạn sẽ thấy rằng các bài đọc nhiệt độ đang được tải lên trên đám mây ThingSpeak sau mỗi 15 giây và sau đó mô-đun chuyển sang chế độ ngủ sâu.
Phần này hoàn thành phần hướng dẫn sử dụng Deep Sleep trong mô-đun ESP8266. Deepsleep là tính năng rất quan trọng và nó đã được bao gồm trong hầu hết các thiết bị. Bạn có thể tham khảo hướng dẫn này và áp dụng phương pháp này cho các dự án khác nhau. Trong trường hợp có bất kỳ nghi ngờ hoặc đề nghị, sau đó vui lòng viết và bình luận bên dưới. Ngoài ra, bạn có thể tiếp cận với diễn đàn của chúng tôi.