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. 10k резистор
  9. Модул за цифров термометър DS18B20

DS18B20 Цифрови термометри на изводите

Ако държите цифровия термометър DS18B20, както е показано на изображението по-долу, първият щифт ще бъде заземен (GND), вторият щифт ще бъде ДАННИ, и третият щифт ще бъде VCC.

Електрическа схема

Схемата на електрическия монитор е показана на изображението по-долу.

Ето, PIN2 / 5V на устройството Raspberry Pi трябва да бъде свързано към PIN3 / VCC на модула на цифровия термометър.

The PIN7 / GPIO4 на устройството Raspberry Pi трябва да бъде свързано към ПИН2 / ДАННИ на модула на цифровия термометър.

The PIN9 / GND на устройството Raspberry Pi трябва да бъде свързано към PIN1 / GND на модула на цифровия термометър.

A 10kΩ резистор трябва да са свързани между ПИН2 и ПИН3 на модула на цифровия термометър.

Трябва да държите Raspberry Pi, както е показано на изображението по-долу. След това горният ляв щифт ще бъде ПИН1. Пинът точно до ПИН1 ще бъде ПИН2. След това, ако се придвижите напред с един ред, лявият ще бъде ПИН3 и правилният ще бъде ПИН4, и така нататък.

След като свържете всички компоненти към вашето Raspberry Pi устройство, то трябва да изглежда по следния начин:

Погледнете отблизо как поставих компонентите на макетната плоча.

След като свържете всички компоненти към вашето устройство Raspberry Pi, включете устройството Raspberry Pi. След това се свържете с вашето Raspberry Pi устройство чрез VNC или SSH.

Четене на температурни данни от цифровия термометър DS18B20

Модулът термометър DS18B20 използва 1-жичен комуникационен протокол за изпращане на данни към Raspberry Pi. По подразбиране 1-жичният интерфейс не е активиран. Можете лесно да активирате интерфейса от инструмента за конфигуриране на Raspberry Pi.

За да активирате 1-жичния интерфейс, стартирайте 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 / устройства /

Придвижете се до новата директория, както следва:

$ cd / sys / bus / w1 / devices / 28-00000ba693e9

Трябва да намерите температура файл в директорията, както можете да видите на екранната снимка по-долу.

$ ls -lh

The температура файл е обикновен текстов файл. Можете да прочетете данните за температурата с помощта на котка команда, както следва:

$ котка температура

Както можете да видите, данните за температурата се отпечатват на конзолата. Тук, 30375 означава 30.375 ° С.

Можете да използвате език за програмиране, като Python или Node.js, за да анализирате тези данни за температурата и да ги използвате в приложението си. Ще ви покажа как да направите това в следващия раздел на тази статия.

За да анализирате данните за температурата с помощта на език за програмиране, ще ви е необходим абсолютният път до температура файл. Можете да намерите това с помощта на връзка за четене команда, както следва:

$ readlink -f температура

Създайте уеб приложение за показване на данни за температурата:

В този раздел ще научите как да анализирате данните за температурата от термометъра DS18B20 и да ги покажете в уеб приложение.

В този пример ще създам API, който ще анализира температурните данни от термометъра DS18B20, който може да бъде достъпен от API. Също така ще създам уеб приложение, което ще изтегли данните за температурата от API и ще ги покаже добре. Ще използвам Node.js език за програмиране, за да го направите. Кодовете се качват в моето хранилище на GitHub shovon8 / ds18b20-raspberrypi-api. Може да искате да го проверите, ако имате проблеми с копирането и поставянето на кодове от тази статия.

Възел.js не е инсталиран на Raspberry Pi OS по подразбиране. Но той е достъпен в официалното хранилище на пакети на Raspberry Pi OS. Можете лесно да инсталирате Node.js от хранилището на пакети на Raspberry Pi OS.

Първо актуализирайте кеша на хранилището на APT пакета със следната команда:

$ sudo apt актуализация

След това инсталирайте Node.js и NPM със следната команда:

$ sudo apt инсталира nodejs npm

За да потвърдите инсталацията, натиснете Y и след това натиснете .

Мениджърът на пакети APT ще изтегли и инсталира всички необходими пакети. Попълването може да отнеме известно време.

В този момент Node.js и NPM трябва да бъдат инсталирани.

Веднъж Node.js и NPM са инсталирани, проверете дали възел и npm налични са команди, както следва:

$ node --version
$ npm - версия

Надстройте NPM със следната команда:

$ sudo npm install --global npm

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 в директорията на проекта, както следва:

$ nano сървър.js

Въведете следните редове с кодове в сървър.js файл.

нека express = изисква ('express');
нека fs = изисква ('fs');
нека сървър = express ();
const PORT = 8080;
const WEBROOT = './ публичен “;
сървър.get ('/', експрес.статичен (WEBROOT));
сървър.get ('/ temperature', (req, res) =>
нека tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
нека температурата = fs.readFileSync (tempDataPath, кодиране: 'utf8', флаг: 'r') / 1000;
Рез.json (температура, rangeStart: -55, rangeEnd: 125);
);
сървър.слушайте (PORT, () =>
конзола.log ('сървър, работещ на порт $ PORT');
);

След като приключите, натиснете + х следван от Y и за да запазите сървъра.js файл.

Тук, ред 1 внос експресна, и ред 2 импортира fs модул.

Ред 4 инициализира експрес.

Редове 6 и 7 определят ПРИСТАНИЩЕ и WEBROOT константни променливи, съответно. API и уеб сървърът ще работят ПРИСТАНИЩЕ (кое е 8080, в тази статия), а уеб сървърът ще обслужва статично съдържание от WEBROOT (кой е обществено / директория в директорията на проекта в тази статия).

Ред 9 се използва за конфигуриране на express за обслужване на статично съдържание от 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 публично / индекс.html

Въведете следните редове с кодове в индекс.html файл.




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







00.00 ° С


Актуализиране на температурата на всеки 5 секунди



След като приключите, натиснете + х следван от Y и за да запазите индекс.html файл.

HTML файлът индекс.html е лесно да се разбере. Това е форматът, в който данните за температурата ще се показват в уеб приложението.

Тук редове 53-55 се използват за показване на лентата за напредъка, а редове 57-60 се използват за показване на температурата.

Редове 5-49 се използват за красиво декориране на уеб приложението с помощта на CSS (Cascading Style Sheet).

Редове 62-109 се използват, за да направят уеб приложението функционално. JavaScript кодовете се използват за анимиране на лентата за напредъка, извличане на данните за температурата от API и показване на информацията.

Линия 63 управлява основен функция, след като уеб приложението се зареди в браузъра.

The основен функцията е много дълга. Тя обхваща от ред 65 до ред 108. Вътре в основната функция имаме някои други функции, като getTemperature, updateTemperature, updateProgress, ап, и старт.

The updateProgress функция, в редове 83-86, взема процента на напредъка като вход и актуализира лентата за напредъка.

The updateTemperature функция в редове 77-81 приема данните за температурата като вход и актуализира уеб приложението с данните за температурата.

The getTemperature функция в редове 66-75 отправя заявка към / температура крайна точка на API и получава данните за температурата. След като данните бъдат получени, той извиква updateTemperature функция с данните. The updateTemperature след това актуализира уеб приложението с новите данни за температурата.

The ап функция, в редове 88-99, анимира лентата за напредъка и изисква температурни данни от API на всеки 5 секунди.

The старт функция, в редове 101-104, стартира уеб приложението.

Отвори пакет.json файл с нано текстов редактор, както следва:

$ nano пакет.json

Промяна основен да се сървър.js и добавете новия скрипт сервирайте в скриптове раздел, както е отбелязано на екранната снимка по-долу.

След като приключите, натиснете + х следван от Y и за да запазите пакет.json файл.

Сега, когато всичко е готово, стартирайте уеб приложението и API със следната команда:

$ npm run run

Сървърът трябва да работи на порт 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
The среден бутон на мишката ви помага да превъртате дълги уеб страници и екрани с много данни. Ако това спре, добре ще свършите да използвате клавиату...
Как да промените левия и десния бутон на мишката на компютър с Windows 10
Напълно нормално е всички устройства на компютърни мишки да са ергономично проектирани за десничари. Но има налични устройства за мишка, които са спец...
Емулирайте кликванията на мишката, като задържите курсора на мишката с кликаща мишка в Windows 10
Използването на мишка или клавиатура в неправилна поза при прекомерна употреба може да доведе до много здравословни проблеми, включително напрежение, ...