이제 소프트웨어 환경은
Raspberry Pi Pico + Ethernet 연결하기 1 - 라즈베리파이 피코 W5500
에서 완성이 되었고,
Raspberry Pi Pico W5500 Ethernet 하드웨어 연결
Raspberry Pi Pico 보드와 W5500 내장한 WIZ850io를 하드웨어 연결을 해야 한다.
라즈베리파이 피코 RP2040 보드의 핀아웃은 아래와 같다. (어디서 가져왔더라 ^^;;;)
위즈네트에서 생산하는 WIZ850io 의 핀 아웃은 아래와 같다.
SPI1 을 이용하여 연결해 보자. 간단하게 연결도를 첨부한다.
Fritzing 파일도 같이 첨부해 둔다. 필요한 사람 바꿔서 사용하시길
- 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 무료 다운로드 링크가 있는 것 같은데 ^^;;
라이브러리 준비
먼저 아래 lib 파일들을 각각 다운로드 받아서
github.com/bjnhur/pico-W5500/tree/main/lib
- adafruit_wiznet5k
- adafruit_bus_device
- adafruit_requests.mpy
RPi Pico 보드의 lib 폴더 아래에 복사해둔다. 그럼 WIZNET5K 라는 W5500 라이브러리를 CircuitPython 환경하에서 사용할 수 있게 된다.
참고로 원본 라이브러리 위치는 아래 링크들을 참고한다.
- Adafruit original lib - https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k
- Adafruit Bus Device - https://github.com/adafruit/Adafruit_CircuitPython_BusDevice
- For other mpy files - Adafruit's CircuitPython library bundle
IP address 직접 입력하기 - Ping 도전!
이제 CIRCUITPY 드라이버 루트에 있는 code.py 파일을 열고 아래 코드를 복사해 넣는다. 혹은 아래 github 저장소에 방문해도 된다.
github.com/bjnhur/pico-W5500/blob/main/Pico_W5500_Ping_Test.py
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 을 보내 보면 아래와 같이 정상적으로 동작되어진다.
이제 IoT 기기가 되어 가는 건가 :)
BJ.
'IT > IoT | Hardware' 카테고리의 다른 글
AX1 - WIZnet 위즈네트 TCP 속도 측정 툴 (0) | 2021.04.27 |
---|---|
Raspberry Pi Pico + Ethernet 연결하기 3 - DHCP 라즈베리파이 피코 W5500 (2) | 2021.04.19 |
Raspberry Pi Pico + Ethernet 연결하기 1 - 환경설정 라즈베리파이 피코 W5500 (0) | 2021.04.19 |
공부 - 보안 – 경량암호화 기술 (0) | 2020.06.25 |
스마트 모빌리티 지향의 V2X 산업 동향 - ITFIND (0) | 2020.06.23 |