はじめに
最近、IoTデバイスの開発においてEthernet接続の安定性と高速通信が求められています。そんな要望に応えるのが、WIZnetのToE(TCP/IPオフロードエンジン)搭載Ethernetチップ(Ethernetchip)W5500です。特に、W55RP20-EVB-PicoとMicroPythonを使って手軽にTCPクライアントを作成する方法をご紹介します。
使用するコンポーネント
- WIZnet - W55RP20-EVB-Pico
- MicroPython環境
W5500 Ethernetchipとは?
WIZnetのW5500はハードウェアベースのTCP/IPプロトコルスタックを搭載した**ioNIC(Input/Output Network Interface Controller)**であり、マイコンの負荷を大幅に軽減します。そのため、安定性が重要なIoTデバイス開発に最適な選択肢です。
今回のプロジェクトの概要
本プロジェクトは、MicroPythonとWIZnetのW55RP20-EVB-Picoを使用して、サーバーに接続し、受信したデータをエコーバック(echo)するTCPクライアントのサンプルコードです。
主な機能:
- TCPサーバーへの継続的な接続
- 受信データをデコードして表示、送信元へ即座にエコーバック
ソースコードの構造
ライブラリ | 目的 |
---|---|
socket, usocket | TCP通信を管理 |
machine, network | ハードウェアとネットワークの機能を提供 |
time, uasyncio | タイミング制御と非同期処理 |
w5x00_init | W5500 Ethernetchipの初期化 |
実行方法
ハードウェア準備
- WIZnet W55RP20-EVB-Picoをネットワーク(Ethernet)に接続します。
コードのデプロイ
- MicroPythonボードに提供されたスクリプトをアップロード。
- REPLまたは起動時に自動的に
main.py
を実行。
TCPサーバー設定例(テスト用)
簡易的なテストサーバーを構築:
ターミナルでnetcatを使う場合:
nc -lvp 2300
PythonでTCPサーバーを立てる場合:
import socket
s = socket.socket()
s.bind(('0.0.0.0', 2300))
s.listen(1)
conn, addr = s.accept()
while True:
data = conn.recv(2048)
if data:
conn.send(data)
実行結果のサンプル
接続成功時の例:
my ip is 192.168.7.100
Loopback client Connect! (0.5) seconds
recv from 192.168.7.3:[2300]: Hello Server
サーバー切断時の例:
disconnect [Errno 104] ECONNRESET
connect error [Errno 111] ECONNREFUSED
まとめ
WIZnetのW55RP20ボードとMicroPythonを組み合わせることで、シンプルかつ効率的なTCPクライアントを実装可能です。IoTプロジェクトで安定した高速なEthernet通信が必要な場合、このToE搭載Ethernetchipが最適です。