Подключение датчиков на Raspberry Pi 3: ds18b20 для метеостанции
Одна из ключевых возможностей Raspberry Pi любой версии – это способность взаимодействовать с различными датчиками. Это обусловлено тем, что у данного одноплатника имеется собственный GPIO.
- Подключение датчика ds18b20 к RPi3
Одна из ключевых возможностей Raspberry Pi любой версии – это способность взаимодействовать с различными датчиками. Это обусловлено тем, что у данного одноплатника имеется собственный GPIO (хотя при желании можно подключить и дополнительный).
Рассматривать подключение датчиков к Raspberry Pi 3 довольно тяжело, так как соответствующих модулей существуют десятки. Также для взаимодействия с ними требуется код. Найти его, в свою очередь, можно на GitHub, GitLab и в прочих хранилищах. А при желании его можно написать самостоятельно, изучив официальную документацию и располагая базовыми знаниями Python.
Ниже будет рассмотрен процесс подключения датчика на конкретном примере. Наиболее часто из Raspberry Pi 3 делают метеостанции. Поэтому для рассмотрения можно взять датчик ds18b20, который фиксирует температуру.
Подключение датчика ds18b20 к RPi3
Сразу следует отметить, что ds18b20 подключается к Raspberry Pi 3 точно так же, как и к другим моделям «Малины». Поэтому ниженаписанное можно использовать в том числе для настройки датчика и на других версиях платформы.
Первое, что потребуется – это присоединить датчик температуры к GPIO Raspberry Pi 3. Его нужно установить так:
- напряжение – 3,3 Вольта;
- заземление;
- порт GPIO4.
После того, как физическое подключение датчика температуры к Raspberry Pi 3 было выполнено, можно поставить необходимые модули ядра. Их всего 2. Из-под sudo (для этого можно указать в консоли команду sudo -i и ввести пароль) требуется выполнить пару команд: modprobe w1-grio и modprobe w1-therm.
Первый модуль нужен, чтобы на порту GPIO4 активировался протокол 1-wire. Второй же необходим, чтобы система могла непосредственно считывать температурные показатели с соответствующей шины.
Здесь есть очень важный момент. После перезагрузки модули снова будут неактивны, поэтому их придется опять загружать. Но исправить это очень легко. Нужно всего лишь вписать их названия в файл /etc/modules. Для этого из-под sudo следует набрать команду nano /etc/modules и добавить в конец файла w1-gpio и w1-therm (каждый с новой строки), а затем сохранить изменения.
Все, теперь можно проверять работоспособность датчика и, если все нормально, писать код для работы с ним или использовать готовое решение.
Как проверить работоспособность датчика ds18b20 на RPi3?
На Raspberry Pi 3 датчики пишут данные в файлы. Конкретно ds18b20 записывает их каталог со своим серийным номером, который, в свою очередь, располагается в директории /sys/bus/w1/devices. Он появляется после подключения, но может не сразу, а спустя несколько секунд.
Название соответствующего каталога примерно такое: 00-000000000a0b. Поэтому после подключения зайдите и проверьте, есть ли там что-то похожее. Следует отметить, что если подключены несколько датчиков, то придется узнавать серийный номер каждого из них опытным путем. Это возможно сделать, например, прогревом и снятием показателей или поочередным подключением.
Но предположим, что датчик всего 1. Чтобы проверить его работоспособность нужно в консоли вписать следующую команду: cat СЕРИЙНЫЙ_НОМЕР/w1_slave. После нажатия на Enter выведется сообщение.
В первой строке будет присутствовать контрольная сумма в шестнадцатеричной системе счисления и CRC. Если значение crc равно последнему числу, то выводится YES, а если нет – NO. В первом случае датчик сообщает, что он правильно определил температуру, а во втором – нет.
Вторая строка – это как раз данные температуры. То, что указывается в шестнадцатеричной системе полностью соответствует значению выше. То, что левее – это его перевод в десятичную форму. Интересно то, что значение t (температура) указывается в 1000 раз больше, чем есть на самом деле. Поэтому если после знака «=» указывается, например, 26398, это означает 26,3 градуса Цельсия. Данный факт следует учитывать при написании кода.
Как возможно убедиться, заставить работать датчик температуры на RPi3 очень просто. Примерно так же выполняется подключение к Raspberry Pi 3 и dht11, dht22, ds3231 и многих прочих.
Raspberry Pi — DS18B20 — Avislab
Подключение цифрового датчика температуры DS18B20 к Raspberry Pi выполняется по следующей схеме:
DS18B20 — это цифровой датчик температуры, который работает по однопроводному интерфейсу 1-Wire. Он измеряет температуру в пределах -10 .. + 85 градусов по шкале Цельсия. Как видно из схемы для его использования нам потребуется сам датчик DS18B20 и резистор 4,7 кОм. Вы можете подключить несколько датчиков как указано на следующей схеме:
Если использовать провода, длиннее трех метров, могут возникнуть проблемы со считыванием. В этом случае рекомендуется использовать экранированные провода.
После подключения датчика выполняем следующие команды:
sudo modprobe w1-gpio && sudo modprobe w1_therm
ls -l /sys/bus/w1/devices/
Должны увидеть что-то похожее на следующее:
total 0 total 0 lrwxrwxrwx 1 root root 0 Nov 29 10:49 28-000000d7970b -> ../../../devices/w1_bus_master1/28-000000d7970b lrwxrwxrwx 1 root root 0 Nov 29 10:49 w1_bus_master1 -> ../../../devices/w1_bus_master1
Если подобного результата нет, а датчик подключен правильно, редактируем файл /boot/config.txt:
sudo nano /boot/config.txt
добавляем строку
dtoverlay=w1-gpio
сохраняем файл и перезагружаем Raspberry командой reboot.
Каждый датчик имеет уникальный номер. ]*\).*/\1/p` | sed `s/t=//` | awk `{x=$1}END{print(x/1000)}`
Python:
tfile=open("/sys/bus/w1/devices/28-000000d7970b/w1_slave")
ttext=tfile.read()
tfile.close()
temp=ttext.split("")[1].split(" ")[9]
temperature=float(temp[2:])/1000
print temperature
Успехов.
Смотри также:
Регистратор температуры и влажности на Raspberry Pi с mySQL
Создаем регистратор температуры и влажности на основе Raspberry Pi, используя mySQL и Android-приложение для отслеживания показаний.
Цели проекта
- Считать влажность и температуру с двух разных датчиков.
- Добавить влажность и температуру в базу данных MySQL удаленного веб-сервера.
- Подключиться к веб-серверу с помощью приложения для Android, чтобы узнать температуру.
Требуемое оборудование
- Raspberry Pi Model A +,
- Raspberry Pi 3 Model B,
- Модем для мобильного интернета или другой способ подключения Raspberry Pi, который мы используем в качестве датчика и веб-сервера, к Интернету.
- DHT11,
- DS18B20,
- Мобильный телефон Samsung (или планшет под управлением Android),
- Перфорированная плата, розетки и резисторы
Требуемое программное обеспечение
- NOOBS, LAMPS, Python, phpMyAdmin
- DHT библиотека от Adafruit
- Android Studio с Kotlin
Скрипты Python написаны в WINGS 7.0, а файлы PHP написаны в Sublime.
Регистратор влажности и температуры мы создадим с использованием DHT11 и DS18B20. DHT11 не измеряет отрицательные градусы, поэтому также используется DS18B20, который заботится об отрицательных значениях.
Вы можете использовать DHT22, который аналогичен DHT11, и измеряет до -40⁰C. Также нужно создать приложение для Android, чтобы проверять влажность и температуру независимо от того, где вы находитесь.
Настройка сервера
На стороне сервера мы используем Raspberry Pi 3 Model B. На нем установлены NOOBS, а также я установил LAMP (Linux, Apache, MySql и PHP). В Интернете есть множество руководств по установке LAMP на Raspberry Pi, поэтому я не буду вдаваться в подробности.
Я использовал phpMyAdmin для создания базы данных, и в этой базе данных я создал следующую таблицу:
Таблица MySql для проекта
Я назвал базу данных db_Kajsa и таблицу tbl_tempera. Датчик будет вставлять данные в эту таблицу.
id | Целое число, первичный ключ, автоинкремент |
timestamp | Текст, точное время |
temperature | Типы с плавающей точкой, в цельсиях |
humidity | Типы с плавающей точкой, в процентах |
sensor | Текст, имя датчика |
ip | Текст, внешний IP-адрес датчика |
active | Целое число, это либо ноль, либо единица.* |
* — при работе с базами данных рекомендуется, чтобы вместо удаления сообщения вы просто скрывали его или делали его неактивным.
Чтобы добавить записи в таблицу, я создал php-файл, который находится в корневой папке сервера Apache. У меня есть три таких датчика в разных местах.
Файл, который добавляет записи в базу данных, называется add_temp.php. Данные передаются в качестве параметров в этот файл. Сценарий Python на датчике выполняет эту задачу:
http://my.domain.com/temperature/add_temp.php?temp=4.562&humi=95.0&time=2020-01-18-09:08:01&sensor=my_sensor&ip=xxx.xxx.xxx.xxx
Чтобы передать параметры в файл PHP, вы добавляете знак вопроса после расширения файла. Затем вы разделяете параметры с помощью амперсанда. Давайте разберем параметры:
- temp=4.564: температура в цельсиях
- humi=95.0: влажность в процентах
- time=2020-01-18-09:08:01: отметка времени окончания чтения
- sensor=my_sensor: имя датчика — фактически имя хоста Raspberry Pi
- ip=xxx.
xxx.xxx.xxx: внешний IP-адрес датчика
Эти параметры затем будут вставлены в таблицу tbl_teuration в базе данных.
Поскольку у меня три датчика, мне нужен способ разделить разные датчики. Я делаю это с именем датчика. Сначала параметры извлекаются и присваиваются в качестве значений переменным. Извлечение делается так:
# Получить данные из переменных, которые отправляются с файлом $temperature = $_GET["temp"]; $humidity = $_GET["humi"]; $time = $_GET["time"]; $sensor = $_GET["sensor"]; $ip = $_GET["ip"]; $active = 1;
Затем, основываясь на значении в переменной $sensor, я выполняю выбор переключателя:
# Операторы переключатели используют переменную $sensor из аргумента files, # чтобы определить, какую базу данных использовать и какой датчик «общается» с сервером switch ($sensor) { case 'Kajsa': $dbname = "db_Kajsa"; # Датчик на лодке break; case 'fortuna': $dbname = "db_Fortuna"; # Квартира друга break; case 'home': $dbname = "db_Home"; # Мой дом break; default: # Здесь ничего нет break; }
Скрипт Python вставляет данные следующим образом:
$sql = "INSERT INTO tbl_temperature (temperature, humidity, timestamp, sensor, ip, active) VALUES ('$temperature', '$humidity', '$time', '$sensor', '$ip', '$active')";
Весь исходный код прилагается ниже, и достаточно хорошо прокомментирован.
Настройка датчиков
Аппаратные средства и датчики монтируются на перфорированной плате по схеме:
Мы не используем все GPIO на Pi:
Войдите в Raspberry Pi, которую вы будете использовать в качестве датчика, и введите следующие команды:
sudo apt-get update sudo apt-get install python3-pip sudo python3 -m pip install --upgrade pip setuptools wheel
Это установит последнюю версию pip3 и Python.
Raspberry Pi, который работает как датчик, работает под управлением NOOBS и имеет последнюю версию Python. Чтобы DHT11 работал с Raspberry Pi, вам нужно установить программное обеспечение от AdaFruit. Это легко сделать с помощью этой команды:
sudo pip3 install Adafruit_DHT
Программа завершается после каждого запуска, поэтому я сделал запись в файле crontab. Это заставляет программу запускаться каждые две минуты.
*/2 * * * * python3 /home/pi/ds18b20_dht_mysql_v01.py >> /home/pi/ds18b20_dht_mysql_v01_LOG.txt 2>&1
Все сообщения записываются в лог-файл. Это значительно упрощает поиск неисправностей.
Настройка Android-приложения
Во-первых, убедитесь, что у вас установлена последняя версия Android Studio вместе с Kotlin. Это моя версия:
Приложение, которое мы собираемся сделать, действительно простое. Мы используем компонент webview, чтобы показать файл с веб-сервера. Это будет выглядеть так:
Приложению требуется подключение к интернету и правильные разрешения. Установите разрешения в файле AndroidManifest.xml. Наиболее важным разрешением является:
<uses-permission android:name="android.permission.INTERNET"/>
Я начал с размещения элементов управления. Это две кнопки: editText и webView. Элементы управления названы так:
- btnShow
- btnExit
- ediText
- WebView
Полный исходный код, который хорошо прокомментирован, представлен ниже.
Исходный код
Полный исходный код и файлы для нашего проекта можно скачать по ссылке ниже:
Файлы на сервере:
- add_temp.php
- apk_top.php
- apk_handler_app.php
- apk_end.php
- dbconfig.php
Файлы сенсора:
Исходные файлы Android Studio Kotlin:
- activity_main.xml
- AndroidManifest.xml
- MainActivity.kt
Финальные фото устройства
Это программное обеспечение не очень хорошо справляется с ошибками. Хорошо бы добавить некоторые проверки. Что будет если один из датчиков перестанет работать?
У нас должна быть какая-то функция if для проверки данных пять раз. Если мы не можем получить какие-либо действительные данные, датчик должен отправить электронное письмо владельцу. Мы также можем составить еженедельную сводку с некоторыми графиками, которые визуально показывают нам температуру и влажность, более удобным для пользователя способом. Но это бы добавим в следующем уроке.
За урок мы благодарим Йенса Кристофферсена с сайта maker.pro.
Чтение PT1000 с помощью Raspberry PI3 Windows 10 iot
Я планирую создать простое приложение для чтения 4 датчиков температуры PT1000.
В настоящее время у меня есть чип pcf8574a с 4 аналоговыми входами, но как я могу прочитать значения в приложении UWP?
Может ли кто-нибудь указать мне правильное направление?
Мне нужно купить еще один чип или?
uwp
raspberry-pi3
temperature
windows-iot-core-10
Поделиться
Источник
Jesper
19 сентября 2018 в 18:59
2 ответа
- Отображение графики с помощью raspberry pi и windows 10 iot
может ли кто — нибудь подсказать мне, как я могу отображать линейные или Столбчатые диаграммы с помощью Visual Studio (Windows 10 iot-Raspberry PI) либо в C#, либо в Visual Basic, либо через XAML. Данные для графика (линии) должны зависеть от входных данных из массива. Спасибо.
- Windows 10 IoT на Raspberry Pi возможностях rs485?
Поскольку Windows 10 IoT на Raspberry Pi еще не поддерживает UART (pin 8,10), какие-либо советы или идеи для доступа к rs485?
1
Как правило, микросхема PCF8574A используется для расширения ввода-вывода (I/O) для двухлинейной двунаправленной шины (I2C). Датчик температуры PT1000 имеет один интерфейс I2C, а Raspberry Pi3 поддерживает интерфейс I2C.
Вы можете подключить 4 датчика к Raspberry Pi3 через макетную плату, Raspberry Pi3 выглядит как ведущий, а четыре датчика-как ведомый. Я думаю, вы должны понять, как работает шина I2C.
Поделиться
Michael Xu — MSFT
20 сентября 2018 в 07:33
Поделиться
Jesper
16 октября 2018 в 05:30
Похожие вопросы:
Работа с Raspberry Pi 3 + Windows 10 IoT сердечник + DHT22
Интересно, есть ли какие-нибудь образцы проводки и кода для Raspberry Pi 3 + Windows 10 IoT ядро + DHT22 ? Спасибо!
win10 IOT на raspberry pi3 или raspberry pi2
У меня есть raspberry pi3, но у меня возникли огромные проблемы с попыткой установить на него win10 IOT. Когда я загружаю ядро и пытаюсь boot его, я получаю только экран rainbow. При установке noobs…
Может ли raspberry Pi с windows 10 IOT запускать программы Visual Basic?
Может ли raspberry pi с Windows 10 IOT запускать обычные windows приложения, созданные в visual studio?
Отображение графики с помощью raspberry pi и windows 10 iot
может ли кто — нибудь подсказать мне, как я могу отображать линейные или Столбчатые диаграммы с помощью Visual Studio (Windows 10 iot-Raspberry PI) либо в C#, либо в Visual Basic, либо через XAML….
Windows 10 IoT на Raspberry Pi возможностях rs485?
Поскольку Windows 10 IoT на Raspberry Pi еще не поддерживает UART (pin 8,10), какие-либо советы или идеи для доступа к rs485?
Windows IoT Bluetooth ключ Orico BTA-403 (PI3)
Я пытаюсь использовать Bluetooth-ключ на PI3 с Windows IoT. В списках совместимости оборудования от Microsoft рекомендуется использовать Orico BTA-403. Но ключ не работает. Я установил ключ на…
Использование термопары с Raspberry Pi работающим Windows IoT
Я планирую разработать систему контроля температуры при минусовых температурах. Я провел небольшое исследование и решил, что лучший способ продвижения вперед-использовать Raspberry Pi 3 с…
Raspberry pi 3 с windows 10 IOT основной операционной системой поддерживает ли winforms?
Я работаю в raspberry pi 3 с windows 10 IOT основной операционной системой. Используя visual studio 2015, я разрабатываю универсальные приложения windows, и я могу запустить UWP в raspberry pi 3 с…
Работа с PiCAN + raspberry pi 3 работающим ядром windows IoT
Я хочу соединить PiCAN с моим raspberry pi3, работающим на ядре windows IoT. Я думаю, что мне нужен универсальный драйвер для mcp2515 для работы с windows в Pi. Я уже пробовал использовать…
Ив , Raspberry pi, Windows IOT
Я хочу загрузить эскиз Arduino через Raspberry pi с помощью платформы windows 10 IOT (универсальное приложение Visual studio), есть ли у кого-нибудь идеи, как это сделать? Эскиз из cloud > > > >…
DS18B20 Датчик температуры с Python (Raspberry Pi)
Вчера на Liverpool Makefest, который, кстати, был отличным, я поговорил с молодым человеком, который хотел использовать Raspberry Pi для управления своей бензиновой радиоуправляемой машиной.
Его первая идея для проекта заключалась в мониторинге температуры двигателя, поэтому он купил датчик DS18B20 в ABX Labs (он же Electronics Sweetie Shop), но не знал, как использовать датчик, поэтому этот пост был вызван этим разговором. .
Что вам понадобится?
- Raspberry Pi (любая модель)
- Датчик температуры DS18B20
- А 4.Резистор 7 кОм (Цветовой код: желтый, фиолетовый, красный, золотой)
- A Макет
- 3 соединительных кабеля «мама — папа».
- 1 перемычка между мужчинами и женщинами (необязательно, см. Комментарий в разделе «Приступая к работе» ниже)
- Подключение к Интернету для вашего Raspberry Pi
Начало работы
Выключите Raspberry Pi и соберите схему в соответствии с этой схемой.
DS18B20 помещается в макетную плату плоской стороной к вам.
- Черная перемычка идет от GND, который является третьим контактом в правом столбце, к первому контакту DS18B20.
- Желтый соединительный кабель идет от четвертого контакта вниз в левой колонке и подключается к среднему контакту DS18B20.
- Красный соединительный кабель идет от верхнего левого контакта Raspberry Pi к дальнему правому контакту DS18B20.
Резистор подключает ПРАВЫЙ вывод к СРЕДНЕМУ выводу. Это называется подтягивающим резистором и используется для обеспечения того, чтобы средний вывод всегда был включен.На схеме мне пришлось использовать запасной красный провод, чтобы показать это соединение. Но на самом деле лучше всего использовать резистор для подключения, как показано на этой фотографии.
Теперь подключите клавиатуру, мышь, HDMI и питание к Raspberry Pi и загрузитесь на рабочий стол.
Настройка Raspberry Pi
Теперь нам нужно сделать два шага, чтобы использовать наш DS18B20.
Установите библиотеку Python
Во-первых, нам нужно установить библиотеку Python, предварительно написанный код, который включает код Python, который мы позже напишем для взаимодействия с датчиком.Библиотека Python называется w1thermsensor, и для ее установки нам нужно использовать Терминал. Вы можете найти значок терминала в верхнем левом углу экрана. Похоже …
Когда терминал откроется, введите следующее, чтобы установить библиотеку, просто нажмите ENTER для запуска.
sudo pip3 установить w1thermsensor
Вот и все, теперь можно закрыть окно Терминала.
Включить интерфейс
DS18B20 использует 1-проводный последовательный интерфейс, это средний контакт датчика, который подключен к Raspberry Pi через желтый провод на схеме.Нам нужно сообщить нашему Raspberry Pi, что мы используем этот контакт, и для этого мы используем инструмент настройки Raspberry Pi, который находится в меню настроек.
Когда он откроется, щелкните вкладку «Интерфейсы», а затем нажмите «Включить» для интерфейса 1-Wire.
Теперь нажмите ОК, и вам будет предложено перезагрузиться, так что продолжайте и сделайте это, и позвольте Raspberry Pi перезагрузиться на рабочий стол.
Написание кода Python
Наш проект будет собирать температуру с датчика DS18B20 каждую секунду и печатать ее на экране.Код будет работать вечно.
Для написания кода мы воспользуемся редактором Python 3 Editor, который находится в меню Programming.
Когда приложение откроется, щелкните Файл >> Новый, чтобы создать новый пустой документ. В этом новом окне щелкните Файл >> Сохранить и назовите проект temperature-sensor.py
Не забывайте почаще сохранять свою работу!
Импорт библиотек
Первым шагом в любом проекте Python, который использует библиотеки, является импорт библиотек, которые мы хотим использовать.В этом случае мы импортируем время, чтобы контролировать, как часто собираются данные датчика, и импортируем w1thermsensor, чтобы наш проект мог взаимодействовать с датчиком.
Итак, давайте импортируем библиотеки.
время импорта
из w1thermsensor импорт W1ThermSensor
Датчик
Наша следующая строка — создать объект для хранения подключения датчика. Поэтому вместо того, чтобы набирать W1ThermSensor ()
каждый раз, когда мы хотим использовать датчик, мы сохраняем соединение в объекте под названием sensor
.
датчик = W1ThermSensor ()
Работа в цикле
Мы хотим получать данные датчика температуры каждую секунду и работать вечно. Итак, давайте воспользуемся циклом while True, чтобы навсегда запустить код внутри него.
пока True:
Теперь следующие строки кода имеют отступ, так Python показывает, что этот код принадлежит только что созданному нами циклу.
Первое, что нужно сделать в нашем цикле, — это получить текущую температуру от датчика DS18B20, а затем сохранить ее в переменной, называемой температурой.Переменные — это ящики / контейнеры, в которых мы можем хранить любые данные.
температура = sensor.get_temperature ()
Теперь, когда у нас есть данные, давайте распечатаем их на экране с помощью функции print ()
. Но давайте использовать данные в форме предложения, которое сообщит нам, какая температура находится в градусах Цельсия. Для этого мы используем небольшой трюк Python, называемый форматированием строки, где мы хотим, чтобы данные о температуре были напечатаны в предложении, мы используем% s, который форматирует данные о температуре из числа с плавающей запятой (число с десятичным знаком) в строка (текст, символы, которые можно распечатать, но не использовать в математических уравнениях)
print («Температура% s по Цельсию»% temperature)
Наша последняя строка кода Python сообщит Raspberry Pi подождать 1 секунду между измерениями температуры.
время сна (1)
Это весь код, поэтому убедитесь, что вы сохранили свою работу.
Полный листинг кода
Прежде чем двигаться дальше, убедитесь, что ваш код совпадает с приведенным ниже кодом.
время импорта
из w1thermsensor импорт W1ThermSensor
датчик = W1ThermSensor ()
в то время как True:
температура = sensor.get_temperature ()
print ("Температура% s по Цельсию"% temperature)
время сна (1)
Запустите код!
Чтобы запустить код, нажмите Run >> Run Module, и вы увидите всплывающее окно Python Shell и начнете отображать данные о температуре!
Поздравляю, вы завершили проект!
Raspberry Pi DS18B20 Датчик температуры и текстовый файл
(Последнее обновление: 29 июня 2020 г.)
Описание:
Датчик температуры Raspberry Pi DS18B20
— в этом руководстве вы узнаете, как использовать водонепроницаемый однопроводной цифровой датчик температуры Ds18b20 с raspberry pi 3 b + и сохранить температуру в градусах Цельсия и Фаренгейта в текстовом файле вместе с информацией о дате и времени для дальнейшего использования. анализ.
Несколько месяцев назад я использовал тот же датчик температуры с Arduino Uno и отображал температуру на ЖК-дисплее 16 × 2.
До сих пор я рассматривал различные датчики температуры, такие как
Dht11, который может контролировать температуру и влажность
Bmp180, который может контролировать температуру, давление и высоту.
Термопара типа
K, способная измерять температуру до 1000 градусов по Цельсию.
В этом уроке мы рассмотрим
- DS18B20 водонепроницаемый цифровой датчик температуры введение
- Интерфейс DS18b20 с Raspberry Pi
- Программирование и, наконец,
- Тестирование
Приступим !!!
Компоненты и инструменты, используемые в этом проекте, можно приобрести на Amazon, ссылки для покупки компонентов приведены ниже:
О водонепроницаемом датчике температуры DS18B20:
Однопроводные датчики температуры, такие как DS18B20, представляют собой устройства, которые могут измерять температуру с минимальным количеством оборудования и проводки. Эти датчики используют цифровой протокол для отправки точных показаний температуры непосредственно на плату разработки без необходимости использования аналого-цифрового преобразователя или другого дополнительного оборудования. Вы можете приобрести однопроводные датчики в различных форм-факторах, например, водонепроницаемые и высокотемпературные датчики — они идеально подходят для измерения температуры во многих различных проектах и приложениях. А поскольку эти датчики используют однопроводной протокол, вы даже можете подключить несколько датчиков к одному выводу и независимо считывать все их значения температуры.
Водонепроницаемый датчик температуры DS18B20 имеет три провода
- Красный провод — это провод VCC: рабочее напряжение от 3 до 5 вольт. В моем случае я буду использовать 3,3 вольта.
- Желтый провод — это провод данных: мы обычно подключаем резистор между проводом данных и проводом VCC.
- Черный провод — это заземляющий провод. Этот провод соединен с контактом заземления Raspberry Pi.
Этот датчик температуры может измерять температуру от -55 ° C до 125 ° C
Raspberry Pi 3 B + контакты GPIO:
Датчик температуры DS18b20 с схемой Raspberry Pi:
DS18B20, взаимодействие с Raspberry Pi 3 b +:
Соедините красный провод VCC с 3.Контакт 3v малинового пи, который является контактом номер 1.
Соедините серый провод, который является заземлением, с контактом 6 raspberry pi.
Наконец, соедините провод данных, который представляет собой желтый провод, с контактом 7 Raspberry Pi.
Мы закончили с интерфейсом, и теперь Raspberry pi 3 B + готов к программированию.
Raspberry Pi 3 b + включается с помощью Power Bank, вы также можете использовать адаптер.Как вы можете видеть, клавиатура и мышь не подключены, и у них нет физического соединения с ноутбуком или ЖК-дисплеем. потому что, как я объяснял в своих предыдущих уроках, мы будем использовать сеть SSH, используя программное обеспечение putty для написания и выполнения программ. Поэтому я рекомендую вам посмотреть мой предыдущий урок. Ссылка приведена ниже. Это полностью объясняет, как настроить вашу сеть SSH с помощью Wi-Fi.
Как настроить сеть SSH с помощью Wi-Fi:
После того, как вы закончите настройку сети SSH, как описано в видео выше.Теперь откройте программу шпатлевки.
Введите IP-адрес вашего Raspberry Pi и нажмите «Открыть».
Введите «пи» в качестве имени пользователя и пароль «малина» и нажмите клавишу «Ввод» на клавиатуре.
Как видите, я вошел в систему. используйте команду clear, чтобы очистить экран.
Теперь настоящая работа начинается отсюда.
Нам нужно будет включить интерфейс One-Wire, прежде чем Pi сможет получать данные от датчика, чтобы включить интерфейс One-Wire, просто напишите
sudo nano / boot / config.txt и нажмите клавишу ввода на клавиатуре.
После нажатия клавиши ввода на клавиатуре откроется файл.
dtoverlay = w1 – gpio нажмите control + o, чтобы сохранить этот файл, и нажмите control x для выхода.
Теперь следующий шаг — перезагрузить Raspberry Pi, для этого просто введите sudo reboot и нажмите Enter. После перезапуска raspberry pi войдите снова, используя pi в качестве имени для входа и raspberry в качестве пароля. Используйте команду очистки, если хотите очистить экран.
Теперь введите следующие команды одну за другой и нажмите клавишу ввода на клавиатуре.
Теперь измените каталог, просто набрав cd / sys / bus / w1 / devices и нажав Enter.
, затем используйте команду ls.
, как видите, 28-02183302e5ff — это мой датчик температуры, а в вашем случае он может быть другим.
, поэтому в моем случае я наберу cd 28-02183302e5ff
, чтобы отобразить необработанные показания температуры, просто введите
.
кот w1_slave
Как видите, t = 13937 — это исходная температура в градусах Цельсия без десятичной точки.Итак, теперь мы уверены, что наша проводка исправна, и наш датчик температуры работает, теперь мы готовы к программированию, теперь давайте напишем очень простую программу для чтения этого датчика температуры и сохранения значений в градусах Цельсия и Фаренгейта в текстовом файле.
Используйте команду clear, чтобы очистить экран, а затем введите команду ls, чтобы отобразить все файлы и папки.
, как видите, есть папка youtube, которую я создал для сохранения файлов моей программы.Давайте откроем эту папку, набрав cd youtube и нажав Enter, а затем снова воспользуемся командой ls, чтобы проверить, что находится внутри этой папки.
ldr.py — это файл, который я создал в моем последнем руководстве для определения дня и ночи. Теперь давайте создадим еще один файл с именем temp и расширением .py. просто введите
sudo nano temp.py и нажмите ввод.
, как видите, открывается редактор. Здесь мы пишем программу. Программа приведена ниже, просто скопируйте и вставьте ее в этот редактор, сохраните программу и все.
DS18b20 Raspberry Pi Python Программирование:
импорт ОС
импортный глобус
время импорта
дата и время импорта
os.system (‘modprobe w1-gpio’)
os.system (‘modprobe w1-therm’)
base_dir = ‘/ системная / шина / w1 / устройства /’
папка_устройства = glob.glob (base_dir + ’28 * ‘) [0]
файл_устройства = папка_устройства + ‘/ w1_slave’
def read_temp_raw ():
f = open (файл_устройства, ‘r’)
lines = f. readlines ()
f.close ()
обратные линии
def read_temp ():
строки = read_temp_raw ()
а строки [0].strip () [- 3:]! = ‘ДА’:
time.sleep (0,2)
строки = read_temp_raw ()
equals_pos = lines [1] .find (‘t =’)
если equals_pos! = -1:
temp_string = строки [1] [equals_pos + 2:]
temp_c = float (temp_string) / 1000,0
temp_f = temp_c * 9,0 / 5,0 + 32,0
вернуть temp_c, temp_f
в то время как True:
GetDateTime = datetime.datetime.now () .strftime («% Y-% m-% d% H:% M:% S»)
tempdata = read_temp ()
tempdata = str (временные данные)
# открыть файл
fo = open («/ home / pi / test / foo.txt «,» а + «)
fo.write («\ n»)
fo.write (GetDateTime)
fo.write (временные данные)
fo.write («\ n»)
печать (временные данные)
время сна (1)
fo.close ()
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 18 19 20 21 22 23 24 25 26 27 28 29 30 000 000 34 35 36 37 38 39 40 41 42 | import os import glob import time import datetime os.system (‘modprobe w1-gpio’) os.system (‘modprobe w1-therm’) base_dir = ‘/ sys / bus / w1 / devices /’ device_folder = glob.glob (base_dir + ’28 * ‘) [0] device_file = device_folder +’ / w1_slave ‘ def read_temp_raw (): f = open (device_file,’ r ‘) lines = f.readlines () f.close () строки возврата def read_temp (): строки = read_temp_raw () while lines [0].strip () [- 3:]! = ‘YES’: time. lines = read_temp_raw () equals_pos = lines [1] .find (‘t =’) if equals_pos! = -1: temp_string = lines [1] [equals_pos + 2:] temp_c = float (temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c, temp_f while Истина: GetDateTime = datetime.datetime.now () .strftime («% Y-% m-% d% H:% M:% S») tempdata = read_temp () tempdata = str (tempdata) # открыть файл fo = open («/ home / pi / test / foo.txt», «a +») fo.write («\ n») fo.write (GetDateTime) fo.write (tempdata) fo. write («\ n») print (tempdata) time.sleep (1) fo.close () |
Описание программы:
начинается с импорта ОС, глобуса, времени и даты и времени.
, теперь воспользуемся всеми теми командами, которые мы использовали в терминале.
Затем мы создаем две пользовательские функции для считывания температуры и преобразования ее в градусы Цельсия и Фаренгейта, а затем добавляем дату и время при каждом считывании и создаем файл с именем document.txt и сохраняем его в папке youtube. Этот файл будет содержать данные о температуре с информацией о дате и времени.
После завершения программирования нажмите control o, чтобы сохранить файл, и нажмите control x, чтобы выйти из редактора.Используйте команду ls для отображения файлов. Как видите, создается файл с именем temp.py.
Теперь давайте запустим эту программу, набрав python temp.py и нажав Enter.
у нас есть ошибка, давайте исправим эту ошибку. откройте файл, набрав
sudo nano temp.py и нажмите ввод
Equals_pos = lines [1] .find [‘t =’) замените эту строку на
.
Equals_pos = lines [1] .find (‘t =’)
Сохраните файл и выйдите из редактора.Теперь давайте снова запустим эту программу, набрав python temp. py.
Теперь вы можете видеть температуру на экране. Если я подержу этот датчик в руке, вы увидите повышение температуры. Для практической демонстрации смотрите видеоурок, приведенный ниже.
Нажмите элемент управления z, чтобы остановить программу, и позвольте открыть документ, содержащий данные о температуре, а также информацию о дате и времени.
Смотреть видеоурок:
Температура с интерфейсом 1-Wire и DS18B20 — Pi Hut
Следуя уроку прошлой недели по использованию датчика i2c, на этой неделе мы рассмотрим другой стандартный протокол, называемый «1-wire».Как следует из названия, здесь используется только один провод для передачи подробной информации о состоянии датчика. На самом деле датчику нужны три провода, так как питание должно подаваться, но 1-провод относится к передаче данных.
Одним из распространенных 1-проводных датчиков является датчик температуры Dallas DS18B20. Он бывает разных форм, основная из которых выглядит как транзистор с тремя ножками. Другой форм-фактор, который я предпочитаю, — это водонепроницаемая версия, в которой датчик встроен в металлическую трубку на конце длинного провода.
Построение схемы
Вам понадобится:
- A Dallas DS18B20 (любая версия)
- Резистор 4,7 кОм
- Если полос четыре, цвета будут желтыми, пурпурными, красными и затем золотыми
- Если полос пять, цвета будут желтыми, фиолетовыми, черными, коричневыми, коричневыми
- 4 перемычки «мама-папа»
- 2 перемычки папа-папа
Перед построением этой схемы необходимо выключить Raspberry Pi.
Схема будет использовать вывод «земли» (GND), чтобы действовать как «отрицательный» или нулевой полюс батареи. Один из контактов с пометкой 3v3 будет обеспечивать питание датчика. 3v3 означает, что это источник питания 3,3 В.
Используйте две перемычки «мама-папа» для подключения контактов GND и 3v3 GPIO к двум нижним рядам отверстий на макетной плате. Совместите цвета, отмеченные на макетной плате — красный и синий — с перемычками от Raspberry Pi — подключите 3v3 к красному ряду, а GND к синему ряду.Эти две «шины» (так их называют) обеспечивают заземление и питание всей макетной платы.
Подключите датчик температуры, как показано, с помощью перемычки «папа / вилка», идущей к нижней «рейке», присоединенной к заземлению Raspberry Pi (GND). Подключите красный провод с помощью перемычки к «рейке» 3v3 внизу. Это подает питание на датчик температуры.
При использовании водонепроницаемого датчика могут возникнуть проблемы с вдавливанием жилы проводов в отверстия на макетной плате.Я использую клеммную колодку и вкручиваю в нее провода.
Другой конец резистора следует вставить в другую колонку макета между красным выводом датчика температуры и перемычкой, подключенной к «шине» 3v3. Желтый провод идет в колонку с одним концом резистора 4,7 кОм и другой перемычкой (показана желтым), которая идет к контакту 4 GPIO. Программа считывает температуру с этого контакта.
Настройка Raspberry Pi
Прежде чем вы сможете использовать какие-либо 1-проводные устройства, вы должны сначала сообщить Raspberry Pi, как их читать.Откройте окно терминала и введите следующее, чтобы отредактировать файл конфигурации Raspberry Pi:
судо нано /boot/config.txt
Посмотрите, есть ли в строке dtoverlay = w1-gpio
. Если нет, добавьте в конец файла следующее:
dtoverlay = w1-gpio
Теперь перезагрузите Raspberry Pi:
перезагрузка sudo
Чтобы проверить конфигурацию, настройте схему, указанную выше, для подключения DS18B20 и введите следующее в окно терминала:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd / sys / bus / w1 / devices
ls
Здесь будут перечислены все устройства, подключенные к интерфейсу 1-Wire. Датчик Dallas DS18B20 начинается с «28 -», за которым следует длинное число. Введите следующее, заменив «xxxx» текстом, следующим за «28 -»:
cd 28-xxxx
cat w1_slave
В ответ вы должны получить следующее, свидетельствующее о том, что DS18B20 работает:
a3 01 4b 46 7f ff 0e 10 d8: crc = d8 ДА
a3 01 4b 46 7f ff 0e 10 d8 t = 32768
Считывание с датчика
Создайте новый скрипт python либо из окна терминала (с помощью nano 3-temperature.py) или из IDLE, «Интерактивной среды разработки». Введите следующий пример кода:
# Импорт библиотек
import os
import glob
import time# Инициализировать выводы GPIO
os.system ('modprobe w1-gpio') # Включает модуль GPIO
os.system ('modprobe w1-therm' ) # Включает модуль температуры.# Находит нужный файл устройства, в котором хранятся данные о температуре.
base_dir = '/ sys / bus / w1 / devices /'
device_folder = glob.glob (base_dir + '28 * ') [0]
device_file = device_folder +' / w1_slave '# Функция, которая читает данные датчиков
def read_temp_raw ():
f = open (device_file,' r ') # Открывается файл устройства температуры
lines = f.readlines () # Возвращает текст
f.close ()
return lines# Преобразует значение датчика в температуру
def read_temp ():
lines = read_temp_raw () # Прочитать температурный 'файл устройства'# Пока первая строка не содержит «YES», подождите 0.2s
#, а затем снова прочтите файл устройства.
while lines [0] .strip () [- 3:]! = 'YES':
time.sleep (0.2)
lines = read_temp_raw ()# Ищите положение символа '=' во второй строке файла устройства
#.
equals_pos = lines [1] .find ('t =')# Если '=' найден, преобразовать оставшуюся часть строки после
# '=' в градусы Цельсия, а затем в градусы Фаренгейта
, если equals_pos! = -1:
temp_string = lines [1] [equals_pos + 2:]
temp_c = float (temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f# Распечатайте температуру до тех пор, пока программа не будет остановлена.
при Истине:
print (read_temp ())
time.sleep (1)
Чтобы запустить код, вы должны быть суперпользователем, поэтому запустите код с:
sudo python temperature.py
Теперь следите за температурой датчика, когда вы держите его или кладете в стакан с водой (если у вас есть водонепроницаемый!).
A Модуль датчика температуры DS18B20 для Raspberry Pi
В этой статье мы рассмотрим модуль DS18B20, который вы можете подключить к Raspberry Pi
.
DS18B20 Информация
Цифровой термометр DS18B20 обеспечивает измерение температуры от 9 до 12 бит по Цельсию и имеет функцию сигнализации с энергонезависимыми программируемыми пользователем верхней и нижней точкой срабатывания.DS18B20 обменивается данными по шине 1-Wire, которой по определению требуется только одна линия данных (и земля) для связи с центральным микропроцессором.
Кроме того, DS18B20 может получать питание непосредственно от линии передачи данных («паразитное питание»), устраняя необходимость во внешнем источнике питания.
Каждый DS18B20 имеет уникальный 64-битный последовательный код, который позволяет нескольким DS18B20 работать на одной шине 1-Wire. Таким образом, легко использовать один микропроцессор для управления множеством DS18B20, распределенных по большой площади.
Модуль Pi DS18B20 имеет резистор 4,7 кОм и гнездовой разъем 2 * 5, поэтому с пианино очень легко работать, не нужно подключать датчики к макетным платам. Прекрасно работает с любым Raspberry Pi, включая Pi 1, Pi 2, Pi 3, Pi Zero, A +, B + и т. Д.
Вот фото модуля
DS18B20 особенности
Рабочее напряжение: 3,3 В
± 0,5 ° C Точность от -10 ° C до + 85 ° C
Используемый диапазон температур: от -55 до 125 ° C (от -67 ° F до + 257 ° F)
Выбор от 9 до 12 бит разрешение
Используется интерфейс 1-Wire — для связи требуется только один цифровой вывод
Уникальный 64-битный идентификатор, записанный в микросхему
Система аварийной сигнализации ограничения температуры
Время запроса менее 750 мс
Детали
Менее 1 доллара США. 50 для одного из этих модулей
Программное обеспечение
Первое, что нам нужно сделать, это включить интерфейс One-Wire. После подключения DS18B20 включите Pi и войдите в систему, затем выполните следующие действия, чтобы включить интерфейс One-Wire:
1. В командной строке введите: sudo nano /boot/config.txt, затем добавьте это в конец файла:
dtoverlay = w1 – gpio
2. Закройте Nano и перезагрузите Pi. Вы можете сделать это, набрав sudo reboot в командной строке
3.Снова войдите в систему Pi и в командной строке введите sudo modprobe w1 – gpio
4. Затем введите sudo modprobe w1-therm
5. Измените каталоги на каталог / sys / bus / w1 / devices, введя: cd / sys / bus / w1 / devices
6. Теперь введите ls, чтобы вывести список устройств:
Это мой результат
pi @ raspberrypi: / sys / bus / w1 / devices $ ls 28-0300a2797663 w1_bus_master1
Итак, 28-0300a2797663 — это мой датчик DS18B20, мы поместим это в пример кода Python ниже
.
Пример кода:
Я запускаю Thonny IDE на своем Raspberry PI, набираю следующий код и запускаю его.
импортных RPi.GPIO как GPIO время импорта GPIO.setwarnings (Ложь) GPIO.setmode (GPIO.BOARD) ## Использовать нумерацию контактов платы GPIO.setup (18, GPIO.OUT) ## Настройка вывода 18 GPIO на OUT а 1: tempfile = open ("/ sys / bus / w1 / devices / 28-0300a2797663 / w1_slave") temptext = tempfile.read (); tempfile.close () tempdata = temptext.split ("\ n") [1] .split ("") [9] температура = поплавок (временные данные [2:]) температура = температура / 1000 печать (температура) время сна (1)
Выход
В оболочке IDE вы должны увидеть что-то подобное при запуске кода
Raspberry Pi с датчиками температуры DS18B20:
Блог Cavelab — Истории из Cavelab
Я сделал простую HAT (оборудование, прикрепленное сверху) для Raspberry Pi, чтобы читать несколько датчиков температуры DS18B20 — это было на удивление легко. Я использовал измеренные температуры для управления вентилятором с помощью Home Assistant.
Первый тест
Я начал тестирование с одной монтажной платы DS18B20.
Сначала нам нужно сделать пару вещей на Pi:
- Включить однопроводную связь с
raspi-config
- Установить пакет python
sudo apt install python3-w1thermsensor
Теперь — давайте попробуем список подключенных 1-проводных устройств:
$ ls / sys / bus / w1 / devices /
28-0416a02b0eff w1_bus_master1
Хорошо, у нас есть одно устройство! Теперь считываем температуру:
$ cat / sys / bus / w1 / devices / 28-0416a02b0eff / w1_slave
8e 01 4b 46 7f ff 0c 10 de: crc = de YES
8e 01 4b 46 7f ff 0c 10 de t = 24875
24875
= 24.875 ° C
Сладкий! 😄
Создание шляпы
Чтобы сделать что-то более долговечным, я использовал макетную перфокарту 30 × 70 мм, схематическую диаграмму и список деталей ниже.
На нижней стороне я прикрепил гнездовой контактный разъем для портов Raspberry Pi GPIO.
А сверху; пять 3-контактных штекерных разъемов для датчиков температуры DS18B20 и подтягивающий резистор 10 кОм.
Все 3-контактные штекерные разъемы подключены последовательно.
Для подключения к Raspberry Pi необходимо всего три контакта; VDD (5 В), GND и GPIO4 (1-проводный).Я использую 20-контактный разъем, потому что он делает шляпу более надежной.
Я подключил еще пару датчиков температуры DS18B20 и перечислил их идентификаторы:
$ ls / sys / bus / w1 / devices /
28-0416a02b0eff 28-0517021db9ff 28-051702869eff w1_bus_master1
Чтение датчиков
Для чтения значений датчиков я сделал крошечный скрипт на Python:
https://github.com/thomasjsn/rpi-w1therm
Он считывает каждый датчик каждые 15 секунд и публикует результаты измерений через MQTT , он также вычисляет среднее значение всех подключенных датчиков и публикует его.
Посмотрите, как это работает здесь:
Home Assistant
My Home Assistant подписывается на измерения температуры через MQTT, и я использую среднюю температуру со всех датчиков для управления вытяжным вентилятором домашнего офиса.
Группа температур Home Assistant
Конфигурация датчика
датчик:
- платформа: mqtt
state_topic: 'датчик / офис / температура / верхняя_граница'
доступность_тема: "датчик / офис / температура / верхняя_крышка / статус"
имя: 'Офисный потолок над стойкой'
unit_of_measurement: '° C'
- платформа: mqtt
state_topic: 'датчик / офис / температура / выше_устройства'
availability_topic: "датчик / офис / температура / выше_устройство / статус"
name: 'Офисный потолок над столом'
unit_of_measurement: '° C'
- платформа: mqtt
state_topic: 'датчик / офис / температура / центр_комната'
availability_topic: "датчик / офис / температура / центр_комната / статус"
название: 'Офисный потолочный центр'
unit_of_measurement: '° C'
- платформа: mqtt
state_topic: 'датчик / офис / температура / среднее значение'
имя: office_temp_average
unit_of_measurement: '° C'
Вентилятор автоматики
- псевдоним: Вентилятор на авто
спусковой крючок:
платформа: numeric_state
entity_id: датчик.office_temp_average
выше: 25
действие:
сервис: switch.turn_on
entity_id: switch.office_fan
- псевдоним: Fan off auto
спусковой крючок:
платформа: numeric_state
entity_id: sensor.office_temp_average
ниже: 24
за:
минут: 5
действие:
сервис: switch.turn_off
entity_id: switch.office_fan
Принципиальная схема
Raspberry Pi с 4 датчиками температуры DS18B20
Используемые детали
- 1
×
Карта microSDHC, Transcend, 32 ГБ, класс 10, 20 МБ / 17 МБ - 1
×
Печатная плата, прототипирование перфорированной платы, 30×70 мм, 21 см2 - 1
×
Raspberry Pi 1 Model B +, процессор ARM 700 МГц, ОЗУ 512 МБ - 1
×
Резистор, углеродная пленка, 0.25Вт, 10 кОм, 5% - 1
×
Резиновая ножка, клейкая, SJ-5012, Ø 12,7×3,5 мм - 10
×
Головка с прямым штифтом, розетка, двухрядная, 2,54 мм - 12
×
Головка с прямым штифтом, внутренняя, однорядная, 2,54 мм - 15
×
Головка с прямым штифтом, вилка, однорядная, 2,54 мм - 4
×
Датчик температуры DS18B20, зонд, водонепроницаемый, кабель 1М - 1,5
кв.м.
Провод, многожильный, 0,22мм2, черный - 1,5
кв.м.
Провод, многожильный, 0.22 мм2, красный - 1,5
кв.м.
Многожильный провод, 0,22 мм2, желтый
Конструкция датчика температуры через raspberry pi и датчик температуры DS18B20 — kookye.com
Бьямбер
Дизайн датчика температуры через raspberry pi и датчик температуры DS18B20
Обзор
DS18B20 — это однопроводный датчик температуры. Поскольку Raspberry Pi не имеет АЦП (аналого-цифрового преобразователя), он не может напрямую использовать аналоговый датчик температуры, такой как TMP36, что делает DS18B20 хорошим выбором для измерения температуры.В этом руководстве вы узнаете, как использовать DS18B20 с Raspberry Pi для измерения температуры.
Детали
Список деталей для следующей программы:
Подключение датчика DS18B20
Убедитесь, что соединение выполнено следующим образом. Если вы установите его неправильно, оно нагреется и сломается.
DS18B20 | Raspberry Pi |
Правая нога (S) | GPIO4 |
Левая нога (-) | ЗЕМЛЯ |
Средняя нога (VCC) | 5 В |
Добавить поддержку OneWire
Raspbian поддерживает протокол с одной шиной, поэтому он может подключаться к 1-проводному устройству, например DS18B20. Откройте терминал и введите следующую команду, чтобы добавить поддержку onewire:
sudo nano / boot / config.txt
Затем прокрутите вниз и введите следующую команду:
dtoverlay = w1-gpio
Нажмите Ctrl + X, затем нажмите Y, чтобы сохранить файл. Затем перезагрузитесь с помощью sudo reboot. когда Pi восстановлен, и вы снова вошли в систему, введите команду: lsmod, чтобы проверить, доступен ли датчик температуры для чтения. Если есть две линии, как показано ниже, это означает, что имеется допустимая температура для чтения.
В противном случае вам нужно ввести следующие команды:
судо modprobe w1-gpio sudo modprobe w1-therm
Если датчик температуры подключен к Raspberry pi, датчик появится с адресом в формате: 28-XXXX в каталоге / sys / bus / w1 / devices.Каждый датчик температуры DS18B20 имеет уникальный жестко запрограммированный адрес, поэтому при необходимости вы можете подключить несколько датчиков температуры и при этом считывать их по отдельности. используя «cd», перейдите в каталог и просмотрите показания температуры, набрав следующие команды:
cd / sys / bus / w1 / устройства cd / 28-xxxxxx кошка w1_slave
Программное обеспечение
Введите команду ниже, чтобы создать файл с именем tem.py
sudo nano temp.py
Программа Python обрабатывает все сообщения об ошибках и сообщает температуру в градусах C и F каждую секунду.вот пример кода на Python:
импорт ОС импортный глобус время импорта os.system ('modprobe w1-gpio') os.system ('modprobe w1-therm') base_dir = '/ системная / шина / w1 / устройства /' папка_устройства = glob.glob (base_dir + '28 * ') [0] файл_устройства = папка_устройства + '/ w1_slave' def read_temp_raw (): f = open (файл_устройства, 'r') lines = f.readlines () f.close () обратные линии def read_temp (): строки = read_temp_raw () а строки [0].strip () [- 3:]! = 'ДА': time.sleep (0,2) строки = read_temp_raw () equals_pos = lines [1] .find ('t =') если equals_pos! = -1: temp_string = строки [1] [equals_pos + 2:] temp_c = float (temp_string) / 1000,0 temp_f = temp_c * 9,0 / 5,0 + 32,0 вернуть temp_c, temp_f в то время как True: print ('C =% 3.3f F =% 3.3f'% read_temp ()) время сна (1)
Комментарии
1) ос.system («modprobe w1-gpio») и os.system («modprobe w1-therm»)
–включает библиотеки modprobe w1-gpio и modprobe w1-therm
2) base_dir = ‘/ sys / bus / w1 / devices /’ и device_folder = glob.glob (base_dir + ’28 * ’) [0]
— определить базовый (корневой) каталог для расположения 28-xxxxx файла устройства
3) файл_устройства = папка_устройства + ‘/ w1_slave’
— определение местоположения файла данных устройства (поток данных датчика температуры читается как файловый поток)
4) в то время как строки [0].strip () [- 3:]! = ‘YES’:
— Продолжайте считывать данные датчика температуры (из файла_устройства), пока последние 3 символа не станут «ДА»
5) equals_pos = lines [1] .find (‘t =’)
— прочтите строку данных, найдите строку «t =», которая является знаком данных температуры
Подключите несколько датчиков температуры DS18B20 к Raspberry Pi
Необходимые припасы:
- Датчики температуры DS18B20
- Резистор 4,7 кОм
- Raspberry Pi offcourse
- Установлен с Raspbian и domoticz
Шаг 1. Подключите датчики DS18B20 к Raspberry Pi
DS18B20 | Raspberry |
КРАСНЫЙ | PIN1 — 3.3V |
ЖЕЛТЫЙ (БЕЛЫЙ) | PIN7 (GPIO4) |
ЧЕРНЫЙ | PIN6 GRND |
На схеме подключения ниже вы видите схему для подключения трех датчиков температуры DS18B20 Pi к малиновому помощь макета.
Если вы хотите подключить один датчик температуры DS18B20, просто удалите 2 датчика из этой цепи.
Шаг 2: Активация однопроводного GPIO
По умолчанию протокол W1 отключен на Raspberry Pi.Мы можем активировать этот протокол, добавив эту строку в файл boot / config.
судо vim /boot/config.txt
Добавьте эту строку в конец файла
dtoverlay = w1-gpio
# Если вы хотите активировать протокол с помощью специального пина (по умолчанию BCM4), используйте приведенный ниже код. (в этом примере я использую GPIO4
dtoverlay = w1-gpio, gpiopin = 4
Перезагрузите Raspberry Pi
перезагрузка sudo
Шаг 3. Подтвердите DS18B20
Перейти в папку, в которой расположены устройства w1.
cd / sys / bus / w1 / устройства
# показать содержимое папки
лс
Здесь вы можете увидеть все устройства W1. Вы можете распознать датчик температуры, если он начинается с 28. Если вы видите папку, перейдите в папку и прочтите датчик.
компакт-диск 28-xxxxxx
кошка w1_slave
Теперь вы должны увидеть что-то вроде этого
Здесь температура t = 17687 (17,687 Цельсия)
Шаг 4: Добавьте датчики в Domoticz
Теперь мы можем добавить датчики в Domoticz.Моя высшая цель — автоматизировать бассейн, поэтому мне нужно добавить 3 датчика в domoticz.
В Domoticz goto
- Setup -> Hardware
- Добавьте новое оборудование типа 1-Wire (System)
- Для DS18B20 мы не используем OWFS, поэтому удалите «/ mnt / wire /» для поля пути OWFS.
- Установите период опроса датчика на желаемое значение. Я думаю, что одного раза в 30 секунд достаточно, поэтому мое значение — 30000.
- Нажмите «Добавить»
Если вы перейдете в «Настройка» -> «Устройства», вы увидите подключенные датчики температуры.