ESP32 MicroPython SD 카드에서 설정 읽기

이 가이드는 ESP32와 MicroPython을 사용하여 마이크로 SD 카드에 저장된 설정 파일에서 설정값을 불러오는 방법을 보여줍니다. 다루는 내용:

이 방법을 사용하면 마이크로 SD 카드의 간단한 텍스트 파일을 통해 프로젝트 설정을 관리할 수 있으며, 정수, 소수, 문자열을 포함한 다양한 데이터 유형을 지원합니다.

ESP32 마이크로파이썬 마이크로 sd 카드 설정 파일

필요한 하드웨어

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow 쿠팡 | 아마존
1×(또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide 쿠팡 | 아마존
1×(또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide 아마존
1×(또는) ESP32 Uno-form board 아마존
1×(또는) ESP32 S3 Uno-form board 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×마이크로 SD 카드 아마존
1×마이크로 SD 카드 모듈 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(옵션) MicroSD to SD 메모리 카드 어댑터 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) Breakout Expansion Board for ESP32 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

마이크로 SD 카드 모듈에 대하여

마이크로 SD 카드 모듈이 처음이신가요? ESP32 MicroPython - SD 카드 튜토리얼에서 핀, 작동 방법, 프로그래밍에 대한 모든 것을 알아보세요.

작동 원리

마이크로 SD 카드의 설정 파일은 간단한 구조를 따릅니다:

  • 각 설정은 자체 줄을 차지합니다 — 키-값 쌍은 줄 바꿈 문자로 구분됩니다.
  • 각 줄 내에서 키와 값은 = 문자로 구분됩니다.

MicroPython 코드는 특정 키를 검색하여 일치하는 값을 추출하고 변수에 할당합니다. 필요에 따라 값을 int, float, 또는 string으로 변환할 수 있습니다.

배선도

ESP32 마이크로파이썬 마이크로 sd 카드 모듈 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아래 배선표는 마이크로 SD 카드 모듈을 ESP32에 연결하는 방법을 보여줍니다:

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

※ 주의:

이더넷 실드 등 쉴드에 마이크로 SD 카드 슬롯이 내장되어 있는 경우, 외부 모듈을 생략하고 카드를 슬롯에 직접 삽입할 수 있습니다.

설정값을 변수로 불러오는 방법

  • PC에서 메모장 또는 메모장++를 사용하여 config.txt 파일을 만듭니다.
  • 다음 키-값 쌍을 config.txt 파일에 복사합니다:
myString_1=Hello myString_2=newbiely.com myInt_1=2 myInt_2=-105 myFloat_1=0.74 myFloat_2=-46.08
  • 마이크로 SD 카드를 USB 3.0 SD 카드 리더기에 꽂아 PC에 연결합니다.
  • 마이크로 SD 카드가 FAT16 또는 FAT32 형식인지 확인합니다(필요한 경우 온라인에서 방법을 검색하세요).
  • config.txt 파일을 마이크로 SD 카드의 루트 디렉토리로 전송합니다.
  • 마이크로 SD 카드를 PC에서 안전하게 제거합니다.
  • 위 배선도에 따라 마이크로 SD 카드 모듈을 통해 마이크로 SD 카드를 ESP32에 연결합니다.
  • 아래 MicroPython 코드를 복사합니다.
/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-read-config-from-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) FILE_NAME = "/sd/config.txt" # Variables my_int_1 = 0 my_int_2 = 0 my_float_1 = 0.0 my_float_2 = 0.0 my_string_1 = "" my_string_2 = "" def sd_find_key(key): """Search for a key in the config file and return its value as a string.""" try: f = open(FILE_NAME, "r") for line in f: line = line.strip() if "=" in line: k, v = line.split("=", 1) if k == key: f.close() return v f.close() except Exception as e: print("SD Card: Issue encountered while attempting to open the file", FILE_NAME, e) return None def sd_find_int(key): """Read a key from config file and return as int. """ value = sd_find_key(key) if value is not None: return int(value) return 0 def sd_find_float(key): """Read a key from config file and return as float.""" value = sd_find_key(key) if value is not None: return float(value) return 0.0 def sd_find_string(key): """Read a key from config file and return as string. """ value = sd_find_key(key) if value is not None: return value return "" # 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 my_int_1 = sd_find_int("myInt_1") my_int_2 = sd_find_int("myInt_2") my_float_1 = sd_find_float("myFloat_1") my_float_2 = sd_find_float("myFloat_2") my_string_1 = sd_find_string("myString_1") my_string_2 = sd_find_string("myString_2") print("myInt_1 =", my_int_1) print("myInt_2 =", my_int_2) print("myFloat_1 =", my_float_1) print("myFloat_2 =", my_float_2) print("myString_1 =", my_string_1) print("myString_2 =", my_string_2) os.umount("/sd")

Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법:

  • Thonny IDE가 컴퓨터에 설치되어 있는지 확인합니다.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인합니다.
  • ESP32에서 MicroPython을 처음 사용하는 경우, ESP32 마이크로파이썬 - 시작하기 가이드를 참조하세요.
  • USB 케이블로 ESP32 보드를 컴퓨터에 연결합니다.
  • 컴퓨터에서 Thonny IDE를 엽니다.
  • Thonny IDE에서 Tools Options로 이동합니다.
  • Interpreter 탭에서 드롭다운 메뉴의 MicroPython (ESP32)를 선택합니다.
  • 올바른 포트가 선택되어 있는지 확인합니다. Thonny IDE가 자동으로 감지하지만, 수동으로 선택해야 할 수도 있습니다(Windows에서는 COM3, Linux에서는 /dev/ttyACM0).
  • Thonny IDE의 Tools Manage packages로 이동합니다.
  • "sdcard"를 검색하여 micropython-lib에서 제공하는 sdcard 라이브러리를 찾습니다.
  • sdcard를 클릭한 후 Install 버튼을 클릭하여 SD 카드 라이브러리를 설치합니다.
ESP32 마이크로파이썬 sd 카드 라이브러리
  • 위 MicroPython 코드를 Thonny 편집기에 붙여넣습니다.
  • 다음 방법으로 코드를 ESP32에 저장합니다:
    • Save 버튼을 클릭하거나 Ctrl+S를 누릅니다.
    • 저장 대화상자에서 MicroPython device를 선택합니다.
    • 파일 이름을 main.py로 지정합니다.
  • 녹색 Run 버튼을 클릭하거나 F5를 눌러 스크립트를 실행합니다.
  • Thonny 하단의 Shell 메시지를 확인합니다.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot SD Card initialized. myInt_1 = 2 myInt_2 = -105 myFloat_1 = 0.74 myFloat_2 = -46.08 myString_1 = Hello myString_2 = newbiely.com
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡
  • Shell에 파싱된 값이 표시되며, 이는 마이크로 SD 카드의 설정 파일에 저장된 값과 정확히 일치합니다.

더 많은 키-값 쌍을 추가하여 프로젝트에 맞게 코드를 자유롭게 확장하세요.

※ 주의:

코드는 설정 파일의 항목 순서에 의존하지 않습니다. 파일의 맨 위부터 아래로 검색하여 일치하는 키를 찾습니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

댓글