macsbug

Just another WordPress.com site

ESP8266 + AE-BME280 + ThingSpeak

with 2 comments

ESP-WROOM-02 + BME280 + ThingSpeak                                                                      2015.11.01


ESP-WROOM-02 と AE-BME280(温度、湿度、気圧センサー)(秋月電子通商)と
超小型USB SERIAL変換器を使用して、ThingSpeak へデーターを送りグラフ表示しました。



配線図:


準備:
Arduino ESP 開発環境:既にESP8266のスケッチと書き込みができる用意ができている事。
Liblary:BME280_MOD-1022:BME280のESP用ライブラリー:Ian Harris氏に感謝。
ESP-WROOM-02:ピン番号を確認してください。
AE-BME280(温度、湿度、気圧センサー):秋月電子通商:(1080円)
_ J1=J2=Jumper(4.7kΩ Pull up)、J3=Jumper(I2C)
_ I2C 接続使用ピン:Wire.begin(13, 14);  // (SDA, SCL) (GPIO_13, GPIO_14)
超小型USB SERIAL 変換器:秋月電子通商(600円)
抵抗:10KΩ (4個):秋月電子通商
プッシュスイッチ :(2個):秋月電子通商
電源:3.3VDC:ブレッドボード電源等、500mA以上ある事。
その他、基板、コネクター等々。秋月電子通商とか。


メモ:
_ スケッチ入力:const char* ssid = 各自のルーターのSSIDを入力
_ スケッチ入力:const char* password = 各自のルーターの Password を入力
_ スケッチ入力:const char* thingspeak_key = 各自の API key を入力
DeepSleep Modeを使用し10分間スリープする。system_deep_sleep(10*60*1000000);
_ スリープモード(10uA)と起動:GPIO_16とRSTを接続する事。(配線図参照)
_ DeepSleep解除時にGPIO_16からLow信号が出力しRestart(RST)がかかり再起動する。
BME280:eBayには、Breakout Temperature Humidity Barometric Pressure BME280
_ Digital Sensor Module として、830円のものがある。
_ 
乾電池駆動:BME280のスリープ時の省電力方法の回路を再考する事。


スケッチ:

#include <ESP8266WiFi.h>
#include <Wire.h>
#include <SPI.h>
#include <BME280_MOD_1022.h>
extern "C" {
  #include "user_interface.h"
}
const char* ssid     = "xxxx";               // myRouter SSID
const char* password = "xxxx";               // myRouter Password
const char* host = "api.thingspeak.com";     // thingspeak URL
const char* thingspeak_key = "xxxxxxxxxxx";  // thingspeak Write KEY

void setup() {
  Serial.begin(115200);
  Wire.begin(13, 14); delay(10);             // SDA=GPIO_13,SCL=GPIO_14

  BME280.readCompensationParams();           // read the NVM compensation parameters
  BME280.writeOversamplingTemperature(os1x); // 1x over sampling
  BME280.writeOversamplingHumidity(os1x);    // 1x over sampling
  BME280.writeOversamplingPressure(os1x);    // 1x over sampling

  Serial.println();Serial.println();Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password); 
  while (WiFi.status() != WL_CONNECTED) { delay(500);Serial.print(".");}
  Serial.println("");Serial.println("WiFi connected");Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  delay(5000);
  Serial.print("connecting to ");Serial.println(host);
  WiFiClient client;      // Use WiFiClient class to create TCP connections
  const int httpPort = 80;
  if (!client.connect(host,httpPort)){Serial.println("connection failed");return;}

  BME280.writeMode(smForced); // After taking the measurement the chip goes back to sleep
  while (BME280.isMeasuring()){Serial.println("Measuring...");delay(50);}
  Serial.println("Done!");
  BME280.readMeasurements();                     // read out the data
  String temp = String(BME280.getTemperature()); // Temp
  String humi = String(BME280.getHumidity());    // Humidity
  String pres = String(BME280.getPressure());    // Pressure
  
  String url = "/update?key=";
  url += thingspeak_key;                         // thingspeak Write KEY
  url += "&field1=";url += temp;                 // Temp
  url += "&field2=";url += humi;                 // Humidity
  url += "&field3=";url += pres;                 // Pressure  
  Serial.print("Requesting URL: ");Serial.println(url);
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" +  
               "Connection: close\r\n\r\n");
  delay(10); 
  while(client.available()){                     // Read all the lines of the reply
    String line = client.readStringUntil('\r'); Serial.print(line);
  }
  Serial.println();Serial.println("closing connection. going to sleep...");
  delay(1000);
  system_deep_sleep_set_option(0);              // go to deepsleep for 10 minutes
  system_deep_sleep(10 * 60 * 1000000);         // 10 min
}

 

 


参考:

BOSCH BME280:Data Sheet


 

Written by macsbug

11月 2, 2015 @ 3:02 am

カテゴリー: ESP8266

コメント / トラックバック2件

Subscribe to comments with RSS.

  1. […] そんなわけで、手持ちのESP-8266に、ハッカソンで頂いたBME280を組合わせてみようとググったところ、そのものズバリなBlog記事を発見してしまいました。 […]

    • ギークナビさん、サイトへの訪問をありがとうございます。
      モジュールの名前はもともとエラーがあり、Arduino IDE の Versionにより エラーでコンパイル出来ない場合と エラーは出るがコンパイルできる場合があります。
      BME280-MOD-1022.h:エラー
      正解は、BME280_MOD_1022.h ですが内部の変更が必要です。
      BME280-MOD-1022.h と BME280-MOD-1022.cpp の中の – を _ に変更する必要があります。
      これは初心者には分かり難く面倒です。
      ご指摘の変更方法は素晴らしいですね。この変更方法は勉強になり助かりました。

      ギークナビ:ESP8266+BME280で計測した値をOLEDとThingSpeakに表示する
      https://geeknavi.net/iot/esp8266_thingspeak

      OLEDのフォント
      ご指摘の通りAdafruitのフォントは奇麗でないです。
      表示の奇麗さは大切で 仕上がり具合が格段に変わります。
      私は 奇麗なフォントを使用する為に SSD1306.h を使用しています。
      squix78 / esp8266-oled-ssd1306
      https://github.com/squix78/esp8266-oled-ssd1306
      squix78 の記事では 更に他のフォントを作成し組み込む事が出来ます。

      macsbug

      9月 6, 2016 at 6:53 am


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。