2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Amazonウィジェット

  • お気に入り
  • 書籍ランキング

AdSense

  • 広告
無料ブログはココログ

« シェルスクリプトのコツ | トップページ | Linuxでシリアル通信 (cygwinでもできる) cuコマンド活用 »

2018年8月 5日 (日)

Arduinoのイーサネットシールドを使う

SainSmartのイーサネットシールドを使ってみた。

シールドはとても接触が悪いので、しっかり差し込む。USBのコネクタの天井がちょうどRJ45コネクタの基板への端子のでっぱりが当たるので最後まで入らない。

SAINSMARTのArduino UNO(黒いボード)を使う場合は3.3Vモードになっているとシールドが動かない。 ちゃんと接続できると、ランプが全部点く。

色々いじっていると、どうもコネクタの接触だけではなく、ICの接触不良もあることがわかった。コネクタを指しなおしてしばらくすると、ランプが消えてしまうのだ。

そんなときはICの頭をぎゅっと押すとランプが復活する。ところがICが動き出すとICが発熱するのでいつまでも押していたくはない。。。アツアツ

見た目にカサカサな半田で、ルーペで見てみると足がところどころ浮いているようにも見える。。。
半田こてとスッポン、半田吸い取り線を駆使して、QFPの4辺すべての半田をやり直したら収まった。





とりあえず動作確認をするには、WebServerというサンプルを使うのが簡単。
Arduino IDEからサンプルスケッチ→WebServerを開き、ボードに書き込む。

desktop-PCとArduinoの接続は、USBイーサネット変換ケーブルを使った。こういう製品があるので、安いのを買って使っている。PCのLANポートとArduinoを直接普通のLANケーブルをつないでも、おそらく受信・送信の線がぶつかるのでクロスケーブルを買わないといけない。つないだLANケーブルはストレートなのかクロスなのか?そんなことを考えるよりは、こういうのを一個持っていたほうが楽ちん。


PC側のIPアドレスを例えば"192.168.1.180"とし、コントロールパネルでUSBイーサのネットワークが認識されることを確認する。

もし、「ケーブルが接続されていません」というエラーが出ているときは、シールドの接触が悪くなっているかもしれないので、もう一度挿しなおしたりしてシールドのLEDが全部つくようにする。

ブラウザにIPaddress"192.168.1.177"を打ち込むと、成功していればADポート5本の値が出てくる。

これだけでも結構面白そうなことが出来そうだが、今度はUDPの送受信を試してみた。
※UDPを使うと書いた文字が即送信できる。LAN版のシリアル通信みたいなもん。



UDPを送受信するサンプルは、UDPSendReceiveStringが使える。

このサンプルソースにはProcessingのソースがコメントで記載されているが、Processing3では動かなかった。ライブラリの設定などがややこしいので、cygwin上のlinuxツールを使ってやることにした。
cygwinについての詳しい情報は他所に譲るとして、netcatをインストールするまでの手順を残しておく。


<cygwinでのnetcatのインストール>
1.
Cygwinのインストーラを落として、packageの選択のところでwebカテゴリーの、wgetをインストールする。

2.
wgetを使って、apt-cygをダウンロードする。
※apt-cygの正体はスクリプトである。しかしファイルをブラウザから落としても、apt-cygの中でどうしてもwgetを使うから、apt-cygのファイルだけ落としてきても使えない。

wgetのコマンド
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

3.
apt-cygでnetcatをインストール。

コマンド
apt-cyg install nc

注意:apt-cyg install netcatではない。

インストールが終わったら、ncと打ち込んで、何かしら動いていることを確認。


<netcatを使った簡単な通信>
cygwinの窓を二つ開き、サーバ・クライアントに分けて動作させる。localhostを使って1台のPC内で動作確認ができる。

例として5000番のポート番号を指定する。

サーバ側で
nc -l 5000 (TCPの場合)
nc -ul 5000 (UDPの場合)

と打ち込んだら受信待ちになる。


クライアント側で
nc 127.0.0.1 5000

とコマンドを打った後、何かを打ち込んでEnterするとサーバがわに打ち込んだ内容が受信される。

<UDPSendReceiveStringの動作確認>
netcatを使う場合は、UDPを指定しないとArduinoに送信できない。-uがUDPのオプション。
こんな風にコマンドを打つ。IPやポート番号はサンプルソースに合わしている。

nc -u 192.168.1.177 8888

一方、Arduino IDE側でシリアルモニタを開く。
PC側で"asdf"と打ち込んでEnterすると、シリアルモニタに下記のようなメッセージが表示される。受信文字列とそのほかの情報が出てくる。

Received packet of size 5
From 192.168.1.180, port 64545
Contents:
asdf




« シェルスクリプトのコツ | トップページ | Linuxでシリアル通信 (cygwinでもできる) cuコマンド活用 »

Arduino」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/518723/67024314

この記事へのトラックバック一覧です: Arduinoのイーサネットシールドを使う:

« シェルスクリプトのコツ | トップページ | Linuxでシリアル通信 (cygwinでもできる) cuコマンド活用 »