
임베디드 시스템을 통해 개별 프로젝트를 진행하면 MicroPython이나 CircuitPython 같은 언어는 접근성이 용이하고 다양한 예제를 포함하기 때문에 초기 활용도가 높습니다. 이러한 활용성을 기반으로 W6100-EVB-Pico를 사용해서 CircuitPython으로 다양한 네트워크 예제 및 어플리케이션을 구성할 수 있습니다.
개발 흐름도 간단합니다. 코드를 수정하고 저장하면 곧바로 보드에서 실행됩니다.
이 글에서는 다음과 같은 흐름으로 소개합니다:
파이썬을 어느 정도 익힌 분이라면, 유선 이더넷 프로젝트를 처음 시도해보기에 좋은 출발점이 될 수 있을 것입니다.


CircuitPython 펌웨어 설치
| ⚠️ W6100-EVB-Pico는 RP2040 기반이므로 Pico용 펌웨어와 호환됩니다.
CircuitPython 라이브러리 설치
Adafruit CircuitPython Library Bundle 설치
필요한 라이브러리 목록 | 다음 .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 전원 |
어떤 IDE를 사용할 수 있나요?
사용법
설치 및 사용법
그 외
VS Code + CIRCUITPY 드라이브 직접 사용 (고급 사용자용)
| 주의: 파일 저장 시 "자동 저장" 기능은 비활성화 권장
| CircuitPython은 저장 즉시 실행되므로 불완전한 저장 도중 오류 발생 가능
컴파일이 필요 없는 이유?
CircuitPython은 보드 내부의 펌웨어가 .py 파일을 직접 실행하는 구조입니다.
즉, 컴파일된 .uf2 바이너리를 만드는 MicroPython/Arduino 방식과 달리,
| **"코드 파일을 드래그 앤 드롭만 하면 실행된다"**는 것이 가장 큰 장점입니다.
참고

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



기본 예제 동작을 위한 copy.py 코드
아래 코드는 W6100-EVB-Pico의 이더넷 통신을 위한 Network 주소의 사용자 Static 설정 예제입니다.
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))
결과 확인


| 임베디드 시스템의 Ethernet PHY 100FDX/10FDX 고정 사용 with W6100-EVB (0) | 2024.04.22 |
|---|
댓글 영역