Для электронщиков и радиолюбителей

Получаем информацию об устройстве ESP32/ESP8266 с помощью MicroPython

Получаем информацию об устройстве ESP32/ESP8266 с помощью MicroPython

Микроконтроллеры ESP32 и ESP8266 стали крайне популярными благодаря своей доступности, встроенному Wi-Fi и поддержке MicroPython. При разработке проектов часто возникает необходимость узнать базовую информацию об устройстве: характеристики процессора, MAC-адрес, объем доступной памяти и прочее. В этой статье мы покажем, как получить эти данные с помощью MicroPython.

Что понадобится

  • Плата ESP32 или ESP8266
  • Прошивка MicroPython, установленная на плату
  • Программа для работы с REPL, например Thonny, PuTTY или uPyCraft

Импорт необходимых модулей

Для получения информации об устройстве используются встроенные модули os, machine и network. Импортируем их:

import os
import machine
import network

Информация о прошивке и системе

Функция os.uname() возвращает базовую информацию о прошивке и системе:

print(os.uname())

Пример вывода:

sysname='esp32', nodename='esp32', release='1.21.0', version='v1.21.0 on 2024-01-01', machine='ESP32 module with ESP32'

Полезные поля:

  • sysname: имя системы (esp32 или esp8266)
  • release и version: версия MicroPython
  • machine: описание модели

Частота и информация о CPU

MicroPython позволяет узнать частоту процессора:

print('CPU frequency:', machine.freq(), 'Hz')

Также можно использовать модуль esp (только для ESP32/ESP8266) для получения дополнительных данных:

import esp
esp.osdebug(None)  # Отключает вывод отладочной информации в REPL

MAC-адрес

MAC-адрес можно получить с помощью сетевого интерфейса:

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
mac = wlan.config('mac')
print('MAC address:', ':'.join('%02x' % b for b in mac))

Этот адрес уникален для каждой платы и может быть полезен для идентификации устройства в сети.


Размер Flash-памяти

ESP32/ESP8266 используют внешнюю флеш-память. Узнать её объем можно с помощью:

import esp
flash_size = esp.flash_size()
print('Flash size:', flash_size // (1024 * 1024), 'MB')

Наличие и объем PSRAM (только ESP32)

Если в вашем модуле ESP32 установлен дополнительный чип PSRAM, можно проверить его наличие и объем:

try:
    import esp32
    print('PSRAM:', esp32.ULP())
except Exception as e:
    print('PSRAM недоступна')

Однако напрямую определить объем PSRAM через MicroPython можно только косвенно (например, по доступной памяти).


Доступная оперативная память (heap)

Можно посмотреть, сколько оперативной памяти доступно:

import gc
print('Free memory:', gc.mem_free(), 'bytes')

Пример итоговой программы

import os
import machine
import network
import esp
import gc

print('=== Информация об устройстве ===')
print('Система:', os.uname())
print('Частота CPU:', machine.freq(), 'Hz')

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
mac = wlan.config('mac')
print('MAC-адрес:', ':'.join('%02x' % b for b in mac))

print('Объем Flash:', esp.flash_size() // (1024 * 1024), 'MB')
print('Свободная память:', gc.mem_free(), 'байт')

Итоги

MicroPython предоставляет удобные средства для получения технической информации об устройствах ESP32 и ESP8266. Это может быть полезно как для отладки, так и для динамической настройки программ в зависимости от характеристик устройства. Используйте эти команды для лучшего понимания возможностей вашей платы и более гибкой разработки проектов.