M5StickCからFirebaseへデータ送信。
M5StickC (4) Firebase
Arduinoを利用する
- Setup Arduino IDE for Raspberry Pi
- Setup Arduino IDE for Ubuntu
- Setup Arduino IDE for Macbook
- Setup Arduino IDE for Windows
2. USB-UARTドライバのインストール
Silicon Labsの以下のURLからドライバをダウンロード
USB – UART ブリッジ VCP ドライバ|Silicon Labs
3. Board ManagerにESP32追加
つい最近(20180728), ESP32 用 Arduino 開発環境 Arduino core for ESP32 WiFi chip の初の安定版 1.0.0 がリリース。インストールする際に, コマンドラインで色々する必要はなく Arduino IDE のメニューからインストールできるようになる。
Arduino-IDEを使ってWeMosにスケッチを書き込むには、こ ち らを参考にESP32用のAddOnを追加する必要がある。
- [Arduino]-[環境設定]に、[ボードマネージャーURL]を追加
https://dl.espressif.com/dl/package_esp32_index.json - ボードマネージャーに、ESP32を検索して追加
4. ライブラリを管理にM5StickC
インストールが終わったらボードマネージャを閉じて、「スケッチ」->「ライブラリをインクルード」->「ライブラリを管理」。
検索にm5stick coreと入力すると候補があらわれます。「M5Stick Core development kit」を選択してインストール
5. HelloWorldプログラム
「ファイル」->「スケッチ例」->「M5StickC」->「Basics」->「HelloWorld」を書き込んでみます。
参考2の手順を参考する。
6. Blinkプログラム
ボタンAが押されたとき。今回は1回発光
ボタンBが押されたとき。今回は2回点滅
参考1からソースコードを利用する。
#include <M5StickC.h> #define BTN_A_PIN 37 #define BTN_B_PIN 39 #define LED_PIN 10 // このLEDは、GPIO10の電位を下げることで発光するタイプ #define LED_ON LOW #define LED_OFF HIGH // INPUT_PULLUPが有効かは不明だが、有効という前提で定義 #define BTN_ON LOW #define BTN_OFF HIGH uint8_t prev_btn_a = BTN_OFF; uint8_t btn_a = BTN_OFF; uint8_t prev_btn_b = BTN_OFF; uint8_t btn_b = BTN_OFF; void setup() { // Initialize the M5StickC object M5.begin(); pinMode(BTN_A_PIN, INPUT_PULLUP); pinMode(BTN_B_PIN, INPUT_PULLUP); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LED_OFF); // LCD display M5.Lcd.setRotation(1); // ボタンBが上になるような向き M5.Lcd.setTextSize(2); // フォントサイズをデフォルトの2倍に M5.Lcd.print("BTN&LED Test."); } void loop() { btn_a = digitalRead(BTN_A_PIN); btn_b = digitalRead(BTN_B_PIN); if(prev_btn_a == BTN_OFF && btn_a == BTN_ON){ // ボタンAが押されたとき。今回は1回発光 digitalWrite(LED_PIN, LED_ON); delay(500); digitalWrite(LED_PIN, LED_OFF); } if(prev_btn_a == BTN_ON && btn_a == BTN_OFF){ // ボタンAが離されたとき。今回は何もしない ; } if(prev_btn_b == BTN_OFF && btn_b == BTN_ON){ // ボタンBが押されたとき。今回は2回点滅 digitalWrite(LED_PIN, LED_ON); delay(500); digitalWrite(LED_PIN, LED_OFF); delay(500); digitalWrite(LED_PIN, LED_ON); delay(500); digitalWrite(LED_PIN, LED_OFF); } if(prev_btn_b == BTN_ON && btn_b == BTN_OFF){ // ボタンBが離されたとき。今回は何もしない ; } prev_btn_a = btn_a; prev_btn_b = btn_b; }
7. Firebaseに送信する
必要ライブラリ
- スケッチ – ライブラリを管理 – ライブラリをインクルードから、ArduinoJson 5.13.5をインストールする。
- もうひとつ、IOXhop_FirebaseESP32をインストールします。
参考3からソースコードを利用する。
#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 ++; // ⑧ } }
参考:
- https://make-muda.net/2019/09/6906/ ーーM5StickCであそぶ 〜ボタンとLEDを使う〜
- https://make-muda.net/2019/08/6891/ ーー M5StickCであそぶ 〜開発環境を構築する〜
- https://slanew.com/news/819 — M5StickCからFirebase Realtime Databaseに値を書き込んじゃうよ。