Raspberry Pi

Мониторинг температуры в Raspberry Pi

Мониторинг температуры в Raspberry Pi


Мониторинг температуры может быть требованием во многих ваших проектах Raspberry Pi. Это относительно легко сделать в Raspberry Pi, а компоненты, необходимые для этого проекта, не слишком дороги.В этой статье показано, как использовать модуль цифрового термометра DS18B20 для контроля температуры с помощью Raspberry Pi. В статье также показано, как создать веб-приложение для отображения температуры.

Вещи, которые вам понадобятся:

Чтобы опробовать примеры из этой статьи, вам понадобится следующее:

  1. Одноплатный компьютер Raspberry Pi
  2. Адаптер питания для устройства Raspberry Pi
  3. Карта microSD с установленной ОС Raspberry Pi
  4. Сетевое подключение на устройстве Raspberry Pi
  5. Макетная плата
  6. 3 соединительных провода типа мама-мама
  7. Некоторые соединительные провода типа "папа-папа"
  8. Резистор 10 кОм
  9. Модуль цифрового термометра 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');
);

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти сервер.js файл.

Здесь строка 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 работает.

Нажмите + C остановить сервер.

Теперь я создам веб-страницу, которая будет запрашивать у сервера API данные о температуре и красиво отображать их на странице. Данные о температуре будут обновляться каждые 5 секунд.

Создать новый индекс.html файл в общественные / каталог проекта, а именно:

$ nano public / index.html

Введите следующие строки кодов в поле индекс.html файл.




Монитор температуры







00.00 ° C


Температура обновляется каждые 5 секунд



Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти индекс.html файл.

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 и добавляем новый скрипт обслуживать в скрипты раздел, как отмечено на скриншоте ниже.

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти упаковка.json файл.

Теперь, когда все готово, запустите веб-приложение и 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.

Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...
Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...