Nucleo-F401RE + W5500モジュール + MicroPythonでインターネット接続

w5500-nucleo.jpg

先日、Arduino用のイーサネットシールドを無理やりNucleo-F401REボードに接続しましたが、この状態だとやはり危なっかしいので、より小型のモジュールを入手しました。
前回使用したW5100の兄弟チップのW5500を使用したモジュールです。
W5100はSPI以外に8bitバスでも制御可能でしたが、W5500はSPI専用です。
購入したモジュールはフリスクケース程度の大きさでした。
価格はAmazonマーケットプレイスで1000円程度でしたが、Aliexpressからだと$6~$8くらいで買えるようです。

w5500.jpg

使い方はほぼW5100と同じですが、MicroPythonにはW5500用のドライバを組み込む必要があります。
W5100と違って、W5500はMicroPythonでサポートされていますので、コードを書き換える必要はありません。
現時点のバージョンのMicroPythonでは、makeのオプションで「MICROPY_PY_WIZNET5K=5500」というようにWIZnet5Kのチップ種別を指定できるようになっていますので、gitでcloneするところからmakeのやり方を以下に載せておきます。

git clone https://github.com/micropython/micropython.git
cd micropython/
git submodule update --init
cd ports/unix
make deplibs
make
cd ../stm32/
make BOARD=NUCLEO_F401RE CROSS_COMPILE=~/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi- MICROPY_PY_WIZNET5K=5500
cp build-NUCLEO_F401RE/firmware.hex /mnt/hgfs/share/
#このあとST-Link Utilityでボードに書き込む

接続する端子も、SPIですので基本的には同じです。
購入したモジュールのピン配列(裏面)は下図のようになっていました。

w5500-pins.jpg

ちなみにですが、私の購入したモジュールはピンヘッダが下のように斜めになっていました・・・
実用上は問題ないですが、ちょっと気にはなりますね。

w5500module.jpg

Nucleo-F401REとの接続は以下のようになります(SPI2を使用する場合)。
リセットは自由に決められますが、あとは使用するSPIバスによって自動的に決まってしまいます。

W5500 Nucleo-F401RE
3.3V  3V3
MISO  PB14(MISO)
MOSI  PB15(MOSI)
SCS   PB12(NSS)
SCLK  PB13(CLK)
5V    -
GND   GND
RST   PC8
INT   -
NC    -

表面から見た接続図

stm32-w5500-2.png

(W5500モジュールのfritzingデータはこちら

MicroPythonからの使い方は、W5100のときと全く同じです。
コードは完全に互換性があります。
例によってSTARWARSサイトに接続してみました。

w5500-starwars.png

STM32 + W5500の組み合わせは、Arduino + Ethernetシールドよりもパワフルで、サイズもコンパクトに納まり、有線で使用するにはなかなか良いのではないかと思います。

コメント