Мониторинг температуры может быть требованием во многих ваших проектах Raspberry Pi. Это относительно легко сделать в Raspberry Pi, а компоненты, необходимые для этого проекта, не слишком дороги.В этой статье показано, как использовать модуль цифрового термометра DS18B20 для контроля температуры с помощью Raspberry Pi. В статье также показано, как создать веб-приложение для отображения температуры.
Вещи, которые вам понадобятся:
Чтобы опробовать примеры из этой статьи, вам понадобится следующее:
- Одноплатный компьютер Raspberry Pi
- Адаптер питания для устройства Raspberry Pi
- Карта microSD с установленной ОС Raspberry Pi
- Сетевое подключение на устройстве Raspberry Pi
- Макетная плата
- 3 соединительных провода типа мама-мама
- Некоторые соединительные провода типа "папа-папа"
- Резистор 10 кОм
- Модуль цифрового термометра DS18B20
Распиновка цифрового термометра DS18B20
Если вы держите цифровой термометр DS18B20, как показано на изображении ниже, первый контакт будет заземлен (GND), второй штифт будет ДАННЫЕ, и третий контакт будет VCC.
Принципиальная электрическая схема
Принципиальная схема термомонитора представлена на изображении ниже.
Здесь PIN2 / 5V устройства Raspberry Pi должен быть подключен к PIN3 / VCC модуля цифрового термометра.
В PIN7 / GPIO4 устройства Raspberry Pi должен быть подключен к PIN2 / ДАННЫЕ модуля цифрового термометра.
В PIN9 / GND устройства Raspberry Pi должен быть подключен к PIN1 / GND модуля цифрового термометра.
А Резистор 10кОм должен быть связан между PIN2 а также PIN3 модуля цифрового термометра.
Держите Raspberry Pi, как показано на изображении ниже. Тогда верхний левый штифт будет PIN1. Булавка рядом с PIN1 будет PIN2. Затем, если вы переместитесь на одну строку вперед, левая будет PIN3 и правильный будет PIN4, и так далее.
После подключения всех компонентов к устройству Raspberry Pi оно должно выглядеть примерно так:
Посмотрите, как я разместил компоненты на макетной плате.
После того, как вы подключили все компоненты к устройству Raspberry Pi, включите устройство Raspberry Pi. Затем подключитесь к устройству Raspberry Pi через VNC или SSH.
Считывание данных о температуре с цифрового термометра DS18B20
Модуль термометра DS18B20 использует протокол связи 1-Wire для отправки данных на Raspberry Pi. По умолчанию интерфейс 1-Wire отключен. Вы можете легко включить интерфейс с помощью инструмента настройки Raspberry Pi.
Чтобы включить интерфейс 1-Wire, запустите raspi-config с помощью следующей команды:
$ sudo raspi-config
Выбирать Параметры интерфейса и нажмите
Выбирать 1-проводной и нажмите
Выбирать
Нажмите
Чтобы выйти из raspi-config утилита, нажмите
Чтобы изменения вступили в силу, перезагрузите Raspberry Pi следующим образом:
$ sudo перезагрузка
Чтобы проверить, есть ли w1_gpio а также w1_therm модули ядра загружены, выполните следующую команду:
$ sudo lsmod | grep w1
Если по какой-то причине w1_therm модуль не загружен, вы можете загрузить его вручную с помощью следующей команды:
$ sudo modprobe w1_therm
После того, как вы включили 1-проводная связь и загрузил w1_therm модуль, новое устройство (28-00000ba693e9, в моем случае) должен быть указан в / sys / bus / w1 / устройства каталог, как вы можете видеть на скриншоте ниже.
$ ls / sys / bus / w1 / devices /
Перейдите в новый каталог следующим образом:
$ cd / sys / bus / w1 / devices / 28-00000ba693e9
Вы должны найти температура файл в каталоге, как вы можете видеть на скриншоте ниже.
$ ls -lh
В температура файл - это простой текстовый файл. Вы можете прочитать данные о температуре, используя Кот команда, как показано ниже:
температура $ cat
Как видите, данные о температуре распечатаны на консоли. Здесь, 30375 средства 30.375 ° С.
Вы можете использовать язык программирования, например Python или Node.js, чтобы проанализировать эти данные о температуре и использовать их в своем приложении. Я покажу вам, как это сделать, в следующем разделе этой статьи.
Чтобы проанализировать данные о температуре с помощью языка программирования, вам понадобится абсолютный путь к температура файл. Вы можете найти это, используя ссылка для чтения команда, как показано ниже:
$ readlink -f температура
Создайте веб-приложение для отображения данных о температуре:
В этом разделе вы узнаете, как анализировать данные о температуре из модуля термометра DS18B20 и отображать их в веб-приложении.
В этом примере я создам API, который будет анализировать данные о температуре из модуля термометра DS18B20, к которым можно получить доступ из API. Я также создам веб-приложение, которое будет извлекать данные о температуре из API и красиво их отображать. Я буду использовать узел.js для этого. Коды загружены в мой репозиторий GitHub shovon8 / ds18b20-raspberrypi-api. Вы можете проверить это, если у вас возникли трудности с копированием и вставкой кодов из этой статьи.
Узел.js не установлен в ОС Raspberry Pi по умолчанию. Но он доступен в официальном репозитории пакетов Raspberry Pi OS. Вы можете легко установить Node.js из репозитория пакетов ОС Raspberry Pi.
Сначала обновите кеш репозитория пакетов APT с помощью следующей команды:
$ sudo подходящее обновление
Затем установите Node.js и NPM с помощью следующей команды:
$ sudo apt установить nodejs npm
Для подтверждения установки нажмите Y а затем нажмите
Менеджер пакетов APT загрузит и установит все необходимые пакеты. Это может занять некоторое время.
На данный момент Node.js и NPM должны быть установлены.
Once Node.js и NPM, проверьте, узел а также npm доступны следующие команды:
$ node --version$ npm --version
Обновите NPM с помощью следующей команды:
$ sudo npm install --global npm
НПМ следует модернизировать.
Как видите, NPM обновился с версии 5.8.0 до версии 6.14.8.
$ node --version $ npm --version
Теперь этот узел.js и NPM установлены, создайте новый каталог проекта ~ / ds18b20, следующим образом:
$ mkdir -v ~ / ds18b20
Перейдите к ~ / ds18b20 каталог, а именно:
$ cd ~ / ds18b20
Создайте пустой упаковка.json файл с помощью следующей команды:
$ npm init --y
Установите выражать.js библиотеку для проекта с помощью следующей команды:
$ npm install --save express
Экспресс.js библиотека теперь должна быть установлена.
Создайте новый файл сервер.js в каталоге проекта следующим образом:
$ нано сервер.js
Введите следующие строки кодов в поле сервер.js файл.
let express = require ('экспресс');пусть fs = require ('fs');
пусть server = express ();
const PORT = 8080;
const WEBROOT = './ public ';
сервер.получить ('/', выразить.статический (WEBROOT));
сервер.get ('/ temperature', (req, res) =>
let tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
пусть температура = fs.readFileSync (tempDataPath, кодировка: 'utf8', флаг: 'r') / 1000;
res.json (температура, начало диапазона: -55, конец диапазона: 125);
);
сервер.слушайте (ПОРТ, () =>
приставка.log ('сервер работает на порту $ PORT');
);
Когда вы закончите, нажмите
Здесь строка 1 импортирует выражать, а строка 2 импортирует фс модуль.
Строка 4 инициализирует экспресс.
Строки 6 и 7 определяют ПОРТ а также WEBROOT постоянные переменные соответственно. API и веб-сервер будут работать на ПОРТ (который 8080, в этой статье), а веб-сервер будет обслуживать статическое содержимое из WEBROOT (какой общественные / каталог внутри каталога проекта в этой статье).
Строка 9 используется для настройки экспресс-доставки статического содержимого из WEBROOT.
Строки 11-15 определяют конечную точку API / температура, который будет использоваться для получения данных о температуре в формате JSON.
В строке 12 tempDataPath переменная содержит абсолютный путь к температура файл модуля цифрового термометра DS18B20, показанный в предыдущем разделе этой статьи.
В строке 13 данные о температуре считываются из температура файл с помощью Node.js fs, а данные о температуре хранятся в температура Переменная.
В строке 14 данные о температуре печатаются в формате JSON. Модуль цифрового термометра DS18B20 может измерять температуру от -55 ° C до 125 ° C. Я добавил это в выводе JSON, используя rangeStart а также rangeEnd характеристики.
Наконец, строка 17-19 запускает API и веб-сервер на ПОРТ (который 8080, в этой статье).
Создать общественные / в каталоге проекта, как показано ниже:
$ mkdir -v общедоступный
Запустить сервер.js программу с помощью следующей команды:
$ node сервер.js
Сервер должен работать на порту 8080.
Вы можете получить доступ к температурным данным модуля термометра DS18B20 из / температура конечная точка API.
Чтобы проверить, можете ли вы получить данные о температуре из API, запустите завиток, следующим образом:
$ curl -s http: // localhost: 8080 / temperature | json_ppКак видите, данные о температуре выводятся на консоль в формате JSON. Итак, API работает.
Нажмите
Теперь я создам веб-страницу, которая будет запрашивать у сервера API данные о температуре и красиво отображать их на странице. Данные о температуре будут обновляться каждые 5 секунд.
Создать новый индекс.html файл в общественные / каталог проекта, а именно:
$ nano public / index.html
Введите следующие строки кодов в поле индекс.html файл.
00.00 ° C
Температура обновляется каждые 5 секунд
Когда вы закончите, нажмите
HTML-файл индекс.html легко понять. Это формат, в котором данные о температуре будут отображаться в веб-приложении.
Здесь строки 53-55 используются для отображения индикатора выполнения, а строки 57-60 используются для отображения температуры.
Строки 5-49 используются для красивого оформления веб-приложения с помощью CSS (каскадная таблица стилей).
Строки 62-109 используются для обеспечения работоспособности веб-приложения. Коды JavaScript используются для анимации индикатора выполнения, получения данных о температуре из API и отображения информации.
Строка 63 запускает основной функция после загрузки веб-приложения в браузере.
В основной функция очень долгая. Он простирается от строки 65 до строки 108. Внутри основной функции у нас есть некоторые другие функции, такие как getTemperature, updateTemperature, updateProgress, приложение, а также Начало.
В updateProgress функция в строках 83-86 принимает процент выполнения в качестве входных данных и обновляет индикатор выполнения.
В updateTemperature функция в строках 77-81 принимает данные о температуре в качестве входных данных и обновляет веб-приложение данными о температуре.
В getTemperature функция в строках 66-75 делает запрос к / температура конечная точка API и получает данные о температуре. Как только данные получены, он вызывает updateTemperature работать с данными. В updateTemperature функция затем обновляет веб-приложение новыми данными о температуре.
В приложение функция в строках 88-99 анимирует индикатор выполнения и запрашивает данные о температуре из API каждые 5 секунд.
В Начало функция в строках 101-104 запускает веб-приложение.
Открой упаковка.json файл с помощью текстового редактора nano следующим образом:
$ nano пакет.json
Изменять основной к сервер.js и добавляем новый скрипт обслуживать в скрипты раздел, как отмечено на скриншоте ниже.
Когда вы закончите, нажмите
Теперь, когда все готово, запустите веб-приложение и API с помощью следующей команды:
$ npm run serve
Сервер должен работать на порту 8080.
Теперь откройте веб-браузер на своем устройстве Raspberry Pi и перейдите по адресу http: // localhost: 8080. Данные о температуре от модуля цифрового термометра DS18B20 должны отображаться в вашем веб-браузере, как вы можете видеть на скриншоте ниже.
Данные о температуре должны обновляться каждые 5 секунд.
Как видите, температура меняется каждые 5 секунд.
Если вы хотите получить доступ к веб-приложению с другого компьютера в вашей сети, вам необходимо знать IP-адрес вашего устройства Raspberry Pi.
Вы можете узнать IP-адрес своего устройства Raspberry Pi с помощью следующей команды:
$ hostname -IКак видите, IP-адрес моего устройства Raspberry Pi - 192.168.0.107. Это будет по-другому для вас. Итак, с этого момента не забудьте заменить IP-адрес.
Как только вы узнаете IP-адрес своего устройства Raspberry Pi, вы сможете получить доступ к веб-приложению с любого компьютера в вашей сети с помощью веб-браузера. Просто посетите http: // 192.168.0.107: 8080, а веб-приложение должно отображать данные о температуре от модуля цифрового термометра DS18B20.
Заключение
В этой статье вы узнали, как использовать модуль цифрового термометра DS18B20 в Raspberry Pi для измерения температуры. Вы также узнали, как создать узел.js API для отображения данных о температуре в веб-приложении, которое получает доступ к данным о температуре из API и отображает их. Эта статья должна помочь вам начать работу с мониторингом температуры Raspberry Pi с помощью модуля цифрового термометра DS18B20 и IoT с Raspberry Pi.