이제 소프트웨어 환경과 간단하게 Ping 테스트가 가능한 IoT 기기 비슷하게 만들어 보았다.
2021.04.19 - [IT/IoT | Hardware] - Raspberry Pi Pico + Ethernet 연결하기 1 - 라즈베리파이 피코 W5500
2021.04.19 - [IT/IoT | Hardware] - Raspberry Pi Pico + Ethernet 연결하기 2 - 라즈베리파이 피코 W5500
그래도 약간 부족한 부분이 있다.
DHCP 라는 게 필요하다. 보통의 네트워크 환경은 수동 IP설정이 아니라 DHCP서버(즉, 집에 있는 공유기 같으거)에서 IP를 받아오는 것이 일반적이다.
그래서 한번 더 Ping test 를 해보자. 이건 DHCP에서 IP를 받아서 동작하는 테스트이다.
1. 라이브러리 준비하기
앞선 2번 게시글과 같다. 단 DHCP를 위해서는 반드시 아래 GitHub Repo 에서 받은 라이브러리를 써야 한다.
Adafruit 에서 제공되는 WIZNET5K library 를 약간 수정한 곳이 있으므로, 반드시 아래 GitHub 에 있는 코드를 복사해 넣도록 한다.
아래 lib 파일들을 각각 다운로드 받아서, (폴더내의 파일과 폴더 이름도 동일하게 다운해야 한다)
github.com/bjnhur/pico-W5500/tree/main/lib
- adafruit_wiznet5k 폴더와 파일들
- adafruit_bus_device 폴더와 파일들
- adafruit_requests.mpy 파일
RPi Pico 보드의 lib 폴더 아래에 복사해둔다. 그럼 WIZNET5K 라는 W5500 라이브러리를 CircuitPython 환경하에서 사용할 수 있게 된다.
2. 하드웨어 연결
2번 게시글
2021.04.19 - [IT/IoT | Hardware] - Raspberry Pi Pico + Ethernet 연결하기 2 - 라즈베리파이 피코 W5500
과 동일하다.
3. code.py 수정하기 - 코딩하기
아래 코드를 그대로 라즈베리파이 피코 Raspberry Pi Pico 보드 드라이버에 있는 code.py 에 넣고 저장하면 된다.
물론 아래 코드는 간단한 Echo 를 위해서 만들어진 코드이긴 하지만 DHCP 테스트에도 쓰일 수 있다.
import board
import busio
import digitalio
import time
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
SPI1_SCK = board.GP10
SPI1_TX = board.GP11
SPI1_RX = board.GP12
SPI1_CSn = board.GP13
W5500_RSTn = board.GP15
print("Wiznet5k SimpleServer Test (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 without DHCP
# eth = WIZNET5K(spi_bus, cs, is_dhcp=False, mac=MY_MAC, debug=True)
# # Set network configuration
# eth.ifconfig = (IP_ADDRESS, SUBNET_MASK, GATEWAY_ADDRESS, DNS_SERVER)
# Initialize ethernet interface with DHCP
eth = WIZNET5K(spi_bus, cs, is_dhcp=True, mac=MY_MAC, debug=True)
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))
# Initialize a socket for our server
socket.set_interface(eth)
server = socket.socket() # Allocate socket for the server
server_ip = None # IP address of server
server_port = 50007 # Port to listen on
server.bind((server_ip, server_port)) # Bind to IP and Port
server.listen() # Begin listening for incoming clients
conn, addr = server.accept() # Wait for a connection from a client.
print("socket connected")
while True:
led.value = not led.value
time.sleep(1)
with conn:
# data = conn.recv()
# print(data)
# conn.send(data) # Echo message back to client
while True:
data = conn.recv(10)
if data:
print(data)
conn.send(data) # Echo message back to client
break
print("Done!")
앗 그런데 받은 IP를 print 문을 통해 출력하게 되어 있는데 REPL 환경이 설정되어 있지 않으면 이 콘솔 출력 값을 볼 수 없다.
4. REPL 환경 설정
보통 말하는 콘솔창이다. 이런 임베디드 보드들은 보통 UART, Serial 터미널을 통해 살펴볼 수 있다.
당연히 라즈베리파이 피코 보드에도 이 기능을 사용할 수 있다.
시리얼 터미널을 아무거나 실행하고, (없다면 Putty 라도 받아서 설치하고 다음 동작으로 들어오세요)
COM 포트를 아래 처럼 확인하고, 속도는 115200으로 오픈하면 된다.
COM Port 는 장치관리자 혹은 Device Manager를 열면 확인할 수 있다.
이제 시리얼 터미널 창으로 print 에서 출력한 값을 볼 수 있다.
5. Ping Test 결과 확인
터미널에서 보면 192.168.0.20 이라는 IP 값을 할당 받은 것을 볼 수 있다.
여기로 Ping 을 보내보면, 성공 확인
Done. 좀 간단한 네트워크 통신 예제를 준비해야 겠네요. 이젠~~~
이 코드도 간단한 Echo 는 되는데 따로 준비하지 머 너무 기니깐.
BJ.
'IT > IoT | Hardware' 카테고리의 다른 글
Raspberry Pi Pico + Ethernet 연결하기 4 - 속도측정 라즈베리파이 피코 W5500 (0) | 2021.04.27 |
---|---|
AX1 - WIZnet 위즈네트 TCP 속도 측정 툴 (0) | 2021.04.27 |
Raspberry Pi Pico + Ethernet 연결하기 2 - Ping 라즈베리파이 피코 W5500 (0) | 2021.04.19 |
Raspberry Pi Pico + Ethernet 연결하기 1 - 환경설정 라즈베리파이 피코 W5500 (0) | 2021.04.19 |
공부 - 보안 – 경량암호화 기술 (0) | 2020.06.25 |