Arduino用LANインタフェース(ソフト編)

イーサネットシールドライブラリ(Ethernet Shield Library)はこちらのページにあるものを使用しました。ArduinoとENC28J60の接続も同じページにあるものを参考に接続しています。(ただし、3.3Vロジック→5Vロジックのレベル変換は通常実力的には問題ないので省略しています。)

このページ(ページの一番下の「6. Links & Downloads」)でダウンロードできるライブラリとサンプルプログラムはArduinoのバージョン0010用のものですが、ライブラリ内の #include で指定しているファイル名の大文字/小文字が間違っていてそのままではコンパイルエラーを出す(対策は当然 #include の中のファイル名修正)以外は問題なく0022でもサンプルプログラムはコンパイル/動作し、デジタル4pinに接続してあるLEDをブラウザから点灯/消灯させることもできました。

次に、linuxからpingでパケットロスのテストをしてみましたが、0.2秒周期、データ長456バイト(受信バッファが500バイトに設定されているのでこれより長いパケットは受けられない)で一晩連続テストしたり、多数のpingを起動したりしましたが、特にパケットロスが起きることもありませんでした。

このライブラリとサンプルプログラムはこちらの「HTTP/TCP with an atmega88 microcontroller (AVR web server)」が元になっていて、そちらに使い方が書いてあります。このプロトコルスタックは少ないメモリでTCP/IPを何とか扱うためにTCPでも1パケットの範囲に収まるデータを扱うことに限定しています。(趣味の範囲の)通常の遠隔操作やリモートセンシングではWebベースでも1パケット分のHTMLデータに収まる、という考え方です。

今後、もうちょっと掘り下げてみたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)