google-site-verification: google3bd66dd162ef54c7.html

ESP8266からAmbientへデーター登録

 トラ技9月号のESPの特集記事の追試の続き、今回は IoTクラウドサービスの「Ambient」へデーターを登録してみます。トラ技の記事ではP99からP101に書かれている話です。

 使った回路は前回の記事のままです。CDSで周囲の明るさを検出し、その電圧をESPのアナログポートに接続してあるので、そのデーターを自宅のWiFi を経由してAmbient にアップロードすることにしました。

 そのために、トラ技の記事に書かれているプログラム、Example09_humを私の環境用にカストマイズします。なお、トラ技の紙面には全部のプログラムが掲載されていないので、作者の方が作られたサポートページからファイルを入手します。

 以下は修正版のスケッチです。
/*******************************************************************************
Example 09c: 湿度センサ HDC1000 [Ambient対応版]
Copyright (c) 2016 Wataru KUNINO
********************************************************************************
本サンプルで使用するクラウドサービスAmbient用の設定の確認
http://ambidata.io/ch/channels.html
********************************************************************************
自分の環境用にカストマイズ。 by ラジオペンチ 2018/8/18
・UDPアップロード機能を削除。
・CDSで測った明るさデーターをADCで取り込んで60秒間隔でAmbientにアップロード
*/

#include <ESP8266WiFi.h> // ESP8266用ライブラリ
#include <WiFiUdp.h> // UDP通信を行うライブラリ
#include "Ambient.h" // Ambient用のライブラリの組み込み

//ESP-WROOM-02でアナログ入力をするための設定
extern "C" {
#include "user_interface.h"
}

#define PIN_LED 13 // IO 13(5番ピン)にLEDを接続する
#define SSID "xxxxxxxxxxxx" // 無線LANアクセスポイントのSSID
#define PASS "xxxxxxxxxxxx" // パスワード

#define AmbientChannelId yyy // yyy = チャネルID(整数)
#define AmbientWriteKey "xxxxxxxxxxxxxxxx" // ライトキー(16桁の16進数)
#define SLEEP_P 60*1000000 // スリープ時間 60秒
Ambient ambient;
WiFiClient client;

void setup() { // 起動時に一度だけ実行する関数
int waiting = 0; // アクセスポイント接続待ち用

Serial.begin(115200); // 動作確認のためのシリアル出力開始
Serial.println("Example 09C HUM->Amb"); // 「Example 09」をシリアル出力表示
WiFi.mode(WIFI_STA); // 無線LANをSTAモードに設定

// 固定IPアドレスの設定 IP Address, Gate way, Subnet mask の順に指定
WiFi.config(IPAddress(192, 168, 0, 27), IPAddress(192, 168, 0, 1), IPAddress(255, 255, 255, 0));

WiFi.begin(SSID, PASS); // 無線LANアクセスポイントへ接続
while (WiFi.status() != WL_CONNECTED) { // 接続に成功するまで待つ
delay(100); // 待ち時間処理
waiting++; // 待ち時間カウンタを1加算する
if (waiting % 10 == 0)Serial.print('.'); // 進捗表示
if (waiting > 300) sleep(); // 300回(30秒)を過ぎたらスリープ
}
Serial.println(WiFi.localIP()); // 本機のIPアドレスをシリアル出力
ambient.begin(AmbientChannelId, AmbientWriteKey, &client); // Ambient開始
}

void loop() {
float cdsVolt; // CDS電圧の測定値
char s[6]; // 文字列操作バッファ

digitalWrite(PIN_LED, HIGH); // LED点灯
cdsVolt = (float) system_adc_read(); // CDSの電圧をアナログポートから読む
dtostrf(cdsVolt, 6, 1, s); // 温度を文字列に変換
ambient.set(1, s); // Ambient(データ1)へCDSの電圧を送信
ambient.send(); // Ambient送信の終了(実際に送信する)
Serial.println(cdsVolt);
sleep();
}

void sleep() {
delay(200); // 送信待ち時間
ESP.deepSleep(SLEEP_P, WAKE_RF_DEFAULT); // スリープモードへ移行する
while (1) { // 繰り返し処理
delay(100); // 100msの待ち時間処理
} // 繰り返し中にスリープへ移行
}
 (お願い:こういう形で改変したプログラムを開示することに問題があれば連絡下さい)

▼使用するラリブラリ(赤枠内)も同じフォルダに置いてコンパイルします。
Arduinoのスケッチ

 筆者の方のサポートページのフォルダの構造をそのまま使い、メインのスケッチ名を適当に修正して使います。この例では、_20160823_example09c_humX.inoとしました。なおフォルダ名はスケッチと同じにします。

 これを動かすとAmbientにデーターが登録されるようになりました。

▼Ambientに登録したデーター例
Ambientへのアップロード結果
 このグラフは公開しているので、今のところ下記URLから参照が可能です。但し、いつ止まるか判りません、汗;
 https://ambidata.io/ch/channel.html?id=200

◆まとめ
・とても簡単にデーターを登録することが出来ました。関係している皆さまに感謝します。但し利用に当たってはAmbientのページに書かれている注意事項を理解しておく必要があります。つまり、いつ止まってもデーターが消えても無保証、何があっても文句は言わないということです。

・Ambientのページは https で作られているようですが、アクセスするブラウザによっては証明書がおかしいと言われることがありました。使ったブラウザは Windows10 の IE11, Chrome 52.0, またAndroid 4.4 の Chromeなどです。あと、ブラウザによってグラフの細かい表現が変わりますが、これは仕方ないでしょう。

・Ambientと同じようなサービスとして xively personalThingsSpeakが以前からあるのですが、それらについて記事中で一切触れられていないのはちょっと残念です。とは言っても、こうやって Ambient を紹介していただいたことで選択肢が増えるのは大歓迎です。

トラ技9月号のESPの記事を試してみた

 前の記事に書いたように、今月(2016年9月号)のトラ技にESP8266についての詳しい解説が掲載されているので、記事を見ながら実際に動かしてみました。

 ATコマンドを使うあたりの話はもう卒業しているつもりなので、Arduino IDE を使う3章あたりから順にサンプルスケッチを動かしてみました。

▼ブレッドボード
ESPのテスト回路
 これは Example05a LCDで、WiFiを経由してI2C液晶に文字を表示させる事例を動かしているところです。

▼回路図
回路図
 これが最大限に機能を増やした状態で、この回路図にしておけばトラ技の記事に書かれているほとんどのサンプルスケッチを動かすことが出来ると思います。というか、これトラ技に掲載されている回路図とほとんど同じです。なお、抵抗の番号はトラ技の記事と合わせました。

 なお、記事に掲載されたサンプルプログラムなどは、筆者の方が作られたサポートページからダウンロード可能です。但し、そのURLや書かれている内容を開示することは禁止されています。ということで、必要な方はトラ技の9月号を買いましょう。

 以下、私が嵌った点などを書いておきます。

1)サンプルプログラムは筆者のサポートページから
 トラ技の記事のプログラムなどの情報はCQ出版のサポートページからダウンロードする場合が多いのですが、今回のESPの記事では、筆者の方が作られたサポートページからダウンロードします。私、最初はてっきりトラ技のサポートページにプログラムがあると思って、しばらく探しまくっていまして。いや、記事をちゃんと読まなかった私が悪いです。

2)固定IPアドレスの設定方法
 IPアドレスを固定する方法が P79 に書かれていますが、一部でカンマ ( , ) がピリオド( . )になるTYPOがあるので修正が必要です。下記の4行目は間違いで3行目が正しい書き方です。(IPアドレスの末尾の27は例です)
  WiFi.mode(WIFI_STA);                    // 無線LANをSTAモードに設定
// 固定IPアドレスの設定 IP Address, Gate way, Subnet mask の順に指定
WiFi.config(IPAddress(192, 168, 0, 27), IPAddress(192, 168, 0, 1), IPAddress(255, 255, 255, 0));
// WiFi.config(IPAddress(192. 168. 0. 27), IPAddress(192, 168, 0, 1), IPAddress(255, 255, 255, 0));
WiFi.begin(SSID, PASS); // 無線LANアクセスポイントへ接続
 なお、記事では引数の間で改行し、それぞれの行(引数)にコメントを入れるという丁寧な書き方になっていますが、このあたりは好みの問題でしょう。

3)TeraTerm の送信はCR+LFで
 TeraTerm のTelnet からデーターを送る場合( P79の exsample05a_lcd_tcp )、Tera Term の送信はCR+LFになっていないと ESP 側で行末が検出されないのでプログラムが反応しません。

 このトラップには何度か引っかかったことがあるのですぐに気付きました。でも、実はそのあたりの話はTera Termの設定方法として、P51 の図7 に書いてありました。そこいらをすっ飛ばして読んだ私が悪いです。

 以上、重箱の隅をつつくような話ばかり書いてすみません。

 記事全体としては、ESPで出来ることを豊富な事例を交えて手際よくまとめられていると思います。サンプルプログラムが沢山あって、ほとんどの行に丁寧なコメントが入っています。ということで、これからESPを使う方にお勧めしたい内容です。

 次回は Ambient へのデーター登録について書いてみたいと思います。

今月号のトラ技はESPの特集

 今月のトランジスタ技術 9月号の特集は「Wi-Fi X 3G/LTE でIoT 製作」というタイトルで、特集記事の多くは ESP8266が入っているESP-WROOM-02の使い方について書かれています。

▼今月号のトラ技
トラ技2016年9月号
 2016年9月号です。ちなみに、トラ技の春先に出版されるもの、つまり5月号の前後はフレッシュマンの教育用ということなんでしょう、基本的な事項の解説に多くの紙面が割かれていて情報量が少ない、というかコストパフォーマンスが悪いので、最近はあまり買わないようにしています。でも流石に8月、9月号くらいになると普通のモードに戻ってきます。

▼特集記事の6章までずっとESPが出てきます
ESPの特集
 ESPについてはちょうど使い方をいろいろ試していた最中、というか挫折しかかっていた話もあるので、この特集は助かります。

 記事を読みながら実際に動かして、すぐに試せるようにするため以前作った回路を引っ張り出してきて動くようにしました。まずは最低限の回路が動くようにします。

▼ESPのテスト回路(部屋の明るさをWebにアップロードする回路)
回路図
 CDSを使って明るさを検出する回路です。明るさのデーターはWiFi経由で ThingSpeak へ送るようになっています。

 ESPに最初から入っているプログラムは使わず、Arduino IDE で作ったプログラムで動かします。

 スケッチはまだ粗削りの状態で、ここで見せるのははばかられるので、リンクの形で置いておきます。私用の覚え書きのようなものです。テスト用スケッチはこちら
 なお、このプログラムは/*Internet of Aquarium : ESP-WROOM-02 と ThingSpeak を利用して */ (heyheytowerさん)の作られたものをベースに使わせていただいています。

▼動作中の回路
部屋の明るさを測ってESPでWebに上げる
 USB電源から5Vを供給すると、一定の時間間隔でデーターを ThingSpeak にアップロードします。別の実験のために変更していた配線とスケッチを修正しました。

▼データの例
TingSpeakのグラフ
 もしアップロドーが止まっていなかったら、https://thingspeak.com/channels/114777 から最新データーを見ることが出来るはずです。

 ということで準備は完了です。トラ技の記事を見ながらぼちぼちと進めていきたいと思います。

 ちなみにこの記事の後半は、以前書いたこの記事と重複する部分が多いのですが、読みやすさを考慮して再掲しています。
カレンダー
07 | 2016/08 | 09
- 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 - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
カテゴリ
最新記事
最新コメント
この記事内へのリンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード