趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • Arduino用LANインタフェース(ソフト編)

    投稿日 2011年 7月 27日 コメントはありません

    イーサネットシールドライブラリ(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データに収まる、という考え方です。

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


  • Arduino用LANインタフェース(ハード編)

    投稿日 2011年 7月 26日 コメントはありません

    Arduinoで使えるLANインタフェースを作ってみました。イーサネットコントローラは秋月で売っているENC28J60です。トランス内蔵RJ-45モジュラジャックも秋月で売っているJ0011D21BNLです。

    回路はオプティマイズさんのSPIイーサネットモジュールそのまんまです。これも基本的にはデータシートに載っている回路とほぼ同じなのですが、オプティマイズさんの回路図はENC28J60のシンボルがピン番号順に記載されているので、実体配線するのにすごく都合がよかったです。(オプティマイズさんのを買ってもよかったのですが、部品が全部手元にあったのと、ITプラザに行くのが面倒くさかった・・・。)

    ただ、違うのは抵抗が49.9Ωの代わりに51Ω、2.3kΩの代わりに2.4kΩ、フェライトビーズの代わりに22uHのインダクタを使っていること、5V→3.3Vの降圧回路を同居させていること、ホストインタフェースの端子配置をICの3~10ピンの並びをそのまま使っていることくらいでしょうか。あと、誤配線による破損防止に電源のところにポリスイッチ(リセッタブルヒューズ)を入れてあります。

    部品面はこんな感じになりました。

    抵抗・コンデンサは大部分はチップ部品を使ったので、部品面はすっきりしています。半田面はこんな感じになりました。

    終端抵抗の周りの部分で勘違いをしてしまったのでちょっと汚くなってしまいましたが、オプティマイズさんの回路図を見ているとチップ部品を使えば意外に簡単にユニバーサル基板で組めることがわかります。

    全景はこんな感じです。

    シールド形式(イーサネットシールド)にしてもよかったのですが、後でATmega644などでも使えたらいいな、と思い、今回は敢えて単独の基板にしました。