Hari yang baik untuk semua orang !!!
Artikel ini terutama berkaitan dengan modul ESP8266 yang populer (ESP8285).
Baru-baru ini, di salah satu forum saya ditanya pertanyaan tentang protokol ESP-NOW. Akibatnya, saya memutuskan untuk berbicara tentang cara mengurangi konsumsi sensor dan aktuator yang bekerja melalui WiFi, termasuk ESP8266, khususnya, Sonoff.
Pertama, esensi masalah yang dipecahkan.
Dalam solusi klasik tentang WiFi, Anda harus menggunakan router khusus, atau smartphone atau perangkat dalam mode titik akses.
Prosedur untuk menghubungkan dan mengirimkan data tanpa tarian khusus dengan rebana di ESP8266 adalah dari 1 hingga 4 detik. Dalam hal ini, konsumsi saat ini setidaknya 70 mA.
Saat menggunakan daya baterai, seperti sensor suhu, mode tidur nyenyak digunakan. Perangkat secara berkala bangun, mengirim data, dan tertidur.
Berdasarkan pengalaman saya, saya dapat mengatakan bahwa waktu aktivitas ESP8266 dapat dikurangi menjadi 0,1-0,13 detik.
Selain itu, bagian penting dari waktu ini adalah waktu operasi bootloader: dari 0,08 detik hingga 0,1 detik, tetapi wifi belum dinyalakan pada saat itu, dan karenanya konsumsi saat ini rata-rata 25 mA.
Saya menggunakan interval ini untuk memeriksa pengisian baterai.
Jika tidak ada biaya yang cukup untuk komunikasi, saya mengirim perangkat untuk tidur lagi.
Saya menggunakan waktu ini untuk memeriksa pembacaan sensor dan membandingkannya dengan rentang nilai yang diberikan.
Jika di koridor, maka kirim perangkat untuk tidur lagi.
Dengan demikian, pengiriman data yang tidak perlu berkurang secara signifikan.
Sebagai aturan, dalam proyek-proyek seperti "rumah pintar", nonsen atau unit bir, stasiun cuaca cuaca, perlu untuk mengukur suhu dan menghidupkan dan mematikan bola lampu relay, pompa, mesin.
Untuk mengontrol perangkat tersebut dan mendapatkan data suhu atau tekanan pada smartphone atau perangkat lain, beberapa byte sudah cukup.
Sehubungan dengan ESP8266 di Internet, ada beberapa cara untuk mengurangi waktu aktivitas perangkat dalam mode transfer data melalui WiFi.
Opsi 1: Gunakan TCP / IP dan alamat IP tetap.
Yang pertama untuk ESP8266 dibuat oleh pvvx.
Kekurangan: Penggunaan SDK buatan sendiri.
Waktu aktivitas dari 0,54 detik.
Opsi 2: Saya adalah orang pertama yang menggunakan metode ini untuk waktu yang lama, tetapi saya tidak menemukannya di internet saat ini.
Menggunakan protokol UDP, memperbaiki parameter koneksi dalam RAM RTC, menonaktifkan DHCP.
Keuntungan: SDK standar tanpa kruk, panjang paket hingga 64 ribu.
Waktu aktivitas dari 0,25 detik.
Opsi 3: Protokol ESP-NOW.
Kekurangan: sulitnya pemahaman oleh amatir, kebutuhan untuk menggabungkan dengan protokol wifi untuk bertukar data dengan smartphone.
Keuntungan: SDK standar, tanpa kruk, panjang paket hingga 512 byte.
Waktu aktivitas: dari 0,13 detik (bootloader standar); 0,1 (bootloader khusus)
Opsi 4: Solusi CNLohr berdasarkan pvvx SDK buatan sendiri dan penggunaan paket mentah.
Perbedaan dari solusi ESP-NOW adalah bahwa paket yang ditransmisikan lebih kecil, tetapi protokol WiFi digunakan.
Kerugian: sangat sulit untuk dikuasai oleh amatir, tidak dapat diimplementasikan dalam lingkungan Arduino, itu membutuhkan perubahan pada perangkat lunak router.
Waktu aktivitas: seperti pada opsi 3.
Opsi 5: Metode universal untuk jaringan pribadi berbasis WiFi.
Tidak ada kruk. Mudah diimplementasikan pada Arduino, perangkat lunak standar.
Ini dapat digunakan tidak hanya untuk ESP.
Itu tidak memerlukan router.
Kekurangan: panjang paket 4 byte
Waktu aktivitas: seperti pada opsi 3 dan 4.
Metode:
Di jaringan lokal, kami menggunakan alamat MAC khusus.
Bita pertama alamat, misalnya, 0x36.
Byte kedua alamat menunjukkan nomor perangkat.
3,4,5,6 byte berisi informasi yang dikirimkan.
Akibatnya, untuk menerima informasi yang dikirimkan, hanya perlu melengkapi koneksi.
Waktu untuk mentransfer data adalah nol, karena kami mendapatkan data pada saat koneksi.
Perwujudan metode arduino ini dapat
dihapus di sini .
Dalam contoh di atas, hanya varian dari metode transfer data ini yang diterapkan.
Ini tidak memiliki mode tidur nyenyak. Oleh karena itu, penghematan energi di dalamnya hanya karena nol waktu untuk transfer informasi. Pemancar hanya berfungsi ketika terhubung dan arus naik ke 300 mA hanya 2-4 ms.
Untuk mendapatkan efek penghematan penuh dengan salah satu opsi, perlu menerapkan mode tidur nyenyak dengan cara standar.
Dengan demikian, dalam opsi 3 hingga 5, pengoperasian unit WiFi tidak lebih dari 0,04 detik.
Pada saat itulah konsumsi saat ini bervariasi dari 70 hingga 300 mA.
Sisa waktu, konsumsi ESP8266 saat ini tidak lebih dari 20 mA.
Akibatnya, alih-alih mengonsumsi energi untuk satu sesi 70 mA * s, kami mendapatkan sekitar 3 mA * s.
Mereka yang berharap dapat lebih akurat menghitung penghematan untuk perangkat tertentu.
Saya akan menjelaskan lebih detail opsi 2 .
Saat keluar dari depp-sleep, ada tiga opsi untuk menghubungkan ke WiFi untuk pengiriman pesan.
1) login dan kata sandi - nilai baru.
Waktu koneksi dan transmisi pesan UDP adalah 4 detik.
2) login, kata sandi dan IP disimpan di RTC.
Waktu koneksi dan transmisi pesan UDP adalah 1,2 detik.
3) login, kata sandi, IP, simpan di RTC dan nonaktifkan dhcp.
Waktu koneksi dan transmisi pesan UDP adalah 0,25 detik.
Waktu dihitung dengan memperhitungkan waktu operasi bootloader,
yaitu 0,12 detik dalam boot standar.
Jika kita menulis ulang bootloader, maka waktu dapat dikurangi lagi dengan tambahan 0,04-0,06 detik.
Dengan demikian, jika kita menyimpan login, kata sandi dan IP dalam RTC, maka masa pakai baterai meningkat 3 kali lipat daripada tanpa menyimpan. Metode penghematan ini dikenal di Internet dan digunakan oleh banyak orang.
Tetapi jika Anda menonaktifkan DHCP, masa pakai baterai akan meningkat sekitar 13 kali.
Itulah tepatnya yang saya lakukan, tetapi saya belum melihat solusi seperti itu di Internet.
Semua sukses menghemat energi.