株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Arduino 通信制御

Arduino CC3000 WiFi シールドを使ってみた

投稿日:2015年7月30日 更新日:

前回の記事では、Arduino Ethernetシールドの旧製品版を使ってみました。今回は、CC3000 WiFi シールドを使ってみました。以下の製品です。
CC3000 WiFi シールド

以下はArduino UNOに接続した状態です。
wifishld1

上記スイッチサイエンスさんのページからの引用で主な特徴を列挙します。
・CC3000はTI(Texuas Instruments)社のワイヤレスネットワークプロセッサ
・TI社の提供するスマートフォンアプリ「SmartConfig」
・技術基準適合証明済

詳細は上記のページを参照して頂くとしまして、ここでは早速サンプルスケッチを動かしてみたいと思います。前回の記事と全く同じように、http://www.example.comからindex.htmlをGETしてレスポンスを表示するという処理です。メーカ提供のライブラリを使いますので、その準備から始めます。

ライブラリの準備
製品のページのリンクからライブラリをダウンロードします。ダウンロードしたファイルを展開すると、SFE_CC3000_Libraryというフォルダが出来ました。

そのダウンロードしたライブラリフォルダをArduinoのライブラリフォルダへコピーします。私の場合は、Windows環境なので以下のフォルダへコピーしました。
(ユーザフォルダ)\Documents\Arduino\libraries
0010

ライブラリフォルダ配下の構成が以下のようになりました。
0011

以上でライブラリの準備は完了です。

サンプルスケッチの読み込みから実行まで
もちろんですが、実際に接続するWiFiのアクセスポイントが必要です。そのWiFIのアクセスポイントのSSIDとパスワードを確認しておきます。

サンプルスケッチの読み込み
前項のようにライブラリの準備が出来ていれば、Arduino IDEのメニュー → ファイル → スケッチの例 → SFE_CC3000_Library → WebClient を選択することが出来ます。そうすると今回のサンプルスケッチを読み込むことが出来ます。 
0014

アクセスポイントの設定

サンプルスケッチの以下の部分を編集します。”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に設定します。そうすると以下のように実行出来ました。
0015

全文は以下です。


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関連商品


AdSense

AdSense

-Arduino, 通信制御

執筆者:

関連記事

Arduino Ethernetシールド(旧製品)を使ってみた

Arduino Ethernetシールド(旧製品)を使ってみました。Arduinoと接続した状態が以下です。おそらく2~3年前ぐらいに買ったものだと思います。どうも自宅以外で有線LANが気軽に使える場 …

LeafonyでRCカーを作ってみました(その2)RCカー編

前回の続きです。LeafonyでRCカーを作ってコントロールしてみるというテーマで書いています。前回まででLeafonyでのBluetooth Low Energy(ここからはBLEと表記します。)と …

感染症対策のためのIoT技術(その5)障害物回避センサーを利用した非接触スイッチ操作

感染症対策のためのIoT技術について書いています。今回は障害物回避センサーを利用した非接触操作です。つまり、手を触れないで何かのスイッチのオン、オフを切り替える仕組みについてです。内容的にはIoT技術 …

温度管理システム的なものを作ってみる(その1)システム概要

「温度管理システム的なものを作ってみる」の1回目です。AndroidでUSBシリアル通信の記事を書きました。(1回目はこちらから。)次は、その少し応用的な内容で書きたいと思いました。そこで、温度センサ …

Remote.itを利用したWindows PCへのリモートアクセス

Remote.itを利用してWindows PCへのリモートアクセスを設定して実際にリモートデスクトップで接続してみました。Remote.itではいろいろなリモートアクセスのサービスが提供されています …