経緯
- 初めて家庭菜園でマルチを張りました。土が直接見えないため、乾き具合が分かりにくく、土壌湿度センサーを使って記録する方法を考えています。
前回は、湿度センサーの値を Google スプレッドシートへ記録する方法を手動(エディタ)で試してみました yshigu.net
登録今回は使用する湿度センサーとマイコンの選定を進めながら、マイコンでGoogle スプレッドシートへに登録してみます。
ハード選定
センサー
- 今回のテストでは使いませんが、次回使うのでアマゾンで買っておきます。
マイコン
ストックしてものから「XIAO ESP32-C3」選びました
マイコン BLE WiFi Li-Poバッテリー Seeed Studio XIAO nRF52840 ◎ ー ◎ Seeed Studio XIAO ESP32-C3 ◎ ◎ ◎ ESP32-C3 OLED 開発ボード 0.42 インチ OLED ◎ ◎ アリエクで購入しましたが、アマゾンにもありました
プログラミング
スプレットシート書き込みテスト
XIAO ESP32-C3のソースコード
#include <WiFi.h> #include <HTTPClient.h> // ------------設定値----------------------------------- const char* ssid = "#####"; const char* password = "#####"; //デブロイのURL const String url = "https://script.google.com/macros/s/AKfyc#######/exec"; void setup() { Serial.begin(115200); //--WiFi設定 WiFi.mode(WIFI_STA); WiFi.disconnect(); if ( WiFi.begin(ssid, password) != WL_DISCONNECTED){ ESP.restart(); } while( WiFi.status() != WL_CONNECTED){ delay(1000); Serial.print("."); } Serial.println("Connected to the WiFi network!"); } void loop() { //仮に土壌湿度を設定 int humidity = 33; String urlFinal = url + "?humidity=" + String(humidity); HTTPClient http; http.begin(urlFinal.c_str()); http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { String body = http.getString(); Serial.print("HTTP_CODE_OK: "); Serial.println(body); } else if (httpCode <= 0) { Serial.println(http.errorToString(httpCode)); } http.end(); delay(60000); }
Googleスプレットシート書き込み結果

Apps Script
前回から変更しましたので記載しておきます
function doGet(e) { const url = "https://docs.google.com/spreadsheets/d/1h#########mpY/edit?gid=0#gid=0"; const ss = SpreadsheetApp.openByUrl(url); const sheet = ss.getSheets()[0]; const params = { "timestamp": new Date(), "humidity": e.parameter.humidity }; sheet.appendRow(Object.values(params)); return ContentService.createTextOutput('sccess'); }
土壌湿度の計測(長くなってきたので次回にします)
それと、屋外で使うので、防水方法を考えていきます

