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 :
Raspberry Pi Pico - Comment enregistrer des données avec horodatage dans un fichier sur une carte microSD
Raspberry Pi Pico - Comment enregistrer des données avec horodatage dans plusieurs fichiers sur une carte microSD, un fichier par jour
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.
Ou vous pouvez acheter les kits suivants:
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.
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 :

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.
/*
* 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
SPI_SCK_PIN = 2
SPI_MOSI_PIN = 3
SPI_MISO_PIN = 4
SPI_CS_PIN = 5
I2C_SDA_PIN = 0
I2C_SCL_PIN = 1
FILE_NAME = "/sd/log.txt"
i2c = machine.I2C(0, sda=machine.Pin(I2C_SDA_PIN), scl=machine.Pin(I2C_SCL_PIN))
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)
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("--------------------")
analog_pin_1 = machine.ADC(machine.Pin(26))
analog_pin_2 = machine.ADC(machine.Pin(27))
while True:
try:
f = open(FILE_NAME, "a")
print("Writing log to SD Card")
year, month, day, hour, minute, second = get_datetime()
timestamp = "{}-{}-{} {}:{}:{}".format(year, month, day, hour, minute, second)
analog_1 = analog_pin_1.read_u16()
analog_2 = analog_pin_2.read_u16()
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)
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.
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.
>>> %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
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
SPI_SCK_PIN = 2
SPI_MOSI_PIN = 3
SPI_MISO_PIN = 4
SPI_CS_PIN = 5
FILE_NAME = "/sd/log.txt"
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
try:
f = open(FILE_NAME, "r")
while True:
ch = f.read(1)
if not ch:
break
print(ch, end="")
f.close()
except Exception as e:
print("SD Card: Issue encountered while attempting to open the file", FILE_NAME, e)
os.umount("/sd")
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.
/*
* 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
SPI_SCK_PIN = 2
SPI_MOSI_PIN = 3
SPI_MISO_PIN = 4
SPI_CS_PIN = 5
I2C_SDA_PIN = 0
I2C_SCL_PIN = 1
i2c = machine.I2C(0, sda=machine.Pin(I2C_SDA_PIN), scl=machine.Pin(I2C_SCL_PIN))
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)
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("--------------------")
analog_pin_1 = machine.ADC(machine.Pin(26))
analog_pin_2 = machine.ADC(machine.Pin(27))
while True:
year, month, day, hour, minute, second = get_datetime()
filename = "/sd/{:04d}{:02d}{:02d}.txt".format(year, month, day)
try:
f = open(filename, "a")
print("Writing log to SD Card")
timestamp = "{}-{}-{} {}:{}:{}".format(year, month, day, hour, minute, second)
analog_1 = analog_pin_1.read_u16()
analog_2 = analog_pin_2.read_u16()
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)
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.
※ 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 !