IoT実践(ESP8266/BME280/Blynk)(前編)

執筆者:

カテゴリ:

Esp8266bme280shadow
今日は、IoT/Smart Connected Device実践です。センサーが計測した温度、湿度、気圧の値をAndroidで見るアプリを創りましょう。
今日の材料です。秋月電子、Switch Scienceで調達。材料費は3,000円程度です。これらはすべて、インターネット上のECサイトで入手可能です。良い時代になりました。
■材料リスト
1.ESP8266 ESP-WROOM-02開発ボード(Switch Science)
2.ピンヘッダー
3.BME280 温湿度、気圧センサーキット(秋月電子)
4.ブレッドボード
5.ジャンパーワイヤ
6.USBケーブル
Smart Connected Device作成のプロセスは以下の通り。
各Stageを通し、物理的実装よりも、プログラムで設定することを優先するを設計思想とすることとしました。
今日のところは、Stage-1からStage-3まで実施できました。
■作成プロセス
Stage-1 デバイス製作(BME280/ESP8266)
Stage-2 ブレッドボード上でのデバイス統合
Stage-3 スマート化
Stage-4 Wifi経由でインターネットに接続
Stage-5 CloudApps連携


■Stage-1 デバイス製作
BME280とESP8266を入手したものの、経験の浅い私、途方にくれていました。Switch ScienceさんのBME280とESP-WROOM02開発ボードを組み合わせた製作例を紹介してくれているWebサイトはたくさんありました。
ですが、秋月電子のBME280とESP8266の組み合わせを紹介しているサイトはなかなかありません。失敗したかなあと悶々としているなか、なんとか見つけました。このサイトのおかげで自信がつきました。
■ESP-WROOM-02開発ボードで15分で家の温度・湿度・気圧モニタシステムを作る – Qiita
おまけもありました。ここで、iOSやAndroidでArduinoのコントロールやモニターが簡単にできるプラットフォーム「Blynk」の存在も教えてもらいました。
さあ、片手にコテ、片手に半田をもって、デバイスの製作です
BME280とESP8266の間のシリアル通信方法を選択しなければなりません。SPIとI2Cの2方式があるのです。Switch Scienceで紹介している例はSPIのようです。が、面倒くさがりの私は、WireライブラリでサポートしているI2Cを採用することにしました。ただ、こうなるとBME280基板上でジャンパー接続処理をしなければなりません。プルアップ抵抗の分2カ所(J1/J2)はWireライブラリをつかえば、ESP8266(Arduino)側の設定で済むことをソースで確認。
■確認したソース
./hardware/arduino/avr/libraries/Wire/utility/twi.c
// activate internal pullups for twi.
digitalWrite(SDA, 1);
digitalWrite(SCL, 1);
I2C方式用のジャンパーJ3のみを処理。手こずりました。基板上の処理部分、2ミリくらいなので、処理が成功したかどうかはルーペでなければ判りません。ルーペで確認すると、どうも半田がのらないのです。しかたなく、手元にあった抵抗の錫線を使ってジャンパを処理。ふー。
ESP8266も処理が要ります。ブレッドボードに接続するために、ピンヘッダをハンダ付けしなければなりません。ルーペでなければわかりません。これがまた、細かい仕事。わたしの要領がわるく、ハンダがなかなかのってくれません。小手先にハンダがたまっていると、失敗する事がわかりました。以降、こまめに、小手先をキレイにして、作業。
ハンダつけの作業も熟練の技がいるんですね。なおかつ、確認は、ルーペで目視し、テスターで導通も確認。10pinあるので、確認10回x2です。ふー。
■Stage-2 BreadBoar上でのデバイス統合(BME280/ESP8266)
Esp8266bme280shadow
さて、それでは、場所を変え、ブレッドボード上で、BME280とESP8266を接続しましょう。こんな接続ですね。清書はFritzing。ありがとう。ここは、先達の事例を拝見し、
~Library/Arduino15/packages/esp8266/hardware/esp8266/2.3.0/variants/generic/pins_arduino.h
static const uint8_t SDA = 4;
static const uint8_t SCL = 5;
であることが判明し、あっさり通過。
ESP8266- IO4 -> BME280-SDI
ESP8266- IO5 -> BME280-SCK
と接続
■Stage-3 スマート化
このStageから、ソフト屋さんの作業に切り替わり、MacのTerminal画面とにらめっこしながらの環境構築です。
参考にしたソースは冒頭、以下の4本includeしているので、ライブラリの追加が必要。このうちWireライブラリはArduino標準ライブラリなので個別インストールは不要です。
#include < ESP8266WiFi.h >
#include < BlynkSimpleEsp8266.h >
#include < BME280_MOD-1022.h >
#include < Wire.h >
でまず、ESP8266ライブラリをインストール。ESP8266のコミュニティ−凄く勢いありますね。
1.ESP8266ライブラリのインストール
・まず、Arduino IDE 1.6.5 をArduino websiteからインストール
・Arduinoを起動し、 PreferencesのAdditional Board Managerに以下URLを入力
→”http://arduino.esp8266.com/stable/package_esp8266com_index.json”
・Boards Manager を Tools > Board と開き、menu から esp8266 platformをインストール
・BoardをESP8266に変更するために、Tool>Board>Generic ESP8266moduleを選択
SWITCH SCIENCE さんの記述を参考にPORT設定を変更
  Flash Mode DIOからQIOに変更
  Flash Frequency 40MHz
  Upload Using  Serial
  CPU Frequency 80MHz
  Flash Size   512k(64k SPIFFS)から4M(3M SPIFFS)に変更
  Reset Method ckからnodemcuに変更
  Upload Speed 115200
  シリアルポート 開発ボードのシリアルポート番号
 これで、uploadのたびにIO0のモード切替ボタンを押し続けている苦労から解放されました。
※以前のやりかた、再現性なかったので、削除します。
cd /Applications/Arduino.app/Contents/Java/hardware/arduino
mkdir esp8266
git clone https://github.com/esp8266/Arduino.git esp8266
cd esp8266/tools
python get.py

3.BME280ライブラリをインストール
GithubからBME280ライブラリのzipをダウンロードし、~Documents/Arduino/librariyにインストール
4.Blynkライブラリをインストール
・Blynk_v0.3.1.zip12をダウンロード
・Unzip
・Arduino IDEを停止
・Unzipしたフォルダの中の以下を~Documents/Arduino/libraries/にmove
BlynkESP8266_HardSer
BlynkESP8266_SoftSer
Blynk
SimpleTimer
・Arduino IDEを起動
5.確認
さて、これでうまくいうか?と、おもったもののNG.Arduino IDEのValidationでエラーになります。
にっちもさっちもいかず、ESP8266やBlynkのExampleの中のソースをすこしずつ実行し、環境を確認。ESP8266自体には問題がないらしいことがわかりましたので、Exampleを参考に自らソースを書くことに作戦変更。
参考にしたソースは、ここ
Example>Blynk>BoardandShields>ESP8266_Standalone
このソースの動作を確認しながら、少しづづ、先人のコードをPasteしていき、無事Serial Monitor上で気温、湿度、気圧まで確認できました。
ふーーーーーーーーーー。
後半に続く。。。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です