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

システム開発エンジニアの西田五郎が運営しております。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, 通信制御

執筆者:

関連記事

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

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

温度センサADT7410(その3)Raspbery Piでの利用

温度センサADT7410の3回目です。前回までの内容は以下です。 温度センサADT7410(その1)I2C通信とは 温度センサADT7410(その2)Arduinoでの利用 ADT7410は以下を使っ …

AndroidでUSBシリアル通信(その1)ハードウェア・ソフトウェア構成等

Androidスマートフォン、タブレットでUSBシリアル通信を行う方法についてです。AndroidでのUSBシリアル通信の方法は何通りかあると思いますが、今回はAndroidのUSBホスト機能とオープ …

温度センサADT7410(その2)Arduinoでの利用

温度センサADT7410の2回目です。前回はI2C通信の簡単な概要とADT7410モジュールをRaspbery Piに接続してアドレスの確認まで行いました。今回はArduinoでADT7410を使って …

無線マイコン ToCoStick(トコスティック)をAndroidで使ってみた

無線マイコンの ToCoStick(トコスティック)をAndroidスマホで使ってみました。前回と同様の構成ですが、Raspberry PiではなくAndroidスマホを使ってみました。 Androi …