M5StickCからデータ送信

M5StickCからFirebaseへデータ送信。

M5StickC (4) Firebase
Arduinoを利用する

1. Setup Arduino IDE

Arduino IDEがまたインストールしてないの場合、つかうPCにより、下記の何れを参考にArduino IDEのインストールする。

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を追加する必要がある。

  1.  [Arduino]-[環境設定]に、[ボードマネージャーURL]を追加
    https://dl.espressif.com/dl/package_esp32_index.json
  2. ボードマネージャーに、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に送信する

必要ライブラリ

  1. スケッチ – ライブラリを管理 – ライブラリをインクルードから、ArduinoJson 5.13.5をインストールする。
  2. もうひとつ、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 ++;  // ⑧
  }
}

 

参考:

  1. https://make-muda.net/2019/09/6906/ ーーM5StickCであそぶ 〜ボタンとLEDを使う〜
  2. https://make-muda.net/2019/08/6891/ ーー M5StickCであそぶ 〜開発環境を構築する〜
  3. https://slanew.com/news/819 — M5StickCからFirebase Realtime Databaseに値を書き込んじゃうよ。