Python/MicroPython логгер датчиков: бесшовное сохранение данных в Google Sheets
Надёжная система для записи показаний датчиков напрямую в Google Таблицу. Она использует простые HTTP-запросы для моста между микроконтроллером и лёгким сервером, а библиотеку gspread для записи данных.
Прежде чем начать, следуйте инструкциям по настройке OAuth2 в документации gspread, чтобы дать скрипту доступ к целевой таблице.
Аппаратные соединения
- D0 to RST: Необходимо для пробуждения платы из deep-sleep.
- + to 3.3 V на Wemos.
- – to GND на Wemos.
- Signal to A0 на Wemos.
Если возникнут проблемы, оставьте комментарий — помогу разобраться.
Схемы
Код
import machine
import urequests
import time
# RTC обрабатывает пробуждения из deep-sleep
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 с и вход в deep-sleep
rtc.alarm(rtc.ALARM0, 25000)
machine.deepsleep()
Источник: Python/MicroPython Sensor Logger for Google Sheets
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
- Построение надёжного Temperature & Sensor API на Raspberry Pi с модулем GY‑91
- Создание монитора температуры ThingSpeak с Raspberry Pi и BrickPi
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики
- Расширение Python на C: создание быстрых нативных модулей