12_Googlespreadsheet_LightSensor

明るさをGoogleスプレッドシートへ記録する

光センサーで測った明るさをGoogleスプレッドシートへ送信します。

光センサーモジュールWi-Fi通信
1

準備する

CherryIoTとモジュールを接続する

CherryIoTの指定コネクタに以下のモジュールを接続し、CherryIoTをPCのUSB-A挿入口に接続します。

光センサーモジュール

光センサーモジュール

接続先:A

Wi-Fiの情報を確認する

CherryIoTを接続する2.4GHz Wi-FiのSSID(ネットワーク名)とパスワードを確認します。Wi-Fiルーター本体のラベルや設定画面に記載されています。分からない場合は、ネットワークの管理者に確認してください。

Googleスプレッドシートを準備する

はじめに「11_Googlespreadsheet」で、Googleスプレッドシートへデータを送る基本の流れを確認してください。このサンプルでは、その流れを使って光センサーの値を記録します。

2

サンプルコード

GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。

12_Googlespreadsheet_LightSensor.ino
GitHubで開く
GitHubからコードを読み込んでいます...
3

プログラムを書き込む

上のサンプルコードをコピーし、Arduino IDEに貼りつけます。

設定情報を書き換える

コード内の以下の箇所を、「1 準備する」で確認・取得した情報に 書き換えます。

コード内の項目入力する情報
ssid接続するWi-FiのSSID
passwordWi-Fiのパスワード
urlGoogle Apps ScriptのウェブアプリURL
const char* ssid = "ここにSSIDを入力";const char* password = "ここにパスワードを入力";String url = "ここにウェブアプリURLを入力";

コードの左側にある項目名や記号は残し、例を参考に値の部分だけを 書き換えます。値を囲む"、行末の;、 証明書の開始・終了行などは削除しません。書き換えたあと、xxxxxなどの仮の文字が残っていないことを確認してください。

Wi-Fiのパスワード、APIキー、トークン、証明書などを入力したコードは、 Webサイト、SNS、GitHubなどへ公開しないでください。

ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。

初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。

4

動作確認

Googleスプレッドシートで確認する

Googleスプレッドシートに明るさが追加されることを確認する

プログラムを書き込むと、光センサーで測定した明るさがGoogleスプレッドシートに繰り返し追加されます。明るさの値が追加されれば成功です。

Googleスプレッドシートに光センサーで測定した明るさの値が追加された画面

Googleスプレッドシートに、光センサーで測定した明るさの値が追加されるなら成功です。

動作中、シリアルモニターには測定した明るさと、Google Apps Scriptへの接続・送信状況が表示されます。

Arduino IDEの画面右上にあるアイコンをクリックすると、 画面下にシリアルモニターが表示されます。

Arduino IDEでシリアルモニターを表示する場所
5

コードの解説

光センサーの値をルクスへ換算し、Google Apps ScriptのWebアプリへ送信します。

12_Googlespreadsheet_LightSensor.ino
GitHubで開く
GitHubからコードを読み込んでいます...

Serial.begin(115200);シリアルモニターへ文字や測定値を表示するため、通信速度を115200bpsに設定します。

#include <WiFi.h>CherryIoTのWi-Fi機能を使うため、WiFiライブラリを読み込みます。ライブラリは、あらかじめ用意された機能をプログラムから使えるようにする仕組みです。

#include <WiFiClientSecure.h>Google Apps ScriptへHTTPSで安全に接続するための通信機能を読み込みます。HTTPSは通信内容を暗号化するWeb通信です。

const int litsnsrPin = 3;コネクタAの光センサーに対応するGPIO3を、定数litsnsrPinへ保存します。

void connectWiFi()Wi-Fiへの接続処理をまとめた関数です。同じ接続処理を必要な場所から呼び出せるようにします。

WiFi.begin(ssid, password);設定したSSIDとパスワードを使ってWi-Fi接続を開始します。SSIDはWi-Fiネットワークの名前です。

while (WiFi.status() != WL_CONNECTED)Wi-Fiへ接続できるまで状態を確認し続けます。whileは条件を満たしている間、同じ処理を繰り返す命令です。

pinMode(litsnsrPin, INPUT);光センサーから届く信号を読み取れるように、litsnsrPinをINPUT(入力)に設定します。

float litsnsr_ad = analogRead(litsnsrPin);光センサーのアナログ値を0~4095の範囲で読み取り、小数を扱えるfloat型の変数へ保存します。

float litsnsr_v = litsnsr_ad * 3.3 / 4096;読み取った値を0~3.3Vの電圧へ換算します。ESP32のアナログ入力が4096段階で、基準電圧が3.3Vのため、この計算を行います。

float lux = 10000 * litsnsr_v / (3.3 - litsnsr_v) / 1000;読み取った値をルクスへ換算します。

float sensor_data1= lux;計算した明るさを送信用のデータへ代入します。

connectWiFi();Googleへ送信する前にWi-Fiへ接続します。

String url = "https://script.google.com/macros/s/xxxxxxxxxxxxxx/exec";データを受け取るGoogle Apps ScriptのWebアプリURLを指定します。

url += "&1_cell=";送信先URLへスプレッドシートの項目名を追加します。

url += sensor_data1;URLの末尾へ明るさの値を追加します。

sslclient.setInsecure();このサンプルではHTTPS証明書の検証を省略します。

if (!sslclient.connect(server, 443)) {Google Apps Scriptのサーバーへ接続できるかを確認します。

sslclient.println("GET " + url);明るさを付けたURLをGETリクエストとして送信します。

Serial.println("Data transmission completed");リクエストの送信処理が完了したことを表示します。実際に記録された値はスプレッドシート側で確認します。

delay(1000);1秒待ちます。

WiFi.mode(WIFI_OFF);送信後にWi-Fiを停止します。