⚡ Энергооптимизированная прошивка m1nl для Heltec V3 и V4: как снизить ток покоя до 30 мА


Оглавление

🔋 Проблема энергопотребления в официальной прошивке Meshtastic

Платы Heltec WiFi LoRa 32 V3 и V4 на базе ESP32-S3 — одни из самых популярных устройств в экосистеме Meshtastic. Они оснащены OLED-дисплеем, Wi-Fi, Bluetooth и LoRa-модулем, что делает их идеальными для экспериментов. Однако официальная прошивка Meshtastic почти не оптимизирована под энергопотребление.

В результате даже в режиме простоя такие устройства потребляют до 120 мА ⚠️, что делает их непригодными для длительной автономной работы — особенно по сравнению с платформой nRF52840 (~16–20 мА).


💡 Решение: прошивка m1nl — энергоэффективный форк для ESP32

Энтузиаст m1nl создал специализированный форк прошивки Meshtastic с глубокой оптимизацией энергопотребления для ESP32-S3. Основные преимущества:

  • ⚡ Потребление снижено до ~50 мА без дополнительных настроек;
  • 💚 До ~25–30 мА — при включении энергосберегающего режима в приложении;
  • ✅ Полная совместимость с MeshTastic: сообщения не теряются, узел остаётся онлайн;
  • 🈶 Поддержка русского языка на OLED-экране (сборки с суффиксом «-ru»);
  • 🔇 Снижение помех от процессора к LoRa-трансиверу за счёт перехода в sleep-режимы.

Прошивка доступна как для Heltec V3, так и для новой модели — Heltec V4.


🛠 Инструкция: как прошить Heltec V3/V4 прошивкой m1nl через веб-флешер

Вам понадобится:

  • 📟 Плата Heltec WiFi LoRa 32 V3 или V4;
  • 🔌 Кабель USB-C;
  • 💻 Компьютер или смартфон с браузером (Chrome, Edge, Firefox);
  • 🌐 Доступ к интернету.

1️⃣ Шаг 1. Перейдите на веб-флешер

Откройте официальный веб-инструмент: веб-флешер Meshtastic

2️⃣ Шаг 2. Выберите устройство и прошивку

  1. В разделе «Тип устройства» выберите:
    • heltec v3 (M1NL) — для V3;
    • heltec v4 (M1NL, PL) — для V4.
  2. В поле «Версия прошивки» выберите последнюю сборку (например, v2.7.16.d55da25c6.daily).
  3. Если нужен русский язык — убедитесь, что в названии есть -ru.

3️⃣ Шаг 3. Выберите режим прошивки

  • 🔄 «Обновить устройство» — сохранит текущие настройки;
  • 🆕 «Полная прошивка» — сотрёт всё и установит «с нуля».

4️⃣ Шаг 4. Запустите прошивку

  1. Нажмите кнопку «Обновить устройство».
  2. Подключите Heltec через USB.
  3. Разрешите доступ к порту.
  4. Дождитесь завершения прошивки.

5️⃣ Шаг 5. Включите энергосбережение

  1. Откройте приложение Meshtastic.
  2. Подключитесь к устройству.
  3. Перейдите: Device Settings → Power.
  4. Включите Power Saving Mode.
  5. Сохраните настройки.

После этого потребление упадёт до 25–30 мА 💚, а работа в сети останется стабильной.


🎯 Что это даст пользователям Meshtastic?

  • 🔋 Длительное время автономной работы;
  • 📶 Повышенную чувствительность приёма;
  • ⚡ Стабильность работы без перезагрузок.

Прошивка m1nl решает все три задачи за счёт снижения помех и энергопотребления.


⚠️ Важные предупреждения

  • ❗ Это неофициальная прошивка — используйте на свой риск;
  • 💾 Всегда делайте резервную копию конфигурации;
  • 🌓 Сборки .daily — ночные версии из ветки master;
  • 🔗 Исходный код: GitHub репозиторий

✅ Вывод

Прошивка m1nl — оптимальный выбор для владельцев Heltec V3 и V4, которым нужна максимальная автономность без потери функциональности Meshtastic.


🔍 Как правильно оценивать уровень заряда батареи в Meshtastic-устройствах

При использовании Heltec V3/V4 важно понимать: процентный индикатор заряда в Meshtastic часто неточен ⚠️.

❓ Почему проценты обманчивы?

Напряжение 3.8 В может отображаться как 37%, хотя реально соответствует 70–80% заряда.

  • ⚡ Отсутствие калибровки делителя напряжения;
  • 🧮 Усреднённые параметры SoC;
  • 🔋 Падение напряжения на LDO.

🛠 Что делать на практике?

  1. Измерить напряжение мультиметром;
  2. Сравнить с показаниями в Meshtastic;
  3. Выполнить калибровку;
  4. Ориентироваться на вольты, а не проценты.

Расход батареи Heltec V4 с Meshtastic после прошивки с минимальным током покоя 🔋


Методика измерений 🧪

Измерения проводились на устройстве Heltec V4 с установленной прошивкой Meshtastic, настроенной на минимальный ток покоя. Фиксировались три параметра:

  • время наблюдения обозначенное в часах,
  • процент заряда, отображаемый системой,
  • напряжение аккумулятора в вольтах.

Устройство работало в штатном режиме Meshtastic без активного экрана и без внешнего питания.

Исходные данные 📊

Использовался Li-Ion аккумулятор форм-фактора 103565 со следующими характеристиками:

  • номинальное напряжение: 3.7 В,
  • максимальное напряжение: 4.22 В,
  • ёмкость: 3000 mAh.
Прошло часовЗаряд, %Напряжение, В
01004.22
12663.91
16503.86
20363.79
28313.75
36263.68
44153.56
5083.42
5203.09

Нормализация временной шкалы ⏱

Так как измерения велись в разные часы суток с переходами через 24:00, данные были приведены к непрерывной шкале времени. Начальной точкой принято значение 12:00 при 100% заряда.

Фактическое время автономной работы ⌛

Полный разряд аккумулятора от 4.22 В до 3.09 В занял:

  • 12 часов в первый день,
  • 24 часа во второй день,
  • 16 часов в третий день.

Итоговое время автономной работы составило около 52 часов.

Расчёт среднего тока потребления ⚡

Средний ток потребления рассчитывался по формуле:

I = C / t

Где:

  • C — ёмкость аккумулятора (3000 mAh),
  • t — время работы (52 часа).

Расчёт:

3000 mAh / 52 h ≈ 57.7 mA

Ниже приведён пример рабочей программы для автоматической фиксации уровня заряда и напряжения аккумулятора Meshtastic с периодом 1 час.

Пример программы почасового логирования (Python) 🐍

import sys
from datetime import datetime
from pathlib import Path

# ===== НАСТРОЙКИ =====
PORT = "COM5"              # порт Meshtastic
CSV_FILE = Path("battery_log.csv")

# ===== ПОДКЛЮЧЕНИЕ =====
try:
    from meshtastic.serial_interface import SerialInterface
except ImportError:
    print("❌ meshtastic не установлен")
    print("👉 pip install meshtastic")
    sys.exit(1)

iface = None

try:
    print("🔌 Подключение к Meshtastic…")
    iface = SerialInterface(devPath=PORT)

    my_node = iface.getMyNodeInfo()

    metrics = my_node.get("deviceMetrics", {})
    battery_percent = metrics.get("batteryLevel")
    voltage = metrics.get("voltage")

    if battery_percent is None or voltage is None:
        print("⚠️ Нет данных о батарее")
        sys.exit(1)

    # время без секунд
    now_str = datetime.now().strftime("%Y-%m-%d %H:%M")

    line = f"{now_str};{battery_percent};{voltage:.2f}
"

    # если файл новый — добавим заголовок
    if not CSV_FILE.exists():
        CSV_FILE.write_text("datetime;battery_percent;voltage
", encoding="utf-8")

    with open(CSV_FILE, "a", encoding="utf-8") as f:
        f.write(line)

    print("✅ Записано:")
    print(line.strip())

except Exception as e:
    print(f"❌ Ошибка: {e}")

finally:
    if iface:
        iface.close()
        print("🔌 Порт закрыт")

Скрипт предназначен для запуска по расписанию (cron / Планировщик заданий) с интервалом 1 час и формирует CSV-файл, пригодный для последующего анализа и построения графиков.

Выводы ✅

  • Heltec V4 с Meshtastic и минимальным током покоя способен работать около 52 часов от аккумулятора 3000 mAh.
  • Средний ток потребления находится на уровне ≈58 мА.
  • Результат подтверждает высокую энергоэффективность прошивки и корректную работу режимов сна.
  • Конфигурация подходит для автономных LoRa-узлов длительного действия.


🔥 Репетиторы по математике • 5-11 класс • Поступление в физико-математические школы России