実験室

M5StickCからFirebase Realtime Databaseに値を書き込んじゃうよ。


もう5回もやってるので連載っぽくなってきました。

今日は何をするの?

今日はね、M5StickCのボタンをポチっと押すと、Firebase Realtime Databaseというクラウドのデータベースの値が変わる、ってやつをやってみたいと思います。

これができれば、M5StickCで取得したいろんなセンサーの値とかをクラウドに送信できるようになります。いいでしょ?


まずはFirebaseのアカウントをつくります

プロジェクトの作成

https://firebase.google.com/にアクセスすると、こんな画面が出てくるはずです。

こーんな感じのが出てくるので、迷わずプロジェクトを作成しましょう。

適当に名前をつけて続行します。このあとに、「Googleアナリティクスを使うかい?」とか聞かれるので、まあOFFでよいです。そしてプロジェクトを作成します。

あたらしいプロジェクトの作成が完了したら、メイン画面でこいつをポチッと押します。

そして下のほうに行くと、Realtime Databaseがあるので、ここでデータベースを作成します。なお、「ロックモードで開始」と「テストモードで開始」があるので、「テストモード」のほうを選んで、有効にするをタップします。

こんな震えるメッセージが出ますが、実験なので華麗にスルーしてみます。

そうすると、こんな画面が出ます。この「iot-sandbox-ea132」というのがデータベースです。ここで+ボタンを押して、「button」という名前の変数を追加します。値はとりあえず0でも入れておきます。

これでFirebase側の設定はひとまずOK


Arduino IDEにライブラリをインストールします

今回使うのは以下のライブラリです。前回の記事でArduinoJsonをインストールした人は、バージョン6が入っていると思うが、バージョン5の最新版に変更しておいてください。6だと動かない。

スケッチ – ライブラリを管理 – ライブラリをインクルードから、ArduinoJson 5.13.5をインストールする。

もうひとつ、IOXhop_FirebaseESP32をインストールします。

GithubのClone or downloadを押して、Download ZIPでローカルにファイルをダウンロードします。

スケッチ – ライブラリを管理 – .zip形式のライブラリをインストールで、ダウンロードしたファイルをインストールします。


コードをかく。

#include <M5StickC.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#include <IOXhop_FirebaseESP32.h>
#include "ArduinoJson.h"
#define WIFI_SSID "WifiのSSIDをここに書いてね" // ①
#define WIFI_PASSWORD "Wifiのパスワードをここに書いてね"
#define FIREBASE_DB_URL "https://iot-sandbox-ea132.firebaseio.com/" // ②
WiFiMulti WiFiMulti;
int count = 1;  // ③
void setup() {
  M5.begin(); 
  M5.Lcd.setRotation(3);
  M5.Lcd.setCursor(0, 0, 2);
 WiFiMulti.addAP(WIFI_SSID,WIFI_PASSWORD);
  M5.Lcd.print("Connecting");
  while(WiFiMulti.run() != WL_CONNECTED) {
    M5.Lcd.print(".");
    delay(1000);
  }
  M5.Lcd.println("");
  M5.Lcd.println("Connected to");
  M5.Lcd.println(WiFi.localIP());
  delay(500);
  
  Firebase.begin(FIREBASE_DB_URL);   // ④
}
void loop() {
  M5.update();  // ⑤
  if (M5.BtnA.wasPressed() ) {  // ⑥
    M5.Lcd.println("Pushed");
    Firebase.setInt("/button", count);  // ⑦
    count ++;  // ⑧
  }
}

こんなかんじです。Wifi接続部分は前回の記事で解説してるので、省略させてもらいます。本当はめんどくさいから省略するんです。

解説します

① WifiアクセスポイントのSSID/Pass

ここに自分の環境のWifiのSSIDとパスワードを記入します。

② Realtime Databaseのアドレス

これは、さっき作ったRealtime Databaseのアドレスです。ここにかかれているのがそうです。アカウントによって全部ちがうから、決して上の画像に載ってるやつをそのままコピペしてはイカンです。自分のを書いてください。

③ 書き込む値をしまっておく変数

今回は数字(int)なので、とりあえず1で初期化しておきます。

④ Firebaseと接続する

このへんの処理はぜんぶライブラリがやってくれるので、とっても便利です。

⑤ これはお作法

⑥ ボタンが押された

M5StickCの正面についている、いちばん大きいボタンがタップされたイベントをひろっています。

⑦ Realtime Databaseに値を書き込む

いよいよ、さっき作ったbuttonというプロパティに、値を書き込みます。今回は数字だから、setIntというメソッドを使っています。

⑧ 値をインクリメントする

ボタンを何回もカチカチしてカウントアップしたいので、countを1づつ増やしています。

さあ、実行してみよう

M5StickCに書き込みを行い、Wifiに接続されたあとに「M5」と書かれたボタンを押すと、「Pushed」と表示され、

無事に値がリアルタイムに書き換わりました。実験成功!

それでは今夜もこのへんで。

関連記事

     
  1. 実験室

    壮大な計画も小さな一歩から。MacOS CatalinaでM5StickCをLチカ。

    壮大な計画とは先日、IoTデバイスが埋め込まれていて、データ…

  2. 実験室

    ESP32とステッピングモーターでメーター的なものを作ってみよう(28BYJ-48・ULN2003)…

    今夜のスラニュー実験室では、ステッピングモーターを使ってアナログメー…

  3. 実験室

    3Dプリンターとステッピングモーターで、動画撮影用のターンテーブルをつくろう!

    動画をかっこよく撮影するための、撮影用ターンテーブルをつくります。3D…

  4. 実験室

    こんなに簡単にできちゃうの?っていうWordPressレコメンドプラグイン「Kindred Post…

    時代はパーソナライズですよ、機械学習ですよ。でも、先日TensorF…

  5. 実験室

    [IoT実験室] M5StickCで、7セグメントLED(TM1637)に何か表示してみよう!

    M5StickCで、7セグメントLED(TM1637)に何か表示してみ…

  6. 実験室

    AlexaでM5StickCを操作しちゃおう!

    今日のレシピは「Amazon Echo(アレクサ)で、M5S…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最新の記事

スラニューについて

PAGE TOP