본문 바로가기
IT/IoT | Hardware

Raspberry Pi Pico + Ethernet 연결하기 2 - Ping 라즈베리파이 피코 W5500

이제 소프트웨어 환경은

Raspberry Pi Pico + Ethernet 연결하기 1 - 라즈베리파이 피코 W5500

에서 완성이 되었고,

Raspberry Pi Pico W5500 Ethernet 하드웨어 연결

Raspberry Pi Pico 보드와 W5500 내장한 WIZ850io를 하드웨어 연결을 해야 한다.

라즈베리파이 피코 RP2040 보드의 핀아웃은 아래와 같다. (어디서 가져왔더라 ^^;;;)

 

라즈베리파이 피코 보드 핀아웃

위즈네트에서 생산하는 WIZ850io 의 핀 아웃은 아래와 같다.

 WIZ850io

SPI1 을 이용하여 연결해 보자. 간단하게 연결도를 첨부한다.

Fritzing 파일도 같이 첨부해 둔다. 필요한 사람 바꿔서 사용하시길

pico_wiz850io.fzz
0.03MB

  • SPI1_SCK => WIZ850io SCLK
  • SPI1_TX => WIZ850io MOSI
  • SPI1_RX => WIZ850io MISO
  • SPI1_CSn => WIZ850io SCNn
  • GP15 => WIZ850io RSTn
  • 3.3V, GND as well.

참고로 Fritzing 파일 다운로드나 사용법에 대해서는 아래 글을 참고해 보세요. 약간 편법으로 쓸 수 있는 Fritzing 무료 다운로드 링크가 있는 것 같은데 ^^;; 

ddangeun.tistory.com/13

 

아두이노 회로도, 배선 그리기 프로그램― Fritzing (프릿징) 무료 다운로드, 사용 법

여러가지 아두이노에 관련된 자료들을 찾아보면서, 아두이노 회로 또는 배선들을 깔끔하게 그려 포스팅 하는 모습들을 많이 보았을 텐데요. 아두이노 배선이나 회로도를 그려주는 프로그램인 F

ddangeun.tistory.com

라이브러리 준비

먼저 아래 lib 파일들을 각각 다운로드 받아서

github.com/bjnhur/pico-W5500/tree/main/lib

 

bjnhur/pico-W5500

Add W5500 Ethernet to Raspberry Pi Pico. Contribute to bjnhur/pico-W5500 development by creating an account on GitHub.

github.com

  • adafruit_wiznet5k
  • adafruit_bus_device
  • adafruit_requests.mpy

RPi Pico 보드의 lib 폴더 아래에 복사해둔다. 그럼 WIZNET5K 라는 W5500 라이브러리를 CircuitPython 환경하에서 사용할 수 있게 된다.

circuitpython library 복사 혹은 설치??

참고로 원본 라이브러리 위치는 아래 링크들을 참고한다.

 

adafruit/Adafruit_CircuitPython_Wiznet5k

Pure-Python interface for WIZNET 5k Ethernet modules - adafruit/Adafruit_CircuitPython_Wiznet5k

github.com

IP address 직접 입력하기 - Ping 도전!

이제 CIRCUITPY 드라이버 루트에 있는 code.py 파일을 열고 아래 코드를 복사해 넣는다. 혹은 아래 github 저장소에 방문해도 된다.

github.com/bjnhur/pico-W5500/blob/main/Pico_W5500_Ping_Test.py

 

bjnhur/pico-W5500

Add W5500 Ethernet to Raspberry Pi Pico. Contribute to bjnhur/pico-W5500 development by creating an account on GitHub.

github.com

import board
import busio
import digitalio
import time
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K

SPI1_SCK = board.GP10
SPI1_TX = board.GP11
SPI1_RX = board.GP12
SPI1_CSn = board.GP13
W5500_RSTn = board.GP15

print("Wiznet5k Ping Test (no DHCP)")

# Setup your network configuration below
# random MAC, later should change this value on your vendor ID
MY_MAC = (0x00, 0x01, 0x02, 0x03, 0x04, 0x05)
IP_ADDRESS = (192, 168, 0, 111)
SUBNET_MASK = (255, 255, 0, 0)
GATEWAY_ADDRESS = (192, 168, 0, 1)
DNS_SERVER = (8, 8, 8, 8)

led = digitalio.DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT

ethernetRst = digitalio.DigitalInOut(W5500_RSTn)
ethernetRst.direction = digitalio.Direction.OUTPUT

# For Adafruit Ethernet FeatherWing
cs = digitalio.DigitalInOut(SPI1_CSn)
# For Particle Ethernet FeatherWing
# cs = digitalio.DigitalInOut(board.D5)
spi_bus = busio.SPI(SPI1_SCK, MOSI=SPI1_TX, MISO=SPI1_RX)

# Reset W5500 first
ethernetRst.value = False
time.sleep(1)
ethernetRst.value = True

# Initialize ethernet interface with DHCP
# eth = WIZNET5K(spi_bus, cs)
# Initialize ethernet interface without DHCP
eth = WIZNET5K(spi_bus, cs, is_dhcp=False, mac=MY_MAC)

# Set network configuration
eth.ifconfig = (IP_ADDRESS, SUBNET_MASK, GATEWAY_ADDRESS, DNS_SERVER)

print("Chip Version:", eth.chip)
print("MAC Address:", [hex(i) for i in eth.mac_address])
print("My IP address is:", eth.pretty_ip(eth.ip_address))

while True:
    led.value = not led.value
    time.sleep(1)

print("Done!")

192.168.0.111 이라는 IP 로 설정하는 코드이다.

PC도 반드시 192.168.0.xxx 와 통신되는 환경을 가지고 있길 바란다. 아니면 자기 환경에  맞게 IP 부분만 수정하면 된다.

쉽지..

 

이제 LED도 깜빡이는 메인 코드가 도는 보드에 Ping 을 보내 보면 아래와 같이 정상적으로 동작되어진다.

Ping 성공

이제 IoT 기기가 되어 가는 건가 :)

BJ.