Потребление энергии на платах Arduino
Разбираемся, как измерить потребление тока платой Arduino с помощью профилировщика мощности и рассчитать время работы от батареи.
Любое электронное устройство, включая платы Arduino, потребляет энергию. Потребление измеряется в ампер-часах (Ah), а для маломощных устройств — в mAh.
Если вы делаете проект на батарейном питании или с жёсткими ограничениями по энергопотреблению, без этих измерений не обойтись: они помогут выбрать подходящий источник питания и заранее оценить, как долго устройство проработает автономно.
В этой статье мы покажем, как провести тест потребления тока с помощью профилировщика мощности. Профилировщик записывает тысячи замеров за определённый промежуток времени и даёт точную картину потребления. Мы разберём аппаратную часть, настройку программного обеспечения и сам процесс тестирования.
_Note что в этой статье используются продукты сторонних производителей._
Необходимые компоненты и программы
Для тестов потребления тока мы использовали следующее оборудование и ПО. Обратите внимание: на рынке существуют и другие аналогичные инструменты.
- nRF Connect for Desktop
- Power Profiler Kit II
- Arduino board (link to store)
- Соединительные провода (jumper wires)
Как измеряется потребление тока
Профилировщик мощности подключается между платой Arduino и компьютером: к компьютеру — через USB, к плате — через соединительные провода. Для измерения достаточно двух проводов: питание и земля. Провод питания идёт на соответствующий пин платы, а провод земли — на один из пинов GND.
После подключения профилировщик с высокой точностью фиксирует всё, что потребляет плата. С помощью специального приложения (например, nRF Connect for Desktop) можно записывать данные о потреблении в течение любого нужного времени.
Что именно мы измеряем? Если говорить просто: любое электронное устройство потребляет ток — больший или меньший. Светодиод, например, потребляет около 10 mA (0,01 А), а серводвигатель — до 1000 mA (1 А). Если светодиод горит час и потребляет 10 mA, это можно записать как mAh — миллиампер-часы.
Практический пример расчёта
Возьмём Nano ESP32 и загрузим на неё простой скетч, который непрерывно вызывает функцию analogRead(). Тест длился 60 секунд при частоте 100 000 замеров в секунду. Среднее потребление составило 31,05 mA.
Теперь посчитаем, сколько проработает устройство от батареи ёмкостью 300 mAh:

Формула расчёта времени работы от батареи: Battery Life (h) = Battery Capacity (mAh) / Load Current (mA). Пример: 300 mAh / 31,05 mA ≈ 9,7 h.
Зная это, можно осознанно выбирать батарею. Например, батарея ёмкостью 600 mAh теоретически обеспечит вдвое большее время работы.
_Note что на реальное время работы влияют и другие факторы: скорость разряда батареи, её качество и условия эксплуатации. Приведённые расчёты следует воспринимать как ориентировочные._
Настройка программного обеспечения
Программная подготовка состоит из двух шагов: загрузка скетча и установка nRF Connect for Desktop.
Загрузка скетча
Здесь всё просто: загрузите на плату тот скетч, потребление которого хотите измерить. Ниже приведён минимальный пример — непрерывное чтение аналогового пина.
void setup() {}
void loop() {
int analog_value = analogRead(A0);
delay(1);
}
Установка приложения
Для измерений мы будем использовать инструмент nRF Connect for Desktop. Установите его на компьютер.
Аппаратная часть
Мы использовали профилировщик Power Profiler Kit II.
- Сначала отключите кабель USB от платы. Питание теперь будет поступать от профилировщика, поэтому кабель USB на этом этапе не нужен.
- С помощью кабеля из комплекта подключите профилировщик к пинам GND и питания платы согласно схеме ниже:

Подключение профилировщика мощности к плате Arduino: VOUT профилировщика — к пину питания платы, GND — к пину GND.
Важно! При настройке программы вы включите «Power Output» профилировщика. Убедитесь, что выбранное напряжение (3,3 В или 5 В) соответствует напряжению на пине питания платы. Подача 5 В на пин 3,3 В повредит плату.
Проведение теста потребления
Когда аппаратная и программная части настроены, можно записывать данные.
- Откройте nRF Desktop App.
- Включите выход питания, нажав «Enable Power Output».

Включение выхода питания в приложении nRF Power Profiler Kit 2.
- Задайте период сэмплирования (60 секунд) и количество замеров (100k).
- Нажмите «Begin Sampling», чтобы начать тест.

Запуск сэмплирования в приложении nRF Power Profiler Kit 2.
- Во время теста потребление отображается в реальном времени. По истечении 60 секунд (или заданного периода) вы получите данные с показателями max и avg. Любой участок графика можно увеличить для детального анализа.

Данные о потреблении тока платой Arduino в приложении nRF Power Profiler Kit 2.
Тест завершён. Результаты можно записать вручную, экспортировать в файл .csv или сохранить скриншот.
Как проверить результат
Если значения выглядят подозрительно высокими, проверьте несколько вещей:
- не подключены ли к плате лишние периферийные устройства;
- не открыт ли Serial Monitor в Arduino IDE (он удерживает соединение и может влиять на потребление);
- правильно ли выбрано напряжение питания в приложении профилировщика.
Примеры результатов
Ниже приведены результаты тестов нескольких плат Arduino в разных условиях.
Простое чтение аналогового пина (Simple Analog Read)
Скетч непрерывно вызывает analogRead() на аналоговом пине.
void setup() {}
void loop() {
int analog_value = analogRead(A0);
delay(1);
}
Результаты для каждой платы:
| Board | Min | Max | Average |
|---|---|---|---|
| UNO R4 WiFi | 82.86 mA | 124.04 mA | 92.63 mA |
| GIGA R1 WiFi | 51.02 mA | 94.08 mA | 58.05 mA |
| Nano ESP32 | 29.18 mA | 46.58 mA | 31.05 mA |
Arduino Cloud Basic
Скетч Arduino Cloud Basic отправляет данные датчика в Arduino Cloud и включает встроенный светодиод по команде с панели управления.
#include "thingProperties.h"
void setup() {
// Инициализация serial и ожидание открытия порта:
Serial.begin(9600);
// Задержка даёт возможность подключить Serial Monitor, не блокируя выполнение, если он не найден
delay(1500);
// Определено в thingProperties.h
initProperties();
// Подключение к Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
ArduinoCloud.update();
digitalWrite(LED_BUILTIN, led);
}
/*
Поскольку Led — переменная READ_WRITE, onLedChange() вызывается
каждый раз при получении нового значения из IoT Cloud.
*/
void onLedChange() {
Serial.print("Led status changed:");
Serial.println(led);
}
Результаты для каждой платы:
| Board | Min | Max | Average |
|---|---|---|---|
| UNO R4 WiFi | 94.07 mA | 513.70 mA | 140.19 mA |
| GIGA R1 WiFi | 121.00 mA | 477.44 mA | 139.83 mA |
| Nano ESP32 | 36.70 mA | 274.19 mA | 58.81 mA |
Итог
Мы разобрали, как с помощью профилировщика мощности записать данные о потреблении тока платой Arduino. Это полезный инструмент: он помогает понять реальные энергетические потребности вашего проекта и принять взвешенное решение при выборе источника питания — будь то батарея, аккумулятор или внешний блок питания.