« Arduinoで作ろう(42) WeMos D1で温度・湿度・気圧のWebサーバ | トップページ | ガイガーカウンタ GC10(6)空間放射線量データをAmbientへ送信する »

2020年4月 6日 (月)

Arduinoで作ろう(43) WeMos D1とAmbientの連携

 WeMos D1(ESP8266)につないだ気温・湿度・気圧センサBME280で取得したデータをAmbientに送信して,グラフを作ってみました。
Ambientというのは,『マイコンなどから送られるセンサデータを受信し,蓄積し,可視化(グラフ化)』してくれる無料サービスです。
Structure3

 チュートリアルも親切に書かれてるので,とってもカンタンでした。こんなすごいサービスが無料だなんて信じられん。
ユーザ登録して「チャネルID」と「ライトキー」を取得し,スケッチに書き込めばOK。ライブラリはココでダウンロードします。

// WeMos D1(ESP8266) + BME280 で気温・湿度・気圧測定 → Ambientに送信

#include <ESP8266WiFi.h>
#include "SparkFunBME280.h"
#include "Ambient.h"
const char* ssid = "あなたの無線LANのSSID";
const char* password = "あなたのパスワード";
WiFiClient client;
unsigned int channelId = 12345; //あなたのチャネルID
const char* writeKey = "123456789abcde";//あなたのライトキー
Ambient ambient;
float temp,humidity,pressure;
String webString="";
BME280 sensor;

void setup(void){
  Serial.begin(9600);
  Wire.begin();
  sensor.beginI2C();
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  ambient.begin(channelId, writeKey, &client); 
}

void loop(void){
  getdata();
  ambient.set(1, temp); 
  ambient.set(2, humidity);
  ambient.set(3, pressure);
  ambient.send();
  delay(300000); //5分待つ
}

void getdata() {
  temp = sensor.readTempC() ;
  humidity = sensor.readFloatHumidity() ;
  pressure = sensor.readFloatPressure()/100 ;
}

 データを5分間隔で24時間送信して,できたグラフがこれ↓ です。
ってか,Webブラウザで「Myチャネル」のページを開いてると,リアルタイムでどんどんグラフが作られていくのです。これは面白い。

Ambient

| |

« Arduinoで作ろう(42) WeMos D1で温度・湿度・気圧のWebサーバ | トップページ | ガイガーカウンタ GC10(6)空間放射線量データをAmbientへ送信する »

Arduino」カテゴリの記事

ESP8266 , ESP32」カテゴリの記事