Когда хочешь, чтобы она не потерялась: термометр из RPI2040
Это я о плате с микросхемой и USB-разъёмом, которую Вы когда-то давно купили за несколько сотен рублей, что лежит у Вас без дела. Наверное, Вы её выбросите или подарите, если так будет продолжаться?
На примере Raspberry Pi Pico расскажу, как быстро сделать её полезной и превратить в обычный термометр. Для нашего рецепта малинового варенья понадобятся:
Найденная в хламовнике плата Raspberry PI Pico или совместимая
Thonny. Здесь рассказано, как её установить и настроить для работы с Pico.
У меня получилось ну очень быстро.Немного терпения и следующий код, который показан ниже (его надо открыть в Thonny):
import time
import machine
import math
from machine import Pin
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)
led = Pin(25, Pin.OUT)
i = 0
w = 1
while True:
led.high()
time.sleep(w)
led.low()
time.sleep(w)
i = i + 1
if i % 2 != 3:
continue
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
w = temperature - 20
w = 0.11 + 0.89 * math.exp(- w * w * 0.1)
w = 0.01 * math.floor(100.0 * w)
i = 0
Изюминка кода в том, что светодиод начинает мигать тем чаще, чем сильнее температура встроенного датчика отличается от нормальной комнатной (+20 по Цельсию). Как видно из кода, задержка считается по формуле:
С какой частотой будет мигать светодиод, видно на нижеследующем графике. На горизонтальной оси отложена вычисленная по показаниям датчика температура, на вертикальной частота мигания светодиода (величина, обратная задержке).
Частота мигания светодиода на плате в зависимости от температуры
Когда Вы запустите код на выполнение, то в случае, если Вы всё правильно сделали на предыдущих шагах, Вы увидите в консоли Thonny вывод чисел. Можно даже отобразить изменение показаний на встроенном графике (пункт меню View / Plotter)!:
Thonny показывает график изменения температуры датчика платы Raspberry Pi Pico,
расположенной недалеко от вентилятора в ноутбуке
Без запуска Thonny затем можно настроить Putty на подключение по COM-порту (в Windows он появится в диспетчере устройств при подключении платы через USB, где можно узнать его номер) и удостовериться в приёме данных. Получая значения температуры через COM-порт в клиентском приложении, можно реагировать на её изменение и, допустим, включать или отключать обогрев чего-нибудь (или кого-нибудь) важного. Например, любимой жены :)
P.S. Если Вам понравились краткость и ясность изложения, то буду рад публиковать время от времени что-нибудь подобное.