Micropython: ESP32 / ESP8266 Obtenez des informations sur l’appareil

Micropython: ESP32 / ESP8266 Obtenez des informations sur l'appareil

Dans ce guide rapide, nous partagerons un simple script Micropython qui affiche des informations utiles sur votre carte. C’est un excellent outil pour les diagnostics et les tests. Le script récupère des détails sur la puce (telles que le modèle et la fréquence du CPU), l’adresse MAC, l’utilisation de la mémoire, la disponibilité du PSRAM, la taille du système de fichiers et l’espace libre, et répertorie les fichiers stockés sur la carte. Ce guide fonctionne avec les planches ESP32, ESP8266 et Raspberry Pi Pico.

MicropyThon: ESP32 / ESP8266 Get Device Info CPU, Adresse MAC, taille Flash, PSRAM et plus

Le code utilisé dans ce tutoriel a été créé et partagé par Charles E. Hamilton, l’un de nos lecteurs.

Nouveau sur Micropython? Consultez notre ebook: Micropython Programming avec ESP32 et ESP8266 Ebook (2e édition)

Condition préalable

Pour suivre ce didacticiel, vous avez besoin de micro-firmware Micropython installé sur vos cartes ESP32 ou ESP8266. Vous avez également besoin d’un IDE pour écrire et télécharger le code sur votre carte. Nous suggérons d’utiliser Thonny IDE ou UpyCraft IDE:

  • Thonny Ide:
  • upycraft ide:

En savoir plus sur MicropyThon: programmation Micropython avec ESP32 et ESP8266

Obtenir des informations système – Script micropopython

Après avoir chargé le micrologiciel MicropyThon sur votre carte, copiez le code suivant sur Thonny IDE ou IDE de votre choix.

# 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://Raspberryme.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)

Afficher le code brut

La section suivante imprime les informations sur la puce et la plate-forme CPU utilisée, la version micropython, le modèle de carte et la fréquence du processeur.

# --- 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")

Ces lignes impriment l’adresse MAC de la carte. L’adresse MAC est un identifiant unique attribué à l’interface réseau de votre appareil. Il est utilisé pour la communication sur le Wi-Fi et d’autres réseaux.

# --- 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}")

Nous imprimons des informations sur la mémoire de la carte. Le tas alloué est la quantité de RAM actuellement utilisée par votre programme, tandis que le tas gratuit est la quantité de RAM toujours disponible pour une utilisation.

# --- Memory Info ---
print("\n[MEMORY]")
print(f"Heap Allocated:     {gc.mem_alloc()} bytes")
print(f"Heap Free:          {gc.mem_free()} bytes")

Il y a aussi une section pour imprimer la taille du flash de la carte et s’il y a du PSRAM disponible.

# 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}")

Enfin, nous imprimons la taille totale du système de fichiers et l’espace libre.

# --- 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")

Et s’il y a des fichiers dans le répertoire root du système de fichiers.

# --- Directory Contents ---
print("\n[FILES IN ROOT DIR]")
try:
    files = os.listdir()
    for f in files:
        print(f" - {f}")
except:
    print("Cannot list files.")

Tester le code

Avec la carte connectée à votre ordinateur et avec une connexion établie avec Thonny IDE, cliquez sur le bouton Green Exécuter pour exécuter le programme sur votre carte.

Exécutez le script micropopython sur Thonny IDE

Les informations sur votre carte seront imprimées dans le shell Micropython.

Vous trouverez ci-dessous le rapport pour une carte ESP32 DOIT.

ESP32 avec Micropython - Obtenez des informations système

Nous avons également testé ce script avec un ESP32S3, ESP8266, et une carte Raspberry Pi Pico (vous pouvez cliquer sur les images pour agrandir).

ESP8266 avec Micropython - Obtenez des informations système
Raspberry Pi Pico avec Micropython - Obtenez des informations système
ESP32S3 avec Micropython - Obtenez des informations système

Emballage

Dans ce guide rapide, nous avons partagé un croquis utile que vous pouvez utiliser et adapter dans vos projets pour obtenir des informations essentielles sur la puce et le processeur de votre carte, ainsi que des informations sur la mémoire et le système de fichiers.

Pour en savoir plus sur Micropython, consultez nos ressources:

Plongez dans l’histoire de Raspberry Pi avec cette vidéo :

YouTube video

  • AZDelivery ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board avec CP2102 (successeur de ESP8266) Compatible avec Arduino incluant Un E-Book!
  • ELEGOO 3PCS Carte de Développement ESP32 Type-C, 2,4 GHz WiFi + Bluetooth Dual Core Carte de Contrôle pour Arduino, Support MicroPython, NodeMCU, AP/STA/AP+STA, Puce CP2102