実験室

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


えー、IoT実験室です。もう5回もやってるので連載っぽくなってきました。IoTに興味のない人はバックボタンを連打だ!

今日は何をするのか

今日はね、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. 実験室

    LED&KEY(TM1638)をESP32で動かすために、ちょっとだけ苦戦しました。

    LED&amp;KEY(TM1638)という、8セグLEDとボタンが…

  2. 実験室

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

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

  3. 実験室

    M5StickCとサーボでつくる、API連動のかっこいいアナログメーター

    この実験は、M5StickCとサーボ(Geekservo)を使って、…

  4. 実験室

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

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

  5. 実験室

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

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

  6. 実験室

    M5StickC+GPSモジュールで、LCDにロケーションを表示してみようぜ。

    さて、こないだの実験ではM5StickCの加速度センサーを使ってみま…

コメント

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

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

最新の記事

スラニューについて

PAGE TOP