MicroPython: ESP32/ESP8266 — Получение информации об устройстве (CPU, MAC-адрес, Flash, PSRAM и другое)
В этом кратком руководстве мы поделимся простым MicroPython-скриптом, который выводит полезную информацию о вашей плате. Это отличный инструмент для диагностики и тестирования. Скрипт получает данные о чипе (модель и частоту CPU), MAC-адрес, использование памяти, наличие PSRAM, размер файловой системы и свободное место, а также выводит список файлов, хранящихся на плате. Это руководство работает с платами ESP32, ESP8266 и Raspberry Pi Pico.
Код, используемый в этом уроке, был создан и предоставлен Charles E. Hamilton — одним из читателей Random Nerd Tutorials.
Предварительные требования
Для прохождения этого урока на вашей плате ESP32 или ESP8266 должна быть установлена прошивка MicroPython. Вам также понадобится IDE для написания и загрузки кода на плату. Мы рекомендуем использовать Thonny IDE или uPyCraft IDE:
Thonny IDE:
uPyCraft IDE:
Получение системной информации — MicroPython-скрипт
После загрузки прошивки MicroPython на плату скопируйте следующий код в Thonny IDE или в IDE по вашему выбору.
# WhatsInIt.py - MicroPython Hardware & Environment Diagnostic Tool
# For ESP32 / ESP8266 boards
# Last updated: April 26, 2025 by Charles E. Hamilton
# This program is released into the public domain free of license and without warranties of any kind
# https://RandomNerdTutorials.com/micropython-esp32-esp8266-device-info/
import os
import sys
import gc
import machine
import network
import ubinascii
try:
import esp
except ImportError:
esp = None
try:
import esp32
except ImportError:
esp32 = None
print("\n" + "=" * 40)
print(" WHATS IN IT REPORT")
print("=" * 40)
# --- Chip & CPU Info ---
print("\n[CHIP INFO]")
print(f"Platform: {sys.platform}")
print(f"MicroPython ver: {os.uname().release} ({os.uname().version})")
print(f"Machine ID: {os.uname().machine}")
print(f"CPU Frequency: {machine.freq()} Hz")
# --- MAC Address ---
print("\n[NETWORK]")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
mac = ubinascii.hexlify(wlan.config('mac'), ':').decode()
print(f"MAC Address: {mac}")
# --- Memory Info ---
print("\n[MEMORY]")
print(f"Heap Allocated: {gc.mem_alloc()} bytes")
print(f"Heap Free: {gc.mem_free()} bytes")
# Flash size (ESP32 only)
if esp:
try:
flash_size = esp.flash_size()
print(f"Flash Size: {flash_size // (1024*1024)} MB")
except:
print("Flash Size: Not available")
# PSRAM status (ESP32 only)
if esp32:
try:
psram_status = "Available" if esp32.ULP() is not None else "Not available"
except:
psram_status = "Not detected"
print(f"PSRAM: {psram_status}")
# --- Filesystem Info ---
print("\n[FILESYSTEM]")
try:
fs_stats = os.statvfs("/")
block_size = fs_stats[0]
total_blocks = fs_stats[2]
free_blocks = fs_stats[3]
total = (block_size * total_blocks) // 1024
free = (block_size * free_blocks) // 1024
print(f"Total Size: {total} KB")
print(f"Free Space: {free} KB")
except:
print("Filesystem info: Not available")
# --- Directory Contents ---
print("\n[FILES IN ROOT DIR]")
try:
files = os.listdir()
for f in files:
print(f" - {f}")
except:
print("Cannot list files.")
# --- Closing ---
print("\n[END OF REPORT]")
print("=" * 40)
Посмотреть исходный код на GitHub
Следующий раздел выводит информацию о чипе и CPU: используемую платформу, версию MicroPython, модель платы и частоту процессора.
# --- Chip & CPU Info ---
print("\n[CHIP INFO]")
print(f"Platform: {sys.platform}")
print(f"MicroPython ver: {os.uname().release} ({os.uname().version})")
print(f"Machine ID: {os.uname().machine}")
print(f"CPU Frequency: {machine.freq()} Hz")
Эти строки выводят MAC-адрес платы. MAC-адрес — это уникальный идентификатор, присвоенный сетевому интерфейсу вашего устройства. Он используется для связи по Wi-Fi и другим сетям.
# --- MAC Address ---
print("\n[NETWORK]")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
mac = ubinascii.hexlify(wlan.config('mac'), ':').decode()
print(f"MAC Address: {mac}")
Мы выводим информацию о памяти платы. Heap Allocated (занятая куча) — это объём оперативной памяти, используемый вашей программой в данный момент, а Heap Free (свободная куча) — объём оперативной памяти, ещё доступной для использования.
# --- Memory Info ---
print("\n[MEMORY]")
print(f"Heap Allocated: {gc.mem_alloc()} bytes")
print(f"Heap Free: {gc.mem_free()} bytes")
Также есть раздел для вывода размера Flash-памяти платы и наличия PSRAM.
# Flash size (ESP32 only)
if esp:
try:
flash_size = esp.flash_size()
print(f"Flash Size: {flash_size // (1024*1024)} MB")
except:
print("Flash Size: Not available")
# PSRAM status (ESP32 only)
if esp32:
try:
psram_status = "Available" if esp32.ULP() is not None else "Not available"
except:
psram_status = "Not detected"
print(f"PSRAM: {psram_status}")
Наконец, мы выводим общий размер файловой системы и свободное пространство.
# --- Filesystem Info ---
print("\n[FILESYSTEM]")
try:
fs_stats = os.statvfs("/")
block_size = fs_stats[0]
total_blocks = fs_stats[2]
free_blocks = fs_stats[3]
total = (block_size * total_blocks) // 1024
free = (block_size * free_blocks) // 1024
print(f"Total Size: {total} KB")
print(f"Free Space: {free} KB")
except:
print("Filesystem info: Not available")
А также список файлов в корневом каталоге файловой системы.
# --- Directory Contents ---
print("\n[FILES IN ROOT DIR]")
try:
files = os.listdir()
for f in files:
print(f" - {f}")
except:
print("Cannot list files.")
Тестирование кода
Подключите плату к компьютеру и установите соединение с Thonny IDE. Нажмите зелёную кнопку «Run» (Запустить), чтобы выполнить программу на плате.
Информация о вашей плате будет выведена в MicroPython Shell.
Ниже приведён отчёт для платы ESP32 DOIT.
Мы также протестировали этот скрипт с платами ESP32-S3, ESP8266 и Raspberry Pi Pico (вы можете нажать на изображения для увеличения).
Заключение
В этом кратком руководстве мы поделились полезным скриптом, который вы можете использовать и адаптировать в своих проектах для получения основной информации о чипе и CPU платы, а также о памяти и файловой системе.
Для более углублённого изучения MicroPython ознакомьтесь с нашими ресурсами: