상세 컨텐츠

본문 제목

W6100-EVB-Pico 보드로 CircuitPython 시작하기

WIZnet

by 잡기장 2025. 5. 28. 15:17

본문

 

임베디드 시스템을 통해 개별 프로젝트를 진행하면 MicroPython이나 CircuitPython 같은 언어는 접근성이 용이하고 다양한 예제를 포함하기 때문에 초기 활용도가 높습니다. 이러한 활용성을 기반으로 W6100-EVB-Pico를 사용해서 CircuitPython으로 다양한 네트워크 예제 및 어플리케이션을 구성할 수 있습니다.
개발 흐름도 간단합니다. 코드를 수정하고 저장하면 곧바로 보드에서 실행됩니다.

이 글에서는 다음과 같은 흐름으로 소개합니다:

  1. W6100-EVB-Pico 보드의 구성
  2. CircuitPython 설치 및 기본 설정
  3. 간단한 예제 코드 실행 및 결과 확인0

파이썬을 어느 정도 익힌 분이라면, 유선 이더넷 프로젝트를 처음 시도해보기에 좋은 출발점이 될 수 있을 것입니다.


필요한 하드웨어 구성

 

 

CircuitPython 환경 구축

CircuitPython 펌웨어 설치

  1. https://circuitpython.org/board/raspberry_pi_pico/ 에서 Raspberry Pi Pico용 CircuitPython UF2 파일을 다운로드합니다.
  2. 보드의 BOOTSEL 버튼을 누른 채 PC에 USB로 연결 → 드라이브가 RPI-RP2로 나타남
  3. UF2 파일을 해당 드라이브에 드래그 & 드롭하면 보드가 재부팅되고 CIRCUITPY 드라이브로 전환됨

adafruit-circuitpython-raspberry_pi_pico-en_US-9.2.7.zip
0.60MB

 

| ⚠️ W6100-EVB-Pico는 RP2040 기반이므로 Pico용 펌웨어와 호환됩니다.

 

 

CircuitPython 라이브러리 설치

Adafruit CircuitPython Library Bundle 설치

  1. https://circuitpython.org/libraries 에서 Library Bundle (latest) 를 다운로드
    (예: adafruit-circuitpython-bundle-*.zip)
  2. 압축 해제 후, 아래 폴더들을 CIRCUITPY/lib/ 폴더에 복사

필요한 라이브러리 목록 |  다음 .mpy 파일들을 복사하세요:

  • adafruit_wiznet5k/ 폴더 전체
  • adafruit_bus_device/ 폴더 전체
  • adafruit_requests.mpy
  • adafruit_ticks.mpy
  • adafruit_connection_manager.mpy

 

 

하드웨어 연결

W6100-EVB-Pico는 이미 보드에 아래와 같이 RP2040과 W6100이 연결되어 있으나, 혹시 별도의 SPI 구성을 원하는 경우에 참고하면 좋다.

 

RP2040 기능 연결
GP16 SPI MOSI W6100 MOSI
GP19 SPI MISO W6100 MISO
GP18 SPI SCK W6100 SCK
GP17 SPI NCS W6100 NCS
GP20 RESET W6100 RESET
3.3V / GND 전원 W6100 전원

 

 

CircuitPython 코딩을 위한 IDE 설치

어떤 IDE를 사용할 수 있나요?

  1. Mu Editor (공식 추천)
    • CircuitPython 공식 추천 IDE
    • 설치 간편하고, 보드 연결 자동 인식
    • serial console, REPL, 파일 저장 지원

          사용법

    • Mu 설치 후 → "Mode"에서 Adafruit / CircuitPython 선택
    • 코드 작성 후 Save → 자동으로 보드에 code.py로 저장됨
    • Serial 버튼 누르면 보드 출력 확인 가능
  1. Thonny (RP2040 사용에 익숙한 분 추천)
    1. Python 전용 IDE지만 CircuitPython도 지원
    2. 기본적으로 RP2040을 인식하고, 저장과 REPL 모두 가능

          설치 및 사용법

    • https://thonny.org/에서 설치
    • Run 메뉴에서 보드 디바이스 선택 (CIRCUITPY)
    • File → Save as... → This device 선택 후 code.py로 저장

그 외

VS Code + CIRCUITPY 드라이브 직접 사용 (고급 사용자용)

  • 그냥 일반 USB 드라이브처럼 CIRCUITPY에 .py 파일을 복사하면 실행됨
  • VS Code의 serial monitor 플러그인을 함께 쓰면 출력도 확인 가능

| 주의: 파일 저장 시 "자동 저장" 기능은 비활성화 권장

| CircuitPython은 저장 즉시 실행되므로 불완전한 저장 도중 오류 발생 가능

 

컴파일이 필요 없는 이유?

CircuitPython은 보드 내부의 펌웨어가 .py 파일을 직접 실행하는 구조입니다.

즉, 컴파일된 .uf2 바이너리를 만드는 MicroPython/Arduino 방식과 달리,

| **"코드 파일을 드래그 앤 드롭만 하면 실행된다"**는 것이 가장 큰 장점입니다.

 

참고

  • 보드가 CIRCUITPY 드라이브로 인식되지 않는다면, CircuitPython 펌웨어를 먼저 설치해야 합니다.
  • 예제 코드 파일 이름은 반드시 code.py 또는 main.py 여야 합니다.

 

 

CircuitPython 프로그랭 및 실행

 

이미 PC에 설치된 Thonny 를 활용하여 예제를 작성하였습니다. Mu Editor를 사용해도 크게 다르지 않으니 아래의 Python 코드만 참조하시면 동일한 동작을 수행할 수 있습니다.

 

 

프로그래밍을 위한 Thonny IDE 초기 설정

  1. 상단 메뉴에서 Thonny options 창 오픈  | 경로 : Tools → Options
  2. Thonny options 창에서 Interpreter 서브메뉴 선택
  3. Interpreter Type을 CircuitPython (generic) 으로 설정
  4. Port는 자동 지정도 가능하며 수동으로 W6100-EVB-Pico가 연결된 Port 지정도 가능

 

 

 

 

기본 예제 동작을 위한 copy.py 코드

아래 코드는 W6100-EVB-Pico의 이더넷 통신을 위한 Network 주소의 사용자 Static 설정 예제입니다.

code.py
0.00MB

 

import supervisor
import board
import busio
import digitalio
import time

import adafruit_wiznet5k.adafruit_wiznet5k as wiznet
import adafruit_requests as requests

print("Hello World!")

# SPI0: SCK=GP18, MOSI=GP19, MISO=GP16
spi = busio.SPI(clock=board.GP18, MOSI=board.GP19, MISO=board.GP16)
cs = digitalio.DigitalInOut(board.GP17)
reset = digitalio.DigitalInOut(board.GP20)
print("SPI 인터페이스 초기화 성공!")

eth = wiznet.WIZNET5K(spi, cs, reset=reset, is_dhcp=False)
print("WIZnet5k 시작 중...")

# PHY 링크 상태 확인 루프
print("PHY 링크 상태 확인 중...")
while True:
    link = eth.link_status
    if link:
        print("✅ PHY Link: 연결됨 (Link Up)")
        break
    else:
        print("❌ PHY Link: 끊김 (Link Down)")
    time.sleep(1)


print("WIZnet5k Static IP 설정 중...")

# Static IP 구성 (예시)
ip_address = (192, 168, 0, 77)
subnet_mask = (255, 255, 255, 0)
gateway = (192, 168, 0, 1)
dns_server = (8, 8, 8, 8)  # Google Public DNS
mac = "02:08:DC:01:02:03"

# WIZNET5K 초기화 (is_dhcp=False)
eth = wiznet.WIZNET5K(spi, cs, reset=reset, is_dhcp=False,mac=mac)

# 정적 IP 수동 설정
eth.ifconfig = (ip_address, subnet_mask, gateway, dns_server)

# IP 설정 확인
ip, subnet, gateway, dns = eth.ifconfig
mac = eth.mac_address
mac_str = ":".join("{:02X}".format(b) for b in mac)

# IP 주소들 출력
print("📡 네트워크 설정:")
print("  MAC Address : ", mac_str)
print("  IP Address  : ", ".".join(str(b) for b in ip))
print("  Subnet Mask : ", ".".join(str(b) for b in subnet))
print("  Gateway     : ", ".".join(str(b) for b in gateway))
print("  DNS Server  : ", ".".join(str(b) for b in dns))

 

 

결과 확인

  1. 상단 메뉴에서 Sheloo 창 오픈  | 경로 : View → Shell
  2. 상단 메뉴에서 실행 버튼 클릭 |  ▶️ Run → Run Current Script (F5)
  3. 하단에 생성된 Shell창을 통해 동작 결과 확인

 

 

관련글 더보기

댓글 영역