Raspberry Pi Pico - Enregistrer des données avec horodatage sur une carte SD

Dans ce guide, nous apprendrons à écrire un enregistrement avec un horodatage sur une carte microSD en utilisant un Raspberry Pi Pico. Nous discuterons des détails suivants :

Les informations temporelles sont collectées à partir d'un module RTC et stockées sur une carte MicroSD avec les données.

Les données stockées sur la carte microSD peuvent être de natures différentes. Par exemple :

Ce guide explique comment récupérer des informations à partir de deux broches analogiques. Vous pouvez modifier le code pour qu'il fonctionne avec n'importe quel type de données.

Raspberry Pi Pico journaliser sur une carte microSD

Préparation du matériel

1×Raspberry Pi Pico W
1×Raspberry Pi Pico Alternativement:
1×Câble Micro USB
1×Carte Micro SD
1×Module carte Micro SD
1×Optionnel: Adaptateur carte mémoire MicroSD vers SD
1×Module horloge temps réel DS3231
1×Pile CR2032
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour Raspberry Pi Pico

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du module de carte microSD et du module RTC

Découvrez comment utiliser le module de carte Micro SD et le module RTC. Explorez leurs connexions de broches, leurs fonctions et la façon de les programmer dans ces guides :

Diagramme de câblage

Schéma de câblage du module microSD pour Raspberry Pi Pico

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

※ Note:

Si vous utilisez un bouclier Ethernet ou tout bouclier qui dispose d'un emplacement pour carte microSD, vous n'avez pas besoin d'un module MicroSD supplémentaire. Il vous suffit de placer la carte microSD dans l'emplacement du bouclier.

Raspberry Pi Pico - Enregistrer les données avec horodatage sur une carte Micro SD

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-log-data-with-timestamp-to-sd-card */ import machine import os import time import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 2 # The Raspberry Pi Pico pin GP2 connected to SCK SPI_MOSI_PIN = 3 # The Raspberry Pi Pico pin GP3 connected to MOSI SPI_MISO_PIN = 4 # The Raspberry Pi Pico pin GP4 connected to MISO SPI_CS_PIN = 5 # The Raspberry Pi Pico pin GP5 connected to SS (CS) # Define I2C pins for the RTC module I2C_SDA_PIN = 0 # The Raspberry Pi Pico pin GP0 connected to SDA I2C_SCL_PIN = 1 # The Raspberry Pi Pico pin GP1 connected to SCL FILE_NAME = "/sd/log.txt" # Initialize I2C and RTC (DS3231) i2c = machine.I2C(0, sda=machine.Pin(I2C_SDA_PIN), scl=machine.Pin(I2C_SCL_PIN)) # DS3231 I2C address DS3231_ADDR = 0x68 def bcd_to_dec(bcd): return (bcd >> 4) * 10 + (bcd & 0x0F) def get_datetime(): buf = i2c.readfrom_mem(DS3231_ADDR, 0x00, 7) second = bcd_to_dec(buf[0]) minute = bcd_to_dec(buf[1]) hour = bcd_to_dec(buf[2]) day = bcd_to_dec(buf[4]) month = bcd_to_dec(buf[5] & 0x1F) year = bcd_to_dec(buf[6]) + 2000 return (year, month, day, hour, minute, second) # 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 print("--------------------") # Define analog pins analog_pin_1 = machine.ADC(machine.Pin(26)) # The Raspberry Pi Pico pin GP26 (ADC0) analog_pin_2 = machine.ADC(machine.Pin(27)) # The Raspberry Pi Pico pin GP27 (ADC1) while True: try: f = open(FILE_NAME, "a") print("Writing log to SD Card") # Get timestamp from RTC year, month, day, hour, minute, second = get_datetime() timestamp = "{}-{}-{} {}:{}:{}".format(year, month, day, hour, minute, second) # Read data analog_1 = analog_pin_1.read_u16() analog_2 = analog_pin_2.read_u16() # Write timestamp and data f.write("{} analog_1 = {}, analog_2 = {}\n".format(timestamp, analog_1, analog_2)) f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file", FILE_NAME, e) time.sleep(2) # delay 2 seconds

Étapes rapides

Veuillez suivre ces instructions étape par étape :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Assurez-vous que le firmware MicroPython est installé sur votre Raspberry Pi Pico.
  • Si c'est la première fois que vous utilisez un Raspberry Pi Pico, consultez le tutoriel Raspberry Pi Pico - Premiers pas. pour des instructions détaillées.
  • Reliez les composants selon le schéma fourni.
  • Connectez le Raspberry Pi Pico à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, sélectionnez l'interpréteur MicroPython (Raspberry Pi Pico) en naviguant vers Outils Options.
  • Dans l'onglet Interpréteur, sélectionnez MicroPython (Raspberry Pi Pico) dans le menu déroulant.
  • Assurez-vous que le port correct est sélectionné. L'IDE Thonny devrait détecter automatiquement le port, mais vous devrez peut-être le sélectionner manuellement (par exemple, COM3 sur Windows ou /dev/ttyACM0 sur Linux).
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Thonny.
  • Enregistrez le script sur votre Raspberry Pi Pico en procédant comme suit :
    • Cliquez sur le bouton Enregistrer, ou utilisez les touches Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, vous verrez deux sections : Cet ordinateur et Raspberry Pi Pico. Sélectionnez Raspberry Pi Pico.
    • Enregistrez le fichier sous le nom main.py.
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour lancer le script. Le script s'exécutera.
  • Vérifiez le message dans le Shell en bas de Thonny.

Si vous nommez votre script main.py et que vous le sauvegardez dans le répertoire racine du Raspberry Pi Pico, il s'exécutera automatiquement à chaque mise sous tension ou remise à zéro du Pico. Cela est utile pour les applications autonomes qui doivent démarrer immédiatement après l'allumage. Si vous nommez votre script sous un autre nom que main.py, vous devrez l'exécuter manuellement depuis le Shell de Thonnys.

  • Formatez la carte microSD en FAT16 ou FAT32. Recherchez des instructions en ligne.
  • Copiez le code et ouvrez-le dans Thonny IDE.
  • Cliquez sur le bouton Upload dans Thonny IDE pour envoyer le code au Raspberry Pi Pico.
  • Regardez les résultats dans le moniteur série.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot SD CARD INITIALIZED. -------------------- Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card Writing log to SD Card
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡
  • Retirez la carte microSD de son emplacement
  • Insérez la carte Micro Presence dans un adaptateur USB pour carte SD
  • Branchez l'adaptateur USB pour carte SD à votre ordinateur
  • Ouvrez le fichier nommé log.txt sur votre ordinateur
Journalisation du Raspberry Pi Pico sur une carte Micro SD avec des informations temporelles

Si vous n’avez pas de lecteur USB de carte SD, vous pouvez vérifier le fichier journal en utilisant ce code pour le Raspberry Pi Pico.

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-log-data-with-timestamp-to-sd-card */ import machine import os import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 2 # The Raspberry Pi Pico pin GP2 connected to SCK SPI_MOSI_PIN = 3 # The Raspberry Pi Pico pin GP3 connected to MOSI SPI_MISO_PIN = 4 # The Raspberry Pi Pico pin GP4 connected to MISO SPI_CS_PIN = 5 # The Raspberry Pi Pico pin GP5 connected to SS (CS) FILE_NAME = "/sd/log.txt" # 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 # Open file for reading try: f = open(FILE_NAME, "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", FILE_NAME, e) os.umount("/sd")

Raspberry Pi Pico - Journalisation des données dans plusieurs fichiers

Le code ci-dessous enregistre les journaux dans plusieurs fichiers au lieu d'un seul. Cela permet d'éviter de créer un fichier très volumineux qui est difficile à lire.

  • Un document par jour.
  • Le nom du document contient la date : YYYYMMDD.txt.
/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-log-data-with-timestamp-to-sd-card */ import machine import os import time import sdcard # Define SPI pins for the Micro SD Card module SPI_SCK_PIN = 2 # The Raspberry Pi Pico pin GP2 connected to SCK SPI_MOSI_PIN = 3 # The Raspberry Pi Pico pin GP3 connected to MOSI SPI_MISO_PIN = 4 # The Raspberry Pi Pico pin GP4 connected to MISO SPI_CS_PIN = 5 # The Raspberry Pi Pico pin GP5 connected to SS (CS) # Define I2C pins for the RTC module I2C_SDA_PIN = 0 # The Raspberry Pi Pico pin GP0 connected to SDA I2C_SCL_PIN = 1 # The Raspberry Pi Pico pin GP1 connected to SCL # Initialize I2C and RTC (DS3231) i2c = machine.I2C(0, sda=machine.Pin(I2C_SDA_PIN), scl=machine.Pin(I2C_SCL_PIN)) # DS3231 I2C address DS3231_ADDR = 0x68 def bcd_to_dec(bcd): return (bcd >> 4) * 10 + (bcd & 0x0F) def get_datetime(): buf = i2c.readfrom_mem(DS3231_ADDR, 0x00, 7) second = bcd_to_dec(buf[0]) minute = bcd_to_dec(buf[1]) hour = bcd_to_dec(buf[2]) day = bcd_to_dec(buf[4]) month = bcd_to_dec(buf[5] & 0x1F) year = bcd_to_dec(buf[6]) + 2000 return (year, month, day, hour, minute, second) # 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 print("--------------------") # Define analog pins analog_pin_1 = machine.ADC(machine.Pin(26)) # The Raspberry Pi Pico pin GP26 (ADC0) analog_pin_2 = machine.ADC(machine.Pin(27)) # The Raspberry Pi Pico pin GP27 (ADC1) while True: year, month, day, hour, minute, second = get_datetime() # Generate filename: /sd/YYYYMMDD.txt filename = "/sd/{:04d}{:02d}{:02d}.txt".format(year, month, day) try: f = open(filename, "a") print("Writing log to SD Card") # Write timestamp timestamp = "{}-{}-{} {}:{}:{}".format(year, month, day, hour, minute, second) # Read data analog_1 = analog_pin_1.read_u16() analog_2 = analog_pin_2.read_u16() # Write timestamp and data f.write("{} analog_1 = {}, analog_2 = {}\n".format(timestamp, analog_1, analog_2)) f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file", filename, e) time.sleep(2) # delay 2 seconds

Si vous courez une longue distance et ensuite :

  • Retirez la carte microSD de son emplacement.
  • Insérez la carte microSD dans un lecteur de cartes SD USB.
  • Branchez le lecteur de cartes SD USB à votre ordinateur.
  • Maintenant, vous pouvez consulter les fichiers sur la carte.
Raspberry Pi Pico : journalisation sur carte Micro SD en plusieurs fichiers

Vidéo

※ 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 !