前回の記事では、Arduino Ethernetシールドの旧製品版を使ってみました。今回は、CC3000 WiFi シールドを使ってみました。以下の製品です。
CC3000 WiFi シールド
上記スイッチサイエンスさんのページからの引用で主な特徴を列挙します。
・CC3000はTI(Texuas Instruments)社のワイヤレスネットワークプロセッサ
・TI社の提供するスマートフォンアプリ「SmartConfig」
・技術基準適合証明済
詳細は上記のページを参照して頂くとしまして、ここでは早速サンプルスケッチを動かしてみたいと思います。前回の記事と全く同じように、http://www.example.comからindex.htmlをGETしてレスポンスを表示するという処理です。メーカ提供のライブラリを使いますので、その準備から始めます。
ライブラリの準備
製品のページのリンクからライブラリをダウンロードします。ダウンロードしたファイルを展開すると、SFE_CC3000_Libraryというフォルダが出来ました。
そのダウンロードしたライブラリフォルダをArduinoのライブラリフォルダへコピーします。私の場合は、Windows環境なので以下のフォルダへコピーしました。
(ユーザフォルダ)\Documents\Arduino\libraries
以上でライブラリの準備は完了です。
サンプルスケッチの読み込みから実行まで
もちろんですが、実際に接続するWiFiのアクセスポイントが必要です。そのWiFIのアクセスポイントのSSIDとパスワードを確認しておきます。
サンプルスケッチの読み込み
前項のようにライブラリの準備が出来ていれば、Arduino IDEのメニュー → ファイル → スケッチの例 → SFE_CC3000_Library → WebClient を選択することが出来ます。そうすると今回のサンプルスケッチを読み込むことが出来ます。
アクセスポイントの設定
サンプルスケッチの以下の部分を編集します。”SSID”と”PASSWORD”を編集します。
// Constants char ap_ssid[] = "SSID"; // SSID of network char ap_password[] = "PASSWORD"; // Password of network unsigned int ap_security = WLAN_SEC_WPA2; // Security of network unsigned int timeout = 30000; // Milliseconds char server[] = "www.example.com"; // Remote host site
これでArduino IDEから「マイコンボードに書き込む」で書き込みます。シリアルモニタを起動して通信速度を115200bpsに設定します。そうすると以下のように実行出来ました。
全文は以下です。
Content-Type: text/html Date: Thu, 30 Jul 2015 13:11:51 GMT Etag: "359670651" Expires: Thu, 06 Aug 2015 13:11:51 GMT Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT Server: ECS (rhv/8180) X-Cache: HIT x-ec-custom-error: 1 Content-Length: 1270 Connection: close <!doctype html> <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style type="text/css"> body { background-color: #f0f0f2; margin: 0; padding: 0; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } div { width: 600px; margin: 5em auto; padding: 50px; background-color: #fff; border-radius: 1em; } a:link, a:visited { color: #38488f; text-decoration: none; } @media (max-width: 700px) { body { background-color: #fff; } div { width: auto; margin: 0 auto; border-radius: 0; padding: 1em; } } </style> </head> <body> <div> <h1>Example Domain</h1>
前回の記事と同様のレスポンスが取得出来ました。やはり前回の記事と同様に以下のTCP/IPの階層と対比して考えるのがいいかなと思います。
アプリケーション層 – アプリケーションプロトコル(HTTP、FTP、SMTP等)
トランスポート層 – プログラム間通信、制御(TCP、UDP等)
ネットワーク層 – ネットワーク層(IP4、IP6等)
リンク層 – Ethernet、Wifi等
前回はEthernetシールドで今回はWiFi シールドです。ということは上記の階層ではリンク層の実装方法が違うということになります。そのため前回と使用しているライブラリは違いますし、接続方法の手順も違います。
但し、ネットワーク層は同じIP4で接続しています。このネットワーク層まで確立すれば、TCP通信でHTTPプロトコルのGETを実行するという意味では前回と同じです。
そうしますと、EthernetシールドでもWiFi シールドでもそれぞれのライブラリが利用出来るので、スケッチとしては、トランスポート層とアプリケーション層の処理がメインとなってくると思います。具体的にはTCPを使うのか、UDPを使うのかとその通信でどのようなアプリケーションプロトコルの処理をするかということです。
サンプルスケッチで動作確認をしただけですが、今回はここまでです。また何か書けたら公開したいと思います。
Amazon関連商品