- Необходимые материалы
- Введение в датчик температуры DS18B20
- Предварительные требования
- Принципиальная электрическая схема
- Установка библиотеки Adafruit LCD на Raspberry P
- Включение однопроводного интерфейса в Pi
- Выход / Работа
Raspberry Pi известен своей вычислительной мощностью и обширным применением в области Интернета вещей, домашней автоматизации и т. Д. Однако для того, чтобы любая электронная система могла взаимодействовать с реальным миром и получать информацию о нем, система должна использовать датчики. Для этого процесса используется множество типов датчиков, и требуемый датчик выбирается в зависимости от измеряемого параметра и его применения. В этом руководстве мы узнаем, как подключить датчик температуры DS18B20 к Raspberry Pi.
DS18B20 широко используется датчик температуры, в основном в тех местах, где суровые условия эксплуатации участвуют как химическая промышленность, шахтные установки и т.д. Эта статья расскажет о датчике и как это outstands другого датчика температуры и, наконец, интерфейсе с Raspberry Pi и посмотреть температуру значение на ЖК-дисплее 16x2.
Необходимые материалы
- Датчик температуры DS18B20
- Raspberry Pi
- ЖК-дисплей 16 * 2
- Горшок с обрезкой 10k
- Подтягивающий резистор 10 кОм
- Макетная плата
- Соединительные провода
Введение в датчик температуры DS18B20
DS18B20 - трехконтактный датчик температуры, доступный в корпусе TO-92 (транзисторный). Он очень прост в использовании и требует только одного внешнего компонента для начала работы. Также для связи с ним требуется только один вывод GPIO от MCU / MPU. Типичный датчик температуры DS18B20 с названием контакта показан ниже.
Этот датчик также доступен в водонепроницаемой версии, в которой датчик закрыт цилиндрической металлической трубкой. В этом уроке мы будем использовать обычный датчик транзисторного типа, показанный выше. DS18B20 представляет собой 1-проводной программируемый датчик температуры означает, что она требует только штифт данных для передачи информации в микроконтроллер или микропроцессор плат, таких как Raspberry Pi. Каждый датчик имеет уникальный 64-битный адрес, поэтому можно также подключить несколько датчиков к одному MCU / MPU, поскольку каждый датчик может быть адресован индивидуально на одной и той же шине данных. Технические характеристики датчика приведены ниже.
- Рабочее напряжение: 3-5 В
- Диапазон измерения: от -55 ° C до + 125 ° C
- Точность: ± 0,5 ° C
- Разрешение: от 9 до 12 бит
Теперь, когда мы достаточно знаем о датчике, давайте рассмотрим его взаимодействие с Raspberry Pi.
Предварительные требования
Предполагается, что на вашем Raspberry Pi уже установлена операционная система и он может подключаться к Интернету. Если нет, перед продолжением следуйте руководству «Начало работы с Raspberry Pi». Здесь мы используем Rasbian Jessie, установленный Raspberry Pi 3.
Также предполагается, что у вас есть доступ к вашему pi либо через окна терминала, либо через другое приложение, через которое вы можете писать и выполнять программы python и использовать окно терминала.
Принципиальная электрическая схема
Как мы уже говорили ранее в этом руководстве, мы подключим датчик DS18B20 к Pi и отобразим значение температуры на ЖК-экране 16 * 2. Таким образом, датчик и ЖК-дисплей должны быть подключены к Raspberry Pi, как показано ниже.
Следуйте принципиальной схеме и выполните подключение соответствующим образом. И ЖК-дисплей, и датчик DS18B20 работают с помощью + 5 В, которое обеспечивается контактом 5 В на Raspberry pi. ЖК сделан на работу в 4-битном режиме с Raspberry Pi, штифты GPIO 18,23,24 и 25 используются для линии передачи данных, а контакты GPIO 7 и 8 используются для линий управления. Потенциометр также используется для управления уровнем контрастности ЖК - дисплея. Линия данных DS18B20 подключена к контакту 4 GPIO. Также обратите внимание, что необходимо использовать резистор 10 кОм, чтобы подтянуть данные так высоко, как показано на принципиальной схеме.
Вы можете либо следовать приведенной выше принципиальной схеме и выполнить подключения, либо использовать таблицу контактов, чтобы указать номера контактов GPIO.
Я построил схему на макете, используя одножильные провода и провода «папа-мама» для соединения. Как вы можете видеть, датчику требуется только один провод для подключения и, следовательно, он занимает меньше места и контактов. Когда все подключения выполнены, мое оборудование выглядит так, как показано ниже. Теперь пора включить пи и начать программирование.
Установка библиотеки Adafruit LCD на Raspberry P
Значение температуры будет отображаться на ЖК-дисплее 16 * 2. Adafruit предоставляет нам библиотеку для простой работы с этим ЖК-дисплеем в 4-битном режиме, поэтому давайте добавим ее в наш Raspberry Pi, открыв окно терминала Pi и выполнив следующие шаги.
Шаг 1. Установите git на свой Raspberry Pi, используя следующую строку. Git позволяет клонировать любые файлы проекта на Github и использовать их на своем Raspberry pi. Наша библиотека находится на Github, поэтому нам нужно установить git, чтобы загрузить эту библиотеку в pi.
apt-get install git
Шаг 2: Следующая строка ссылается на страницу GitHub, где присутствует библиотека, просто выполните строку, чтобы клонировать файл проекта в домашний каталог Pi.
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Шаг 3: Используйте приведенную ниже команду, чтобы изменить строку каталога, чтобы попасть в файл проекта, который мы только что загрузили. Командная строка приведена ниже
компакт-диск Adafruit_Python_CharLCD
Шаг 4: Внутри каталога будет файл с именем setup.py , мы должны установить его, чтобы установить библиотеку. Используйте следующий код для установки библиотеки
sudo python setup.py установить
То есть библиотека должна была быть успешно установлена. Теперь аналогичным образом приступим к установке библиотеки DHT, которая также принадлежит Adafruit.
Включение однопроводного интерфейса в Pi
Поскольку датчик DS18B20 обменивается данными по методу One-Wire, мы должны включить однопроводную связь на Pi, выполнив следующие шаги.
Шаг 1: - Откройте командную строку и используйте команду ниже, чтобы открыть файл конфигурации.
sudo nano /boot/config.txt
Шаг 2: - Внутри файла конфигурации добавьте строку « dtoverlay = w1-gpio » ( обведена на изображении ниже) и сохраните файл, как показано ниже.
Шаг 3: - Используйте Ctrl + X, чтобы выйти из файла, и сохраните его, нажав «Y», а затем клавишу Enter. Наконец, перезапустите Pi с помощью команды
перезагрузка sudo
Шаг 4: - После перезагрузки снова откройте терминал и введите следующие команды.
sudo modprobe w1– gpio sudo modprobe w1-therm. cd / sys / bus / w1 / устройства ls
В окнах вашего терминала будет отображаться что-то вроде этого
Шаг 5: - В конце шага 4, когда вы вводите ls , ваше пи будет отображать уникальный номер, этот номер будет различным для каждого пользователя в зависимости от датчика, но всегда будет начинаться с 28-. В моем случае номер 28-03172337caff .
Шаг 6: - Теперь мы можем проверить, работает ли датчик, введя следующие команды
cd 28-XXXXXXXXXXXX.find ('t =') # найти "t =" в строке, если trimmed_data! = -1: temp_string = lines # обрезать строку только до значения температуры temp_c = float (temp_string) / 1000.0 # разделите значение 1000, чтобы получить фактическое значение return temp_c # вернуть значение для печати на ЖК-дисплее
Переменные строки используются для чтения строк внутри файла. Затем эти строки сравниваются, ищется буква «t =», и значение после этой буквы сохраняется в переменной temp_string . Наконец, чтобы получить значение температуры, мы используем переменную temp_c, в которой мы делим строковое значение на 1000. В конце возвращаем переменную temp_c как результат функции.
Внутри бесконечного во время цикла, мы имеем только для вызова определенной выше функции, чтобы получить значение температуры и ее отображения на ЖК - экране. Мы также очищаем ЖК-дисплей каждые 1 секунду, чтобы отобразить обновленное значение.
while 1: # Бесконечный цикл lcd.clear () # Очистить ЖК-экран lcd .message ('Temp =%.1f C'% get_temp ()) # Показать значение температуры time.sleep (1) # Подождать 1 секунду затем обновите значения
Выход / Работа
Как всегда, полный код Python дается в конце страницы, используйте этот код и скомпилируйте его на своем Raspberry Pi. Выполните подключение, как показано на принципиальной схеме, и перед запуском программы убедитесь, что вы выполнили вышеуказанные шаги, чтобы установить файлы заголовков ЖК-дисплея и включить однопроводную связь на пи. Как только это будет сделано, просто запустите программу, если все работает должным образом, вы сможете заметить вводный текст. Если нет, отрегулируйте потенциометр контрастности, пока что-нибудь не увидите. Окончательный результат будет выглядеть примерно так, как показано ниже.
Надеюсь, вы поняли проект и у вас не было проблем с его созданием. В противном случае укажите свою проблему в разделе комментариев или воспользуйтесь форумом для получения дополнительной технической помощи. Это просто интерфейсный проект, но как только это будет сделано, вы можете подумать о будущем, поработав над метеостанцией Raspberry Pi, уведомителем электронной почты о температуре и многим другим.
Полная работа проекта также показана на видео ниже, где вы можете увидеть, как значение температуры обновляется в реальном времени.