UNO R3 + W5100 채널 송수신
준비와 연결
UNO R3, W5100 이더넷 실드, LED와 330Ω 직렬 저항(220~560Ω 가능), 버튼, 브레드보드를 준비합니다. LED 출력은 D3, 버튼은 D2와 GND 사이에 연결합니다. 입력은 INPUT_PULLUP이므로 누르면 LOW입니다. W5100은 D10을 칩 선택으로 씁니다. LED만 확인할 때는 버튼을 생략해도 됩니다.
IOSignal과 의존 라이브러리, Bounce2를 설치한 뒤 파일 > 예제 > IOSignal > uno_ethernet_channel_txrx를 엽니다. 이더넷 보드가 여러 대면 MAC 주소를 서로 다르게 하고, DHCP가 되는 공유기에 연결합니다. 예제는 시리얼 115200 baud, 수신 버퍼 80바이트, 서버 io.iosignal.net:55488을 사용합니다.
동작
loop()마다 io.loop()를 호출하고 버튼은 Bounce2로 5ms 디바운스합니다. ready가 되면 #homeButton을 구독합니다. 버튼을 누르면 #homeButton에 텍스트 uno3-eth를 보내고, 이 태그를 받으면 LED를 토글합니다. 텍스트는 보낸 보드를 구분하는 값이며 on/off 명령이 아닙니다.
CLI로 확인
- 같은 공유기의 PC에서
io-client -c wss://io.iosignal.net/ws -j '#homeButton'로 연결합니다(CLI 클라이언트). sig #homeButton hello를 보내 LED가 토글되는지 확인합니다.- 보드의 버튼을 눌러 CLI에 메시지가 오는지, 다른 보드의 LED도 토글되는지 확인합니다.
CLI와 보드는 같은 서버, 같은 홈채널에 있어야 합니다. CLI에 자기 메시지가 보였다고 보드가 받은 것은 아닙니다.
문제 해결
DHCP가 실패하면 이더넷 케이블과 MAC 중복을 확인합니다. ready인데 LED가 반응하지 않으면 서버, 태그 철자, 홈채널, LED 극성을 확인합니다. 로컬 서버를 쓸 때는 localhost가 아니라 PC의 LAN IP와 TCP 포트를 지정합니다. 연결 환경을 참고하세요.