MicroPython Skill Builders — #5 Простые датчики
Мы продолжаем серию MicroPython Skill Builders, цель которой — улучшить навыки программирования на MicroPython, знакомя вас с новыми компонентами и приёмами написания кода на базе Raspberry Pi Pico!
Здесь мы демонстрируем использование недорогих и простых в применении датчиков для проектов на MicroPython: сначала рассмотрим серию датчиков Waveshare, а затем — классический температурный датчик TMP36!
Пропустили предыдущие выпуски? Загляните в раздел руководств, чтобы наверстать упущенное.
Что вам потребуется
Предполагается, что у вас уже установлен Thonny на компьютере и настроен Raspberry Pi Pico с самой свежей прошивкой MicroPython (UF2). Если нет — обратитесь к руководству по началу работы с Raspberry Pi Pico, где всё описано подробно.
Также предполагается, что вы прочитали и/или выполнили предыдущие руководства серии (ссылка выше, если нет).
Вам потребуются:
Raspberry Pi Pico с контактными выводами (пинами)
Макетная плата полного размера
Кабель Micro-USB (для питания и программирования Pico)
Набор соединительных проводов «папа-мама» (можно взять смешанный набор)
Датчики — в этой статье рассматриваются все перечисленные ниже, так что выбирайте те, которые хотите попробовать. Многие из них также входят в набор датчиков Waveshare:
Датчик влажности почвы
Датчик уровня жидкости
Датчик наклона
Датчик звука
Инфракрасный датчик отражения
Датчик пламени
Датчик ультрафиолетового (УФ) излучения
Датчик Холла
Датчик газа
Лазерный датчик
Опционально:
Аналоговый датчик температуры TMP36
Датчик температуры DS18B20
Использование датчика температуры TMP36 с Raspberry Pi Pico
TMP36 — недорогой, компактный и простой в использовании датчик температуры, идеально подходящий для проектов мейкеров.
Он выдаёт напряжение, пропорциональное своей температуре. Мы используем пин АЦП на Pico для измерения этого напряжения и вычисления температуры по следующей формуле:
Темп °C = 100 * (показание в В) − 50
Подключение датчика TMP36 к Raspberry Pi Pico
Подключение к Pico простое. Глядя на плоскую сторону датчика с ножками, направленными вниз, подключаем следующим образом:
Левая ножка — 3.3V
Средняя ножка — сигнал — ADC0 на GP26
Правая ножка — GND
Альтернативно, используя схему из документации к компоненту:
Программирование TMP36 с Raspberry Pi Pico
Ниже приведена небольшая программа для начала работы с TMP36 и Raspberry Pi Pico. Программа полностью прокомментирована, чтобы объяснить происходящее.
Нередко приходится корректировать значение, полученное от датчика температуры, с помощью смещения (offset). Согласно паспортным данным, этот датчик точен в пределах ± 3°C. Другие, более дорогие датчики температуры могут быть точнее. Это также зависит от точности АЦП при измерении напряжения.
Обратите внимание на разницу в расположении °C в последних двух строках. Запятая в print() всегда оставляет пробел. В последней строке мы преобразовали число в строку и соединили (конкатенировали) с ней другую строку с помощью «+». Теперь при выводе пробела нет:
# TMP36
# While looking at flat side of sensor, legs pointing down
# Left leg - 3.3 Volts
# Centre leg - signal - ADC0 on GP26
# Right leg - GND
from machine import ADC, Pin
import utime
adc = ADC(0) # Set up ADC0 pin
analog = adc.read_u16() # Read the ADC
volts = analog/ 65535 * 3.3 # Calculate the voltage
temp = 100 *volts - 50 # Calculate temperature in °C
temp2 = round(temp) # Round to nearest whole number
print("RAW:",analog)
print("Volts:",volts)
print("Temperature:", temp, "°C")
print("\nRounded temperature: ",temp2, "°C")
offset = 2.9 # Apply offset (Individual to system)
temp3 =round(temp + offset) # - you may need more - and round
print("\nAdjusted temperature:", str(temp3) + "°C")
При запуске программы вывод должен выглядеть примерно так:
>>> %Run -c $EDITOR_CONTENT
RAW: 12563
Volts: 0.632607
Temperature: 13.2607 °C
Что попробовать дальше
Выводите температуру каждые 10 минут. Наблюдайте, как она поднимается утром и падает вечером.
Включайте и выключайте красные, жёлтые, зелёные и синие светодиоды для индикации температуры.
Если у вас есть датчик температуры, совместимый с DS18B20, можно сравнить показания двух датчиков, написав программу, которая считывает оба датчика каждые несколько минут.
Что дальше?
В следующем руководстве мы рассмотрим двойные датчики — температуры и влажности — DHT11 и DHT22, которые также очень просто подключаются к Raspberry Pi Pico.
Первый из них входит в набор датчиков Waveshare вместе с датчиком поворота (энкодером), который мы рассмотрим в одном из следующих уроков.