パソコン プログラミング

【M5stack】google spread sheetにデータを送る方法を紹介!

投稿日:

こんにちは。

ラウィです。

はじめに

今日は12月24日のクリスマスイブですが、布団に入りながら、今回紹介するプログラムを作っていました(笑)

 

さて、今回はM5stackのボタンを押すと、google spreadsheetにデータを送る方法を共有します。

私はプログラミング初心者なので、結構時間がかかり徹夜していまいました(笑)

誤字などあるかもしれませんが、プログラムは動くので許してください

プログラムは先人の知恵を借りて作成したので、省けるところは、参考にしたサイトを見てやってください!

 

Google APIの取得とsheetの設定

まず、Google DriveとsheetのAPIを取得してください。

そうしないと、シートにデータが反映されない可能性があります。

こちらのサイトを参考にしてください

「3.プログラムの実行」は動作確認したい方だけで大丈夫です。

ちなみに、私はやりませんでした。

【もう迷わない】Pythonでスプレッドシートに読み書きする初期設定まとめ

補足しておくと、

スクリプトエディタのコードを実行をすると、エラーがでると思いますが、気にしなくて大丈夫です。

あと、こちらのサイトも参考になったので、ご覧ください。初期設定での動作確認方法が書かれています。この確認はしておいた方がいいと思います!

https://raspberry-pi.nomad-life.net/1917477/memo/esp32%E3%81%A7google%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%93%E3%81%A7%E3%81%BF%E3%82%8B

 

Arduino IDEの設定

今回動作させるプログラムはArduinoIDEで動作させます。

こちらのサイトを参考に設定してください。

サイトの説明に2種類のESP32関連のボードをインストールすると書かれていますが「ESP32」のボード1つインストールすれば問題ないです!

②③は今回実行しないので、読まなくても大丈夫です。

https://nomad-life.net/19191277/%E6%A0%BD%E5%9F%B9-%E7%AE%A1%E7%90%86/%E3%80%90%E8%BE%B2%E6%A5%AD%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AD%E3%82%AC%E3%83%BC%E3%80%91%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%82%B9%E3%83%9E%E3%83%9B%E3%81%A7%E7%B0%A1%E5%8D%98%E8%A1%A8%E7%A4%BA

あとは、M5stack の設定を行います

こちらのサイトを参考にしてみてください

初心者向けM5Stackの始め方(ArduinoIDE編)

 

プログラム①

設定は終わったのでM5stackにプログラムを入れて実行させます。

IDEの設定で参考にしたサイトの④のプログラムをそのまま実行させます。

https://nomad-life.net/19191277/%E6%A0%BD%E5%9F%B9-%E7%AE%A1%E7%90%86/%E3%80%90%E8%BE%B2%E6%A5%AD%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AD%E3%82%AC%E3%83%BC%E3%80%91%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%82%B9%E3%83%9E%E3%83%9B%E3%81%A7%E7%B0%A1%E5%8D%98%E8%A1%A8%E7%A4%BA

これで動作しないと、問題がどこかにあるはずなので、手順や設定などを見直して下さい。

 

プログラム②

以下がM5stack のボタンを押したときにデータをspreadsheetに反映させるプログラムです。

プログラム①で作成したプログラムをベースに作成しています。

#include <WiFiClientSecure.h>
#include <M5Stack.h>

WiFiClientSecure client;
//適当な値を代入しています
float sensor1 = 1;
float sensor2 = 2;
float sensor3 = 3;

//ボタン設定
const uint8_t buttonA_GPIO = 39;
const uint8_t buttonB_GPIO = 38; //今回はBボタンは使わない
const uint8_t buttonC_GPIO = 37; //今回はCボタンは使わない
bool flag_btA_is_pressed = false;
static void buttonA_isr() {
Serial.println("A interrupt");
flag_btA_is_pressed = true;
}

const char* ssid = "×××";
const char* password = "×××";
const char* server = "script.google.com";
// google script key
const char* key = "×××";

void setup() {
Serial.begin(115200);
M5.begin();
M5.Lcd.setRotation(3); // 左を上にする
M5.Lcd.setTextSize(3); // 文字サイズを3にする
M5.Lcd.fillScreen(BLACK); // 背景を黒にする
//ボタンの設定
pinMode(buttonA_GPIO, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonA_GPIO), buttonA_isr, FALLING);
}

void wifi_conect() {
WiFiServer server(80);
// Wi-Fiに接続
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.println("Wifi connectting");
// 接続するまで待機する
delay(1000);
}
Serial.print("Connected to ");
Serial.println(ssid);
Serial.println("IP address: ");
Serial.println(WiFi.localIP());

server.begin();
}

void loop() {

if (flag_btA_is_pressed) {
flag_btA_is_pressed = false;
wifi_conect();
String URL = "https://script.google.com/macros/s/";
URL += key;
URL += "/exec?";

URL += "&1_cell=";
URL += sensor1 ;
URL += "&2_cell=";
URL += sensor2 ;
URL += "&3_cell=";
URL += sensor3 ;

Serial.println(URL);
// サイトにアクセス
Serial.println("\nStarting connection to server...");

if (!client.connect(server, 443)) {
Serial.println("Connection failed!");
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.println("Failed");
} else {
Serial.println("Connected to server!\n");
client.println("GET " + URL);

M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.println("Sending...");

client.stop();
Serial.println("finish.");

M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.println("Success");
}
}
WiFi.disconnect();
}

 

ArduinoIDEでM5stackのボタンを使用するためには設定をする必要があるみたいです。定義にはBとCが書かれていますが、今回のプログラムでは使用していません

このサイトを参考に設定しました

http://jing98.wp.xdomain.jp/?p=434

 

予め、シートの1行目に日付など項目を書いておくといいと思います。

また、今回はsensor=1,sensor=2,sensor=3と定義していますが、中身の数字を変えれば温湿度センサや、超音波センサなどのセンサの値にすることも可能です。

 

実行結果

実行するとこのようになります

 

最後に

以上になります。ボタンの長押しや、Bボタン、Cボタンで様々なセンサの値を入れたり、複数のシートに値を入れられるようにできたら面白いですね。

最後までご覧くださり、ありがとうございました。

お疲れ様でした!(@^^)/~~~

 

オススメ記事

-パソコン, プログラミング
-, , ,

Copyright© LAWI BLOG , 2021 All Rights Reserved Powered by STINGER.