Dynamic Light Sleep ESP32 (M1NL)
ΠΠ°ΡΡ Π΄Π»Ρ Meshtastic firmware ΠΎΡ M1NL, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ light sleep Π½Π° ESP32. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, CPU ΡΡ ΠΎΠ΄ΠΈΡ Π² low-power ΡΠ΅ΠΆΠΈΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, Π½ΠΎ Bluetooth ΠΈ WiFi ΠΎΡΡΠ°ΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ
| Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ | ΠΠ°ΡΠ°ΡΠ΅Ρ | Π‘ΡΠΎΠΊ | Π‘ DLS | ΠΡΠΈΡΠΎΡΡ |
|---|---|---|---|---|
| Heltec V3 | 1200 ΠΌΠΡ | ~8 Ρ | ~30 Ρ | ~3.75x |
| Heltec V3 | 2000 ΠΌΠΡ | ~20 Ρ | ~48 Ρ (WiFi Π²ΠΊΠ») | ~2.4x |
ΠΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅: 50 mA Π²ΠΌΠ΅ΡΡΠΎ 100 mA Π½Π° Heltec V3.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
- ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Arduino framework Π½Π° ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ Ρ Π²ΠΊΠ»ΡΡΡΠ½Π½ΡΠΌ Power Management ΠΈΠ· ESP-IDF
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
esp_pm_*API Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΎΡΠΎΠΉ CPU - Event-driven ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π²ΠΌΠ΅ΡΡΠΎ polling β CPU Π·Π°ΡΡΠΏΠ°Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ
- SPI-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ sleep Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π΄ΠΈΠΎ
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅: sleep.h/c, PowerFSM.cpp, variant.h (32kHz ΠΎΡΡΠΈΠ»Π»ΡΡΠΎΡΡ), GPIO wake-up.
Π‘ΡΠ°ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² upstream
- PR #7121 β open, 31 ΠΊΠΎΠΌΠΌΠΈΡ, Ρ ΠΈΡΠ½Ρ 2025
- Issue #6660 β triaged, ΠΏΡΠΈΠ·Π½Π°Π½Π° ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ
ΠΠ»ΠΎΠΊΠ΅ΡΡ merge
- IRAM overflow Π½Π° ESP32 β ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½Π° Arduino 3.x (breaking change Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°)
- ΠΠ°ΡΡΠΎΠΌΠ½ΡΠΉ Arduino framework β Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΏΠΎΠ΄ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Meshtastic
- Assertions Π²ΡΠ·ΡΠ²Π°ΡΡ boot loops β ΡΠΈΡΠΊ Π΄Π»Ρ solar/ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ Π½ΠΎΠ΄
- ΠΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π½Π΅Ρ β DLS Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΡΠΎΠ³Π½ΠΎΠ·: Π½Π΅ ΡΠ°Π½ΡΡΠ΅ v2.8βv2.9.
ΠΠ΅ΡΠΊΠΈ M1NL (ΠΌΠ°ΡΡ 2026)
ΠΠΎΠΌΠΈΠΌΠΎ dev-Π²Π΅ΡΠΊΠΈ esp_light_sleep, Ρ M1NL ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ release-Π²Π΅ΡΠΊΠΈ:
| ΠΠ΅ΡΠΊΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
esp_light_sleep | Dev-Π²Π΅ΡΠΊΠ° (ΠΈΡΠ½Ρ 2025, 21 ΠΊΠΎΠΌΠΌΠΈΡ) |
esp_light_sleep_release | Release Ρ merge develop |
esp_light_sleep_release_stable | Π‘Π°ΠΌΠ°Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ (ΠΌΠ°ΡΡ 2026, 45 ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²). Π€ΠΈΠΊΡΡ GC1109 PA Π΄Π»Ρ V4, PSRAM allocator (NodeDB Π² PSRAM), LiPo OCV array, light sleep ΠΏΡΠΈ MQTT |
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ
DLS ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ»ΠΎΠ΅ power management ΠΈ Π½Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ΅Ρ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΡΠ°Π΄ΠΈΠΎ-ΡΡΠΎΠ²Π½Ρ. ΠΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ (platformio.ini).
ΠΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ
ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ SPI-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ RSSI-ΡΠΊΠ°Π½Ρ), Π½ΡΠΆΠ½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° concurrency::LockGuard guard(spiLock) Π½Π° Π²Π΅ΡΡ ΡΠΈΠΊΠ» β ΠΈΠ½Π°ΡΠ΅ DLS ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠΏΠΈΡΡ CPU ΠΌΠ΅ΠΆΠ΄Ρ SPI-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ SPI-Π²ΡΠ·ΠΎΠ²Ρ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ spiLock Π²Π½ΡΡΡΠΈ LockingArduinoHal.
Π‘ΡΡΠ»ΠΊΠΈ
- Π€ΠΎΡΠΊ M1NL β Π²Π΅ΡΠΊΠΈ
esp_light_sleep* - ΠΠ°ΡΡΠΎΠΌΠ½ΡΠΉ Arduino framework
- ESP32 vs nRF52 Π΄Π»Ρ Meshtastic β ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ