이더넷 실드 등 쉴드에 마이크로 SD 카드 슬롯이 내장되어 있는 경우, 외부 모듈을 생략하고 카드를 슬롯에 직접 삽입할 수 있습니다.
ESP32 MicroPython - 마이크로 SD 카드에서 파일 열기 및 생성
ESP32 MicroPython 코드
/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */import machineimport osimport sdcard# Define SPI pins for the Micro SD Card moduleSPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCKSPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSISPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISOSPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS)# Initialize SD card using SoftSPI and sdcard driverspi = 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.")exceptExceptionas e:print("SD CARD FAILED, OR NOT PRESENT!", e)raiseSystemExit# Check if the file existsfile_path = "/sd/esp32.txt"if file_path.replace("/sd/", "") notin 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 notif 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")
빠른 시작
Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법:
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡
모듈에서 마이크로 SD 카드를 분리합니다.
마이크로 SD 카드를 USB SD 카드 리더기에 삽입합니다.
USB SD 카드 리더기를 PC에 연결합니다.
파일이 존재하는지 확인합니다.
ESP32 MicroPython - 마이크로 SD 카드에서 데이터 쓰기 및 읽기
다음 MicroPython 코드는 두 가지 작업을 수행합니다:
SD 카드의 파일에 데이터를 저장합니다.
파일 내용을 한 문자씩 읽어 Shell에 표시합니다.
/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */import machineimport osimport sdcard# Define SPI pins for the Micro SD Card moduleSPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCKSPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSISPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISOSPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS)# Initialize SD card using SoftSPI and sdcard driverspi = 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.")exceptExceptionas e:print("SD CARD FAILED, OR NOT PRESENT!", e)raiseSystemExitfile_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()exceptExceptionas e:print("SD Card: Issue encountered while attempting to open the file esp32.txt", e)# Open file for readingtry: f = open(file_path, "r")whileTrue: ch = f.read(1) # read characters one by one from Micro SD Cardifnot ch:breakprint(ch, end="") # print the character to the Shell f.close()exceptExceptionas e:print("SD Card: Issue encountered while attempting to open the file esp32.txt", e)os.umount("/sd")
Shell에 파일 내용이 표시됩니다:
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 ≡
※ 주의:
기본적으로 새 데이터는 파일 끝에 추가됩니다. 같은 코드로 ESP32를 재시작하면 텍스트가 다시 추가되므로 Shell 출력은 다음과 같이 됩니다:
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 ≡
마이크로 SD 카드를 모듈에서 제거하고 PC에서 내용을 볼 수도 있습니다(USB SD 카드 리더기 필요).
ESP32 MicroPython - 마이크로 SD 카드에서 줄 단위로 파일 읽기
/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */import machineimport osimport sdcard# Define SPI pins for the Micro SD Card moduleSPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCKSPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSISPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISOSPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS)# Initialize SD card using SoftSPI and sdcard driverspi = 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.")exceptExceptionas e:print("SD CARD FAILED, OR NOT PRESENT!", e)raiseSystemExitfile_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()exceptExceptionas e:print("SD Card: Issue encountered while attempting to open the file esp32.txt", e)# Open file for reading line-by-linetry: f = open(file_path, "r") line_count = 0whileTrue: line = f.readline() # read line-by-line from Micro SD Cardifnot line:break line_count += 1print("Line {}: {}".format(line_count, line.strip())) # print the line to the Shell f.close()exceptExceptionas e:print("SD Card: Issue encountered while attempting to open the file esp32.txt", e)os.umount("/sd")
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 ≡
※ 주의:
이전 실행에서 파일에 데이터가 이미 있는 경우 Shell에 추가 줄이 표시될 수 있습니다.
ESP32 MicroPython - 마이크로 SD 카드의 파일 덮어쓰기
데이터가 기본적으로 추가되므로, 파일을 덮어쓰는 가장 쉬운 방법은 기존 파일을 삭제하고 같은 이름으로 새 파일을 만드는 것입니다.
/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-micro-sd-card */import machineimport osimport sdcard# Define SPI pins for the Micro SD Card moduleSPI_SCK_PIN = 18 # The ESP32 pin GPIO18 connected to SCKSPI_MOSI_PIN = 23 # The ESP32 pin GPIO23 connected to MOSISPI_MISO_PIN = 19 # The ESP32 pin GPIO19 connected to MISOSPI_CS_PIN = 5 # The ESP32 pin GPIO5 connected to SS (CS)# Initialize SD card using SoftSPI and sdcard driverspi = 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.")exceptExceptionas e:print("SD CARD FAILED, OR NOT PRESENT!", e)raiseSystemExitfile_path = "/sd/esp32.txt"# Delete the file if it exists (to overwrite)try: os.remove(file_path)exceptOSError:pass# Create new file by opening file for writingtry: 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()exceptExceptionas e:print("SD Card: Issue encountered while attempting to open the file esp32.txt", e)# Open file for readingtry: f = open(file_path, "r")whileTrue: ch = f.read(1) # read characters one by one from Micro SD Cardifnot ch:breakprint(ch, end="") # print the character to the Shell f.close()exceptExceptionas e:print("SD Card: Issue encountered while attempting to open the file esp32.txt", e)os.umount("/sd")
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 ≡
ESP32를 재시작합니다.
Shell의 파일 내용이 교체되었는지 추가되었는지 확인합니다.
마이크로 SD 카드를 모듈에서 제거하고 PC에서 파일을 검사할 수도 있습니다(USB SD 카드 리더기 필요).
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.