Python/MicroPythonセンサーロガー:センサーデータをGoogleスプレッドシートにシームレス保存
センサー値を直接Googleスプレッドシートに記録する堅牢なシステム。マイクロコントローラーと軽量サーバーをシンプルなHTTPリクエストで橋渡しし、 gspread ライブラリでデータを書き込みます。
開始前に、gspreadドキュメントのOAuth2セットアップ手順に従い、スクリプトに対象スプレッドシートへのアクセス権を付与してください。
ハードウェア接続
- D0 to RST:ディープスリープからのウェイクアップに必須
- + to 3.3V:Wemosの3.3Vピンに接続
- – to GND:WemosのGNDに接続
- Signal to A0:WemosのA0ピンに接続
問題が発生した場合はコメントでお知らせください。トラブルシューティングをお手伝いします。
回路図
コード
import machine
import urequests
import time
# RTCでディープスリープウェイクアップを処理
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
# センサー電圧用ADCピン
adc = machine.ADC(0)
######################
# センサーキャリブレーション
######################
# 基準値(逆数×1000)
# 乾燥空気 = 759 (0%) → 1.31752305665349143610013175231
# 水 = 382 (100%) → 2.61780104712041884816753926702
# 差 = 1.30027799046692741206740751471
# 1%相対湿度 = 0.0130027799046692741206740751471
hours = str(time.localtime()[3])
mins = str(time.localtime()[4])
secs = str(time.localtime()[5])
if int(secs) < 10:
secs = '0' + secs
if int(mins) < 10:
mins = '0' + mins
timestr = f"{hours}:{mins}:{secs}"
# ADC読み取り値を相対湿度(%)に変換
variable = (((1 / adc.read()) * 1000) / 0.0130027799046692741206740751471) - 101
variable = max(0, min(100, variable))
# ローカルエンドポイントにデータ送信
url = 'https://192.168.1.2:8000/solomon'
headers = {'content-type': 'application/json'}
data = f'{{"Value":"{variable}","Time":"{timestr}"}}'
resp = urequests.post(url, data=data, headers=headers)
print(resp.json())
# 25秒後に次の読み取りをスケジュールし、ディープスリープへ
rtc.alarm(rtc.ALARM0, 25000)
machine.deepsleep()
ソース:Python/MicroPython Sensor Logger for Google Sheets
製造プロセス
- 5ドルI2C温度センサーで作るRaspberry Pi温度ロガー
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry Piでライントラッキングセンサー – シンプルなKY-033ドア/ライン検出器
- GY-91モジュールでRaspberry Pi上に堅牢な温度・センサーAPIを構築
- Raspberry PiとBrickPiでThingSpeak温度モニターを構築
- Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
- Python/MicroPythonセンサーロガー:センサーデータをGoogleスプレッドシートにシームレス保存
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python round()関数を実例で徹底解説
- Python map()関数をマスター:構文、例、ベストプラクティス
- Python C拡張プログラミング:高速ネイティブモジュールの構築