電子工作ArduinoにはCC3000等のWiFiシールドもあるが、当然有線のEthernetシールドもある。Ethernetシールドの使い方も簡単で、ライブラリを拾ってきて少しコードを書くだけである。上記シールドはWizNetのW5200と言うタイプのチップが搭載されたシールドである。Studioのライブラリが手直し不要ですんなり動作する(他のライブラリは一部手直ししないとコンパイルが通らない)。IDEでインポート後、各種サーバーやクライエント等のサンプルスケッチが入る。下記ライブラリは手直しが必要だが、サンプルスケッチにTweet投稿が含まれている(動作未確認)https://github.com/Wiznet/WIZ_Ethernet_LibraryWiFiの時に作成した、簡易WebサーバーとOLEDディスプレイでブラウザから入力した文字列を表示するスケッチも、ライブラリを変更してsetup処理を少し変えるだけで動作した。ArduinoのEthernetシールドには一点大きな難点がある。電源投入後、ネットワーク接続に失敗し、リセットボタンを一度押下しないとリンクがつながらない症状が出る事がある(筆者の環境では必ず失敗した)。ソフト的なリセットを行ってもArduino本体は再起動するがシールドは再起動しないため効果が無く、ソフト的な対策が出来ない点がまた難点となっている。LEDが光るが、失敗時はLEDが光らないか起動時に一瞬だけ光る。W5100チップ搭載等多数のArduino用Ethernetシールドがこの問題を抱えているらしく、原因はArduinoの起動時のリセットシーケンスにある様だが、検索すると多数の関連記事や投稿が見つかる。http://todotani.cocolog-nifty.com/blog/2010/06/arduino-etherne.htmlhttp://www.hobbyist.co.nz/?q=ethernet-shield-w5100http://marco.guardigli.it/2010/11/arduino-wiznet-ethernet-shield-proper.htmlhttp://forum.arduino.cc/index.php?topic=28175.45対策として多く挙げられているのがコンデンサと抵抗を追加し、起動時のリセット時間を伸ばす方法であるが、残念ながら筆者手持ちのW5200搭載シールドでは効果がなかった。電源投入後一回だけリセットボタンを押せば動作するが、下記方法で簡単に対策する事が出来た。必要なものはケーブル一本のみ。EthernetシールドのResetピンを曲げるか切断し、Arduinoとの接続を外す。シールドのResetピンとお好きな空きピンをジャンパーで接続する。ここではリセットピンとA3ピンを接続した(下記写真ではリセットピンを少し外にずらしてある)。後は、起動時にA3ピンを一瞬LOWにする事でEthernetシールドにリセットがかかり正常に動作する様になる。これで電源投入後手動リセットせずとも毎回正常にリンクする様になった。W5100やW5200のチップはMACアドレスを記憶する機能がない為、スケッチでMACアドレスを指定し設定する。外部インターネットに繋がないのであればローカル用MACアドレスを指定するか、衝突しないアドレスを適当に指定する(ローカル用にランダムに生成してくれるサイトもある)。外部インターネットに繋ぐ場合は割り当てられているグローバル用MACアドレスを指定するか、IEEEに申請して取得するか(有償)、使用していないLANデバイスのMACアドレスを使用する等して衝突しない様にする。A3リセット処理を含んだ簡単なWebサーバースケッチは以下の通り。コメントをキャンセルメールアドレスが公開されることはありません。*上に表示された文字を入力してください。ProgramResource.net本サイトは開発者向けに様々な情報を筆者ねふぁが提供するサイトです。筆者の個人的な経験や知識、他のサイトの情報を参考にしながらまとめています。内容に誤りや偏見などある可能性がありますのでご注意下さい。本サイトの情報を元に工作等を行い、万が一機器等が破損した場合でも責任は負いかねますので、最終的にはご自身でチェックしてから動かす様にして下さい。