センサーの値が一定量変化したら送信する - Wifi温度湿度計の製作(11)
Posted by arms22 on 2017年02月19日

ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto
ThingSpeakへのセンサーデータの送信間隔を一定間隔(5分)から一定量変化があったら送信するように変更しました。温度変化が激しい朝晩は5〜15分間隔、深夜から朝方にかけては温度がほぼ一定なので数時間間隔で送信しているのがわかります。1日のセンサーデータの送信回数が288回から30回〜40回に減って電池の消費量も大幅に減った、かも。これで半年ぐらい保つかな?
スケッチ
DeepSleepに入るとメインメモリのデータは保持されないので、RTCメモリにセンサーデータをバックアップして次回起動時にRTCメモリから前回データを読み出すようにしました。ThingSpeakへのセンサーデータの送信タイミングは温度±0.5度または湿度±2.0%または電源±0.02V変化があった場合としています。起床間隔は従来どおり5分。
ThingSpeakにセンサーデータを送ってグラフに表示する - Wifi温度湿度計の製作(10)
Posted by arms22 on 2016年11月04日

ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto - ThingSpeak
さていよいよ大詰め、ThingSpeakにセンサーデータを送ってグラフに表示させるよ!
ThingSpeakって何ぞ?
ThingSpeakはIoT向けのクラウドデータサービスです。デバイスから送られた来たデータを貯めて、データを解析したりグラフに表示したり、データをトリガーに何らかのアクション(ツイートするとか)を起こしたりできます。Arduino用のライブラリがあるので簡単にデータを送ることができます。
アカウントの登録
まずはThingSpeakのページを開いて新しいアカウントを作成しましょう。Sign UpをクリックしてユーザID、メールアドレス、タイムゾーン、パスワードを入力しCreate Accountボタンをクリック。
チャンネルの作成

次にチャンネルを作成します。チャンネルには8種類のデータ・場所・状態を登録することができます。場所やデバイス毎にチャンネルを分けて作成するとよいでしょう。ここでは4つ(温度・湿度・露点温度・Vcc電圧)のセンサーデータを書き込むためのチャンネルを作成します。
- メニューバーの Channels > MyChannels をクリック。
- New Channel ボタンをクリック。
- 以下の情報を入力。
Name(チャンネルの名前)
Field1 Temperature(フィード1の名前)
Field2 Humidity(フィード2の名前)
Field3 Dew Point(フィード3の名前)
Field4 Vcc(フィード4の名前)
Make Public(公開しても良いならチェック) - Save Channel ボタンをクリック
チャンネルIDと書き込み用のAPIキーの取得

センサーデータの書き込みにはチャンネルIDと書き込み用のAPIキーが必要です。メニューバーの Channels > MyChannels をクリックして、作成したチャンネルを開きます。Channel ID と書かれた6桁の数字がチャンネルID、API Keys をクリックして Write API Key と書かれた英数字の文字列が書き込み用のAPIキーです。
Arduino用ライブラリのインストール

ThingSpeakにセンサーデータを書き込む為のArduino用ライブラリをインストールします。ライブラリはArduino IDEのライブラリマネージャからインストールします。Arduino IDEを起動しライブラリマネージャを開きます(スケッチ > ライブラリをインクルード > ライブラリを管理)。検索フィルターに“thingspeak”を入力し、"ThingSpeak by MathWorks"を選んでインストールボタンを押します。
スケッチ
5分毎にセンサーデータをThingSpeakに送るスケッチです。Wifi設定、ネットワーク設定、ThingSpeak設定は環境に合わせて変更してください。
処理の流れは次のとおりです。
- Vcc電圧を取得
- Vcc電圧が3.05V未満ならバッテリーの過放電を防ぐために無限スリープに入る
- 温度・湿度データを取得
- 露点温度を計算
- Wifi接続(リトライ3回まで)
- ThingSpeakに接続
- センサーデータを送信
- 5分間ディープスリープに入る
- 1に戻る
また消費電流を減らすため下記の対策を入れています。基本方針は「余計な電波を出さない・動作時間は短く」です。
- ステーションモードに設定
初期モードはステーション+APモード。APモードではSSIDを通知するためにビーコンを送信しています。このビーコンを送信しないようステーションモードに変更しています。 - LightSleepモードに設定
データシートによるとModemSleepよりLightSleepのほうが消費電流が少ないのでこのモードに設定しています。 - 固定IPアドレス設定
DHCPのやり取りが不要になるので余計な通信が減って接続時間が短縮されます。
ThingSpeak接続時にIP直指定にするとThingSpeakへの接続時間が短くなるはずですが今回は試していません。
グラフを表示する
メニューバーの Channels > MyChannels から先ほど作成したチャンネルを開くと、ThingSpeakに送ったデータが自動的にグラフとして表示されます。グラフ右上の鉛筆マークを押すとグラフをカスタマイズすることができます。
動作時間
1000mAの電池で約20日動作しました。1000mAで30日を目標にしていたのですがなかなか厳しいです。データを溜めてまとめて送るなど対策が必要です。ただThingSpeakは15秒に1回しかAPIを呼び出せないのでまとめて送るとその分動作時間が延びてより多く電力を消費してしまいます。これについてはまた次回。
売り上げランキング: 20
HDC1000温湿度センサーモジュールから温度と湿度を読み取る - Wifi温度湿度計の製作(9)
Posted by arms22 on 2016年10月15日

さて今回は秋月電子の「HDC1000温湿度センサーモジュール」から温度と湿度を周期的に読み取って、シリアルポートに出力する方法を紹介しまします。ついでにESP-WROOM-02のVCC電圧も監視しちゃうよ。
HDC1000温湿度センサーモジュールの接続

HDC1000温湿度センサーモジュールのピン配置図
ESP-WROOM-02 vs HDC1000温湿度センサーモジュール
3.3V -> +V(1)
IO4 -> SDA(2)
IO5 -> SCL(3)
GND -> GND(5)
SDA/SCLのプルアップ抵抗はHDC1000温湿度センサーモジュール実装されているので追加不要です。RDYは今回使わないので未接続でOKです。ESP-WROOM-02を連続して動かしていると結構熱を持つので、センサーモジュールはできるだけESP-WROOM-02から離れた位置に実装するのが良いでしょう。
ライブラリのインストール
Adafruitが配布しているHDC1000用のライブラリをインストールします。
- Arduino IDEのライブラリマネージャー(ツール > ライブラリをインクルード > ライブラリを管理)を開く
- 検索フィルターに“hdc1000”を入力
- Adafruit_HDC1000_Libraryを選んでインストール
スケッチ
温度と湿度を読み出して露点温度を計算し温度・湿度・露点温度ついでにVcc電圧をシリアルポートに出力し、15秒間ディープスリープに入ります。以降、これを繰り返します。ESP.getVcc()でVcc電圧を読み取っています。単位はmV(3.3Vの場合、3300)なので1000で割ってシリアルに出力しています。Vcc電圧の読み取りには少しお作法が必要でsetup関数の前に以下の文を追加する必要があります。
ADC_MODE(ADC_VCC);
シリアルモニターを開いて、ボーレートを115200に設定すると以下のように表示されます。
※実際には下記表示とともにESP-WROOM-02が起動時に出力するメッセージが文字化けして表示されます。
Temperature: 23.33 Humidity: 49.27 Dew Point: 12.07 Vcc: 3.20
参考URL
HDC1000使用 温湿度センサーモジュール: 組立キット 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-08775/
売り上げランキング: 85,465
Wifi温度湿度計の製作(8) - ソフトウェア開発環境を準備する。
Posted by arms22 on 2016年10月03日

Wifi温度湿度計のソフトウェア開発環境の構築手順について解説します。
Arduino IDEのインストール
ArduinoのウェブサイトでArduino IDEの最新バージョンをダウンロードします(記事執筆時点で1.6.12が最新)。
Arduino - Software
https://www.arduino.cc/en/Main/Software
ボードマネージャから Arduino core for ESP8266 WiFi chip をインストール
- Arduino IDEを起動し初期設定を開きます(Arduino > Preferences…)
- 「追加のボードマネージャのURL」に次のURLを入力します
http://arduino.esp8266.com/stable/package_esp8266com_index.json - メニューからボードマネージャを開いて(ツール > ボード > ボードマネージャ…)、”esp8266"を検索します
- 見つかったesp8266を選択してインストールボタンを押します
ボードの設定
インストールが完了したらボードメニュー(ツール > ボード)から”Generic ESP8266 Module”を選択。ツールメニューに幾つかの項目が追加されるので下記のように設定します。
- ボード: Generic ESP8266 Module
- Flash Mode: QIO
- Flash Frequency: 40MHz
- CPU Frequency: 80MHz
- Flash Size: 4M (3M SPIFFS)
- Debug port: なし
- Rest Method: ck
- Upload Speed: 115200
- シリアルポート:Wifi温度湿度計基板と接続されているポートを指定してください
USBシリアル変換モジュールの接続

ESP-WROOM-02 vs USBシリアル変換モジュール
TXD --> RXD
RXD <-- TXD
GND <-> GND
スケッチの書き込み
void setup() {
Serial.begin(115200);
Serial.println("Hello esp8266 world!");
ESP.deepSleep(30 * 1000 * 1000);
}
void loop() {
}
- 新しいスケッチ(ファイル > 新規ファイル)に上記コードを貼り付けます。
- MODEキーを押したままRSTキーを解除してESP-WROOM-02をUARTダウンロードモードで起動させます。
- スケッチの書き込みボタンを押します。
error: espcomm_upload_mem failed
と表示された場合、うまくUARTダウンロードモードで起動していないと考えられるので上記書き込み手順を再度実施してください。Arduino Unoと比べてコンパイル・書き込みに時間がかかります。
シリアルモニタを開いてボーレートを115200に設定します。30秒毎に下記メッセージがモニタ画面に表示されれば書き込み成功です。
Hello esp8266 world!
参考リンク
ESP-WROOM-02開発ボードをArduino IDEで開発する方法 - スイッチサイエンス
http://trac.switch-science.com/wiki/esp_dev_arduino_ide
Installation - ESP8266 Arduino Core
http://esp8266.github.io/Arduino/versions/2.3.0/doc/installing.html
売り上げランキング: 85,465
Wifi温度湿度計の基板と部品のセットを頒布します。
Posted by arms22 on 2016年09月19日

2016/9/28
完売しました。
Wifi温度湿度計の基板と部品のセット、専用ケースを付けて送料込みで¥2,500で頒布します。全部で8セット、先着順で頒布します。完売しました。QFNパッケージまたチップ部品のはんだづけの練習をしたい方、リフローオーブンを作ったんだけど練習台が欲しい方、電池駆動のIoTデバイスを作りたい方におすすめです。
主な特徴
- ESP-WROOM-02搭載
- LM3671搭載(2MHz、600mA 降圧型 DC/DCコンバータ)
- BQ24070搭載(リチウムイオンバッテリー充電およびシステムパワーパス管理)
- リチウムイオン電池用PHコネクタ搭載
- システム電源ON/OFFスイッチ搭載
- リセットスイッチ・動作モード切替スイッチ搭載
※※※ご注意※※※
- QFNパッケージ(リードなし)の部品を使用しています。
- ピンヘッダは付属しません。
- 温湿度センサーモジュールは付属しません。
- リチウムイオン電池は付属しません。
- MicroUSBは充電専用です。プログラムの書き込みにはUSBシリアル変換モジュールが必要です。
申し込み方法
メール(arms22 at gmail.com)またはtwitterのDMで「Wifi温度湿度計基板頒布希望」と書いて住所・氏名をお知らせください。お支払い方法は折り返し連絡します。頒布品はスマートレター(日本郵政)で送ります。QFNパッケージのはんだづけ済み基板をご希望の場合はその旨お知らせください。
頒布内容

基板、部品、専用ケースが付きます。

チップ抵抗・チップコンデンサは部品表に貼付けているので実装時に迷いません!
USBシリアル変換モジュール
プログラムの書き込みにはUSBシリアル変換モジュールが必要です。3.3V動作のモジュールを使用してください。
超小型USBシリアル変換モジュール: 半導体 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-08461/
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス
https://www.switch-science.com/catalog/1032/
ESP-WROOM-02とUSBシリアル変換モジュールの接続は下記写真を参考にしてください。プログラム書き込み時の電源はMicroUSBまたはリチウムイオンバッテリーから供給してください。

ESP-WROOM-02 vs USBシリアル変換モジュール
TXD --> RXD
RXD <-- TXD
GND <-> GND
リチウムイオン電池
リチウムイオン電池は付属していません。900mAh以上の1セルのリチウムイオンまたはリチウムポリマー電池を別途お買い求めください。基板は電池がなくても動作します。
リチウムイオン電池900mAh - スイッチサイエンス
https://www.switch-science.com/catalog/2073/
適合ハウジング:PHR-2
http://www.jst-mfg.com/product/pdf/jpn/PH.pdf
実装時の注意点

USB接続による電源投入時、ESP-WROOM-02がうまく起動しない場合があります。RSTの立ち上がりを遅らせるため、0.01uFのチップコンデンサをRSTスイッチの端子と端子の間にはんだづけしてください。

バッテリー未接続時、充電完了・再充電を繰り返すのでR10/R11のチップ抵抗は実装しないでください。

D1/D2のシルクがある方がLEDのカソードです。

寸法図

回路図と部品表
Wifi温度湿度計_回路図_rev1.pdf
Wifi温度湿度計_部品表_rev1.pdf
Wifi温度湿度計の製作(7) - 基板に部品を実装したよ。
Posted by arms22 on 2016年09月05日

うまくはんだづけできるか心配していたQFN(真ん中の黒いIC)もわりと簡単に終わって、すべての部品を実装しました。特に大きな問題もなく動いているようです。ただ電池電圧の監視用にバッテリー端子に追加しておいた分圧回路が原因で、電池未接続時に充電完了→再充電を高速で繰り返すような動作をしてたので、分圧回路の抵抗は取り外しています(R10)。
左端の凸型の基板は秋月電子の温湿度センサーモジュールです。さてそろそろソフト作らないとなぁ。。センサーデータのサーバどうすっかなぁ。
HDC1000使用 温湿度センサーモジュール: 組立キット 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-08775/
Wifi温度湿度計の製作(6) - ケースを作ったよ。
Posted by arms22 on 2016年08月30日

Wifi温度湿度計のケースを作ったよ。設計はいつものfusion 360で。なんとなくスリットを入れてみたけど石鹸置きのように見えるなぁ。
基板はネジ止めせず、ケース内の突起で固定するようにした。基板下に1000mAのリチウムイオンポリマー電池を格納する予定。
fusion 360の画面。このくらいのケースなら2〜3日で作れるようになってきた。
↓fusion 360の書籍が少しずつ増えてきてるようだ。腰を据えてじっくり勉強してもいい頃合かも。
カットシステム
売り上げランキング: 15,086
カットシステム
売り上げランキング: 40,046
Wifi温度湿度計の製作(5) - 基板が届いたよ。
Posted by arms22 on 2016年08月18日

Elecrowに発注していた基板が届いた。12日に発注して17日に基板を受け取った。たまたまタイミングが合ったんだと思うけど、めちゃくちゃ早い。のんびり構えてたからまだ部品の発注もしていないのに、、急いで発注しないと。
かかった費用は基板代$9.90 + 輸送費$13.23で合計$23.13、日本円で¥2,436でした。荷物はOCS/ANA Expressで送ってもらった。$13でこの速さなら安い。
発注から到着までの流れ
8月12日 10:19 基板発注
8月12日 15:46 製造開始のメール
8月16日 13:19 基板発送のメール
8月17日 10:38 基板到着(基板は不在で受け取れなかった)
Wifi温度湿度計の製作(4) - Elecrowに基板を発注
Posted by arms22 on 2016年08月13日

Elecrowは基板の色を変えても追加費用がかからないので、今回はElecrowに基板を発注することにした。ガーバファイルの出力手順は下記記事でまとめたが、若干オプションを変更しているので設定画面を載せておく。
Wifi温度湿度計の製作(2) - デザインルール設定とガーバーファイル出力
http://arms22.blog91.fc2.com/blog-entry-608.html
ガーバーファイルの出力

レイヤはF.Cu・B.Cu・F.Siliks・B.Silks・F.Mask・B.Mask・Edge.Cutsの7つを選択。
ドリルデータの出力

「PTHとNPTH穴データを1つのファイルにマージ」のチェックを外す。
ElecrowのQAによるとメッキなし穴を含む基板を製造したい場合、メッキあり穴のファイルは「基板名-PTH.TXT」、メッキなし穴のファイルは「基板名-NPTH.TXT」とすると良いそうだ。またGML/GLOレイヤの穴はデフォルトでメッキなし穴となる。
ファイル名の変更
以下のようにファイル名を変更しZIPで固める。
*-B.Cu.gbl --> *.GBL
*-B.Mask.gbs --> *.GBS
*-B.SilkS.gbo --> *.GBO
*-Edge.Cuts.gm1 --> *.GML
*-F.Cu.gtl --> *.GTL
*-F.Mask.gts --> *.GTS
*-F.SilkS.gto --> *.GTO
*.drl --> *-PTH.TXT
*-NPTH.drl --> *-NPTH.TXT
発注
下記ページで製造条件を選んで、先ほど固めたZIPファイルを添付し、ADD TO CARTすればOK。
10pcs- 2 layer PCB
http://www.elecrow.com/10pcs-2-layer-pcb-p-1175.html
参考記事
KiCad(BZR5376)でガーバー出力してElecrowで発注する手順
http://www.siegfried-systems.com/kleusbalut/archives/101
Ki-CADで基板設計(ガーバーファイル生成) @ ともの技術メモ
http://tomono.eleho.net/2015/10/18/5996/
Q&A For PCB Service - Elecrow
http://www.elecrow.com/wiki/index.php?title=Q%26A_for_PCB_service
KiCadで雑に基板を作る チュートリアル(P36から発注の手順)
http://www.slideshare.net/soburi/kicad-53622272
Wifi温度湿度計の製作(3) - 進捗
Posted by arms22 on 2016年07月27日

電池の持ちが良くなるように部品を見直しました。電源ICをTOREXの「XC6222」からTIの降圧型DCDCコンバータ「LM3671」に、充電ICをTIのパワー・パス管理付き充電IC「BQ24070」に変更します。敬遠していたQFNパッケージも使ってみることにしました。はんだづけがうまくできるかどうか心配。。
あー、、早く設計終わらせて実装したい(ぇ