Общие сведения
В этом уроке мы рассмотрим работу с цифровым датчиком 18b20. Датчик передаёт данные по протоколу OneWire, те есть по одному проводу. То есть к датчику необходимо подключить питание (VCC, GND) и одну линию данных. Для корректной работы этой линии необходимо "подтянуть" её к положительному напряжению при помощи резистора с сопротивлением от 1 кОм. Для удобства работы и подключения мы воспользуемся Trema-модулем Pull Switch UP/DOWN.
Для этого урока нам понадобится:
Для работы данных примеров в Pi Pico необходимо загрузить прошивку MicroPython и установить Thonny IDE, о том как это сделать можно прочитать в этой статье /page/pi-pico-python-ide
Подключение
Подключим Trema-модуль Pull Switch UP/DOWN согласно таблице
| Вывод модуля | Вывод Pi Pico |
|---|---|
| Vcc | 3V3(OUT) |
| GND | GND |
| S | GP15 |
Установим переключатель на модуле в положение UP и подключим датчик

Получаем данные от датчика в оболочке
Вводите данные строчки в оболочке, одну за другой:
Импортируем библиотеку вывода
>>> from machine import Pin
Импортируем библиотеку датчика
>>> from ds18x20 import DS18X20
Импортируем библиотеку протокола
>>> from onewire import OneWire
Создаём объект датчика
>>> sensor = DS18X20(OneWire(Pin("GP15")))
Сканируем адреса на шине OneWire
>>> addresses = sensor.scan()
Получаем первый найденный адрес
>>> address = addresses[0]
Читаем температуру с датчика по адресу:
>>> sensor.read_temp(address)
В оболочку будет выведена температура в районе 70-90 градусов
85.0
Это температура в по шкале фаренгейта. Для конвертации температуры можно вызвать функцию convert_temp()
>>> sensor.convert_temp()
>>> sensor.read_temp()
26.5625
>>>
Выводим температуру через интервал
Скрипт периодически выводит показания датчика в оболочку. В данном скрипте используются все те же функции, что и выше.
from machine import Pin
from ds18x20 import DS18X20
from onewire import OneWire
from time import sleep_ms as delay
sensor = DS18X20(OneWire(Pin("GP17")))
sensor.convert_temp()
addresses = sensor.scan()
address = addresses[0]
print(address)
while True:
tem = sensor.read_temp(address)
print(tem)
delay(500) Комплект для повторения проекта
Что понадобится
Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.
3 позиции
Датчик температуры DS18B20 1 метр. (Герметичный)
18b20
Открыть в iArduino
Pull Switch UP/DOWN (Trema-модуль V2.0)
Позволяет подключать устройства, которые не предполагают прямого подключения к Arduino, а так же те устройства, которым при подключении необходимо прижимать линию к земле(GND), или подтягивать к питанию(VCC).
Открыть в iArduino
Raspberry Pi Pico IO Trema Shield
Плата расширения к контроллерам Raspberry Pi Pico для подключения Trema-модулей
Открыть в iArduino


