Подключение датчика температуры DS18B20 к Raspberry Pi Pico


В этой статье мы рассмотрим подключение датчика температуры DS18B20 к плате Raspberry Pi Pico с помощью MicroPython. Ранее мы считывали данные встроенного температурного датчика с Raspberry Pi Pico. Но в этом случае мы подключим к плате внешний датчик температуры, такой как DS18B20.

Подключение датчика температуры DS18B20 к Raspberry Pi Pico

DS18B20 — это 1-проводной программируемый датчик температуры от компании Maxim Integrated, которому требуется только одна линия данных для связи с центральным микропроцессором. Поскольку протокол связи цифровой, вы можете использовать любой цифровой контакт микроконтроллера RP2040.

Код micropython требует несколько библиотек DS18B20, таких как onewire и ds18x20. В первом примере мы просто прочитаем значение температуры с DS18B20 и Raspberry Pi Pico в оболочке Thonny IDE. Во втором примере мы будем использовать 0,96″ I2C OLED-дисплей для отображения показаний температуры.

Также ранее на нашем сайте мы рассматривали подключение датчика температуры DS18B20 к другим микроконтроллерам и платам:

Необходимые компоненты

  1. Плата Raspberry Pi Pico (купить на AliExpress).
  2. Maxim Integrated DS18B20 Programmable Resolution (цифровой датчик температуры DS18B20) (купить на AliExpress).
  3. Модуль OLED дисплея SSD1306 128×64 с диагональю 0.96 дюйма и интерфейсом I2C (купить на AliExpress).
  4. Резистор 4,7 кОм (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Водонепроницаемый цифровой датчик температуры DS18B20

Это предварительно подключенная и водонепроницаемая версия датчика DS18B20. Удобно, когда вам нужно измерить что-то на большом расстоянии или во влажных условиях. Датчик может измерять температуру в диапазоне от -55 до 125 °C (от -67 °F до +257 °F). Кабель покрыт оболочкой из ПВХ.

Поскольку он цифровой, нет ухудшения сигнала даже на больших расстояниях. Эти 1-проводные цифровые датчики температуры довольно точны, т. е. обеспечивают точность измерения температуры ±0,5°C в большей части диапазона. Он может выдавать до 12 бит точности от встроенного цифро-аналогового преобразователя. Они отлично работают с любым микроконтроллером, использующим один цифровой вывод.

Водонепроницаемый цифровой датчик температуры DS18B20

Единственный их недостаток в том, что они используют протокол Dallas 1-Wire, который довольно сложен и требует кучу кода для разбора коммуникации. Мы добавляем резистор 4,7 кОм, который требуется в качестве подтягивающего от линии DATA к линии VCC при использовании датчика.

Дополнительную информацию об этом датчике можно найти в техническом описании датчика DS18B20.

Схема подключения

Схема подключения датчика температуры DS18B20 к плате Raspberry Pi Pico представлена на следующем рисунке.

Схема подключения датчика температуры DS18B20 к плате Raspberry Pi Pico

Датчик питается от контакта 3,3 В Raspberry Pi Pico, а GND датчика подключен к GND платы. Аналогично цифровой контакт датчика подключен к GPIO22 Raspberry Pi Pico. Цифровой контакт подключен через резистор 4,7 кОм.

Собранная на макетной плате конструкция проекта

Исходный код программы

Я использовал thonny IDE, которая поддерживает Micropython на Raspberry Pi Pico. Вам нужно импортировать библиотеки для работы с датчиком DS18B20. Для этого требуются библиотеки OneWire и DS18X20. Загрузите библиотеки по следующим ссылкам.
Библиотека DS18B20 MicroPython
Библиотека OneWire MicroPython

Щелкните по файлу, находящемуся внутри загруженной папки, а затем скопируйте содержимое всего файла.

Нажмите кнопку New («Новый») в Thonny IDE, чтобы открыть пустой скрипт, и вставьте следующий код.

Мы использовали контакт GP22 платы Raspberry Pi Pico для подключения цифрового контакта датчика DS18B20. Сохраните указанный выше файл с расширением .py. Затем вы можете запустить код. После этого вы должны увидеть вывод в Thonny Shell.

Тестирование работы проекта в окне Thonny Shell

Вы должны выполнить функцию convert_temp(), чтобы инициировать считывание температуры, затем подождать не менее 750 мс перед считыванием значения. Вы используете функцию read_temp, чтобы вернуть значение, а затем мы делаем паузу на 5 секунд и запускаем это снова.

Отображение температуры на OLED дисплее

Теперь давайте напишем дополнительный код для отображения считанного значения температуры на OLED-экране. Схема подключения для этого варианта представлена ниже. Подключите выводы SDA и SCL OLED-дисплея к выводам PICO GP8 и GP9 соответственно. Подключите выводы VCC и GND OLED-дисплея к выводам 3,3 В и GND Pico. Вы можете использовать макетную плату для сборки всей схемы.

Схема подключения датчика DS18B20 и OLED дисплея к плате Raspberry Pi Pico

Для этого нам нужно сначала написать код драйвера для OLED дисплея, так как драйвер SSD1306 недоступен. Весь код разделен на 2 части:
1. ssd1306.py
2. Main.py

ssd1306.py

Откройте новую вкладку и скопируйте следующий код. Сохраните файл под именем SSD1306.py .

main.py

После загрузки SSD1306.py снова создайте новую вкладку и скопируйте следующий код. Сохраните этот код под именем main.py.

После запуска кода на OLED-дисплее начнет отображаться значение температуры.

Тестирование работы проекта с помощью OLED-дисплея

Вот таким вот образом можно считывать данные о температуре с датчика температуры DS18B20 для платы Raspberry Pi Pico с помощью кода на MicroPython.

(Проголосуй первым!)
Загрузка...
16 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *