ESP32 MicroPython - Carte Micro SD

Ce guide vous explique comment interfacer une carte Micro SD avec l'ESP32 sous MicroPython. Vous apprendrez à :

ESP32 MicroPython et Carte Micro SD

À Propos du Module Micro SD Card

Un module Micro SD Card sert d'adaptateur permettant à l'ESP32 de communiquer avec une carte Micro SD via le protocole SPI. Il sert de connecteur entre le microcontrôleur et la carte de stockage.

Brochage

Brochage du Module Micro SD Card

Le module Micro SD Card possède 6 broches :

  • Broche VCC : alimente le module, à connecter à la sortie 5V de l'ESP32.
  • Broche GND : référence de masse, à connecter au GND de l'ESP32.
  • Broche MISO : (Master In Slave Out) ligne de données de la carte SD vers l'ESP32.
  • Broche MOSI : (Master Out Slave In) ligne de données de l'ESP32 vers la carte SD.
  • Broche SCK : signal d'horloge SPI, à connecter au SCK de l'ESP32.
  • Broche SS : (Slave Select) broche de sélection de puce, assignée dans le code MicroPython.

Préparation

  • Insérez la carte Micro SD dans un lecteur de carte SD USB 3.0 et connectez-le à votre PC
  • Vérifiez que la carte Micro SD utilise le format FAT16 ou FAT32 (recherchez des instructions en ligne si nécessaire)

Schéma de Câblage

Schéma de Câblage ESP32 MicroPython Module Micro SD Card

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Le tableau de câblage ci-dessous montre comment connecter le module Micro SD Card à l'ESP32 :

Module Micro SD Card ESP32
VCC 5V
GND GND
MISO GPIO19
MOSI GPIO23
SCK GPIO18
CS GPIO5

※ Note:

Si votre shield (comme un shield Ethernet) dispose déjà d'un slot Micro SD Card intégré, vous pouvez ignorer le module externe et simplement insérer la carte directement dans le shield.

ESP32 MicroPython - Ouvrir et Créer un Fichier sur Carte Micro SD

Code ESP32 MicroPython

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */ import machine import os import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCK SPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSI SPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISO SPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS) # Initialize SD card using SoftSPI and sdcard driver spi = machine.SoftSPI(baudrate=1000000, polarity=0, phase=0, sck=machine.Pin(SPI_SCK_PIN), mosi=machine.Pin(SPI_MOSI_PIN), miso=machine.Pin(SPI_MISO_PIN)) cs = machine.Pin(SPI_CS_PIN, machine.Pin.OUT) try: sd = sdcard.SDCard(spi, cs) os.mount(sd, "/sd") print("SD CARD INITIALIZED.") except Exception as e: print("SD CARD FAILED, OR NOT PRESENT!", e) raise SystemExit # Check if the file exists file_path = "/sd/esp32.txt" if file_path.replace("/sd/", "") not in os.listdir("/sd"): print("esp32.txt doesn't exist. Creating esp32.txt file...") # Create a new file by opening it and immediately closing it f = open(file_path, "w") f.close() # Recheck if file is created or not if file_path.replace("/sd/", "") in os.listdir("/sd"): print("esp32.txt exists on SD Card.") else: print("esp32.txt doesn't exist on SD Card.") os.umount("/sd")

Étapes Rapides

Voici les instructions pour configurer et exécuter votre code MicroPython sur l'ESP32 avec Thonny IDE :

  • Assurez-vous que Thonny IDE est installé sur votre ordinateur.
  • Confirmez que le firmware MicroPython est chargé sur votre carte ESP32.
  • Si c'est la première fois que vous utilisez un ESP32 avec MicroPython, consultez le guide ESP32 - Premiers pas. pour des instructions étape par étape.
  • Insérez la carte Micro SD dans le module Micro SD Card.
  • Effectuez le câblage entre le module Micro SD Card et l'ESP32 selon le schéma de câblage ci-dessus.
  • Connectez la carte ESP32 à votre ordinateur avec un câble USB.
  • Ouvrez Thonny IDE sur votre ordinateur.
  • Dans Thonny IDE, allez dans Outils Options.
  • Dans l'onglet Interpréteur, choisissez MicroPython (ESP32) dans le menu déroulant.
  • Assurez-vous que le bon port est sélectionné. Thonny IDE le détecte généralement automatiquement, mais vous devrez peut-être le sélectionner manuellement (comme COM3 sur Windows ou /dev/ttyACM0 sur Linux).
  • Naviguez vers Outils Gérer les packages dans Thonny IDE.
  • Recherchez "sdcard", puis trouvez la bibliothèque sdcard fournie par micropython-lib.
  • Cliquez sur sdcard, puis cliquez sur le bouton Installer pour installer la bibliothèque de carte SD.
Bibliothèque ESP32 MicroPython Carte SD
  • Copiez le code MicroPython fourni et collez-le dans l'éditeur de Thonny.
  • Sauvegardez le code sur votre ESP32 en :
    • Cliquant sur le bouton Enregistrer ou en appuyant sur Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, choisissez Appareil MicroPython.
    • Nommez le fichier main.py.
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script.
  • Consultez le message dans le Shell en bas de Thonny.
  • Le résultat dans le Shell pour la première exécution
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot SD CARD INITIALIZED. esp32.txt doesn't exist. Creating esp32.txt file... esp32.txt exists on SD Card.
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡
  • Le résultat dans le Shell pour les exécutions suivantes
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot SD CARD INITIALIZED. esp32.txt exists on SD Card.
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡
  • Détachez la carte Micro SD du module
  • Insérez la carte Micro SD dans un lecteur de carte SD USB
  • Connectez le lecteur de carte SD USB au PC
  • Vérifiez si le fichier existe ou non

ESP32 MicroPython - Écriture et Lecture de Données sur Carte Micro SD

Le code MicroPython suivant effectue deux opérations :

  • Sauvegarde des données dans un fichier sur la carte SD
  • Lit le contenu du fichier caractère par caractère et l'affiche dans le Shell
/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */ import machine import os import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCK SPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSI SPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISO SPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS) # Initialize SD card using SoftSPI and sdcard driver spi = machine.SoftSPI(baudrate=1000000, polarity=0, phase=0, sck=machine.Pin(SPI_SCK_PIN), mosi=machine.Pin(SPI_MOSI_PIN), miso=machine.Pin(SPI_MISO_PIN)) cs = machine.Pin(SPI_CS_PIN, machine.Pin.OUT) try: sd = sdcard.SDCard(spi, cs) os.mount(sd, "/sd") print("SD CARD INITIALIZED.") except Exception as e: print("SD CARD FAILED, OR NOT PRESENT!", e) raise SystemExit file_path = "/sd/esp32.txt" # Open file for writing (append mode) try: f = open(file_path, "a") f.write("Created by newbiely.com\n") # write a line to esp32.txt f.write("Learn ESP32 and SD Card\n") # write another line to esp32.txt f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file esp32.txt", e) # Open file for reading try: f = open(file_path, "r") while True: ch = f.read(1) # read characters one by one from Micro SD Card if not ch: break print(ch, end="") # print the character to the Shell f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file esp32.txt", e) os.umount("/sd")
  • Le Shell affiche le contenu du fichier :
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Created by newbiely.com Learn ESP32 and SD Card
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Note:

Par défaut, les nouvelles données sont ajoutées à la fin du fichier. Si vous redémarrez l'ESP32 avec le même code, le texte est ajouté à nouveau, donc la sortie du Shell ressemblera à ceci :

Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Created by newbiely.com Learn ESP32 and SD Card Created by newbiely.com Learn ESP32 and SD Card
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

Vous pouvez également retirer la carte Micro SD du module et consulter son contenu sur votre PC (un lecteur de carte SD USB est requis)

ESP32 MicroPython - Lire un Fichier Ligne par Ligne depuis la Carte Micro SD

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */ import machine import os import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCK SPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSI SPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISO SPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS) # Initialize SD card using SoftSPI and sdcard driver spi = machine.SoftSPI(baudrate=1000000, polarity=0, phase=0, sck=machine.Pin(SPI_SCK_PIN), mosi=machine.Pin(SPI_MOSI_PIN), miso=machine.Pin(SPI_MISO_PIN)) cs = machine.Pin(SPI_CS_PIN, machine.Pin.OUT) try: sd = sdcard.SDCard(spi, cs) os.mount(sd, "/sd") print("SD CARD INITIALIZED.") except Exception as e: print("SD CARD FAILED, OR NOT PRESENT!", e) raise SystemExit file_path = "/sd/esp32.txt" # Open file for writing (append mode) try: f = open(file_path, "a") f.write("Created by newbiely.com\n") # write a line to esp32.txt f.write("Learn ESP32 and SD Card\n") # write another line to esp32.txt f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file esp32.txt", e) # Open file for reading line-by-line try: f = open(file_path, "r") line_count = 0 while True: line = f.readline() # read line-by-line from Micro SD Card if not line: break line_count += 1 print("Line {}: {}".format(line_count, line.strip())) # print the line to the Shell f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file esp32.txt", e) os.umount("/sd")
  • Le résultat dans le Shell
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot SD CARD INITIALIZED. Line 1: Created by newbiely.com Line 2: Learn ESP32 and SD Card
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Note:

Des lignes supplémentaires peuvent apparaître dans le Shell si le fichier contient déjà des données d'exécutions précédentes.

ESP32 MicroPython - Écraser un Fichier sur Carte Micro SD

Comme les données sont ajoutées par défaut, l'approche la plus simple pour écraser un fichier est de supprimer le fichier existant puis d'en créer un nouveau avec le même nom.

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */ import machine import os import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCK SPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSI SPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISO SPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS) # Initialize SD card using SoftSPI and sdcard driver spi = machine.SoftSPI(baudrate=1000000, polarity=0, phase=0, sck=machine.Pin(SPI_SCK_PIN), mosi=machine.Pin(SPI_MOSI_PIN), miso=machine.Pin(SPI_MISO_PIN)) cs = machine.Pin(SPI_CS_PIN, machine.Pin.OUT) try: sd = sdcard.SDCard(spi, cs) os.mount(sd, "/sd") print("SD CARD INITIALIZED.") except Exception as e: print("SD CARD FAILED, OR NOT PRESENT!", e) raise SystemExit file_path = "/sd/esp32.txt" # Delete the file if it exists (to overwrite) try: os.remove(file_path) except OSError: pass # Create new file by opening file for writing try: f = open(file_path, "w") f.write("Created by newbiely.com\n") # write a line to esp32.txt f.write("Learn ESP32 and SD Card\n") # write another line to esp32.txt f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file esp32.txt", e) # Open file for reading try: f = open(file_path, "r") while True: ch = f.read(1) # read characters one by one from Micro SD Card if not ch: break print(ch, end="") # print the character to the Shell f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file esp32.txt", e) os.umount("/sd")
  • Le résultat dans le Shell
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot SD CARD INITIALIZED. Created by newbiely.com Learn ESP32 and SD Card
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡
  • Redémarrez l'ESP32
  • Vérifiez si le contenu du fichier dans le Shell a été remplacé ou ajouté.

Vous pouvez également retirer la carte Micro SD du module et inspecter le fichier sur votre PC (un lecteur de carte SD USB est requis)

Vidéo

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !