Raspberry Pi

Monitorando a temperatura em Raspberry Pi

Monitorando a temperatura em Raspberry Pi


Monitorar as temperaturas pode ser um requisito em muitos de seus projetos Raspberry Pi. É relativamente fácil de fazer no Raspberry Pi e os componentes necessários para este projeto não são muito caros.Este artigo mostra como usar o módulo de termômetro digital DS18B20 para monitorar a temperatura usando Raspberry Pi. O artigo também demonstra como criar um aplicativo da web para exibir a temperatura.

Coisas que você vai precisar:

Para experimentar os exemplos neste artigo, você precisará do seguinte:

  1. Um computador de placa única Raspberry Pi
  2. Um adaptador de energia para o dispositivo Raspberry Pi
  3. Um cartão microSD com Raspberry Pi OS instalado
  4. Conectividade de rede no dispositivo Raspberry Pi
  5. Uma tábua de pão
  6. 3 peças de fios de conexão fêmea-fêmea
  7. Alguns fios de conexão macho-macho
  8. Um resistor de 10k
  9. Um módulo de termômetro digital DS18B20

Pinagem do termômetro digital DS18B20

Se você segurar o termômetro digital DS18B20 conforme mostrado na imagem abaixo, o primeiro pino será aterrado (GND), o segundo pino será DADOS, e o terceiro pino será VCC.

Diagrama de circuito

O diagrama do circuito do monitor de temperatura é mostrado na imagem abaixo.

Aqui o PIN2 / 5V do dispositivo Raspberry Pi deve ser conectado ao PIN3 / VCC do módulo de termômetro digital.

O PIN7 / GPIO4 do dispositivo Raspberry Pi deve ser conectado ao PIN2 / DADOS do módulo de termômetro digital.

O PIN9 / GND do dispositivo Raspberry Pi deve ser conectado ao PIN1 / GND do módulo de termômetro digital.

UMA Resistor de 10kΩ deve ser conectado entre PIN2 e PIN3 do módulo de termômetro digital.

Você deve segurar seu Raspberry Pi conforme mostrado na imagem abaixo. Então, o pino superior esquerdo será PIN1. O alfinete ao lado de PIN1 vai ser PIN2. Então, se você avançar uma linha, a da esquerda será PIN3 e o certo será PIN4, e assim por diante.

Depois de conectar todos os componentes ao dispositivo Raspberry Pi, ele deve ter a seguinte aparência:

Dê uma olhada mais de perto em como coloquei os componentes na placa de ensaio.

Depois de conectar todos os componentes ao seu dispositivo Raspberry Pi, ligue o dispositivo Raspberry Pi. Em seguida, conecte-se ao seu dispositivo Raspberry Pi via VNC ou SSH.

Leitura de dados de temperatura do termômetro digital DS18B20

O módulo de termômetro DS18B20 usa o protocolo de comunicação de 1 fio para enviar dados para o Raspberry Pi. Por padrão, a interface de 1 fio não está habilitada. Você pode habilitar facilmente a interface da ferramenta de configuração Raspberry Pi.

Para habilitar a interface de 1 fio, execute raspi-config com o seguinte comando:

$ sudo raspi-config

Selecione Opções de interface e pressione .

Selecione 1 fio e pressione .

Selecione e pressione .

Aperte .

Para sair do raspi-config utilitário, pressione .

Para que as alterações tenham efeito, reinicie o Raspberry Pi da seguinte maneira:

$ sudo reboot

Para verificar se o w1_gpio e w1_therm módulos do kernel são carregados, execute o seguinte comando:

$ sudo lsmod | grep w1

Se por algum motivo, o w1_therm módulo não está carregado, então você pode carregá-lo manualmente com o seguinte comando:

$ sudo modprobe w1_therm

Depois de habilitar Comunicação de 1 fio e carregou o w1_therm módulo, um novo dispositivo (28-00000ba693e9, no meu caso) deve ser listado no / sys / bus / w1 / devices diretório, como você pode ver na imagem abaixo.

$ ls / sys / bus / w1 / devices /

Navegue até o novo diretório, da seguinte maneira:

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

Você deve encontrar um temperatura arquivo no diretório, como você pode ver na imagem abaixo.

$ ls -lh

O temperatura arquivo é um arquivo de texto simples. Você pode ler os dados de temperatura usando o gato comando, da seguinte forma:

temperatura $ cat

Como você pode ver, os dados de temperatura são impressos no console. Aqui, 30375 meios 30.375 ° C.

Você pode usar uma linguagem de programação, como Python ou Node.js, para analisar esses dados de temperatura e usá-los em seu aplicativo. Vou mostrar como fazer isso na próxima seção deste artigo.

Para analisar os dados de temperatura usando uma linguagem de programação, você precisará do caminho absoluto para o temperatura Arquivo. Você pode encontrar isso usando o readlink comando, da seguinte forma:

$ readlink -f temperatura

Crie um aplicativo da web para exibir dados de temperatura:

Nesta seção, você aprenderá como analisar os dados de temperatura do módulo termômetro DS18B20 e exibi-los em um aplicativo da web.

Neste exemplo, criarei uma API, que analisará os dados de temperatura do módulo de termômetro DS18B20 que pode ser acessado a partir da API. Também criarei um aplicativo da web que buscará os dados de temperatura da API e os exibirá de maneira agradável. Vou usar o nó.linguagem de programação js para fazer isso. Os códigos são carregados em meu repositório GitHub shovon8 / ds18b20-raspberrypi-api. Verifique se você está tendo dificuldades para copiar e colar os códigos deste artigo.

Nó.js não está instalado no Raspberry Pi OS por padrão. Mas, está disponível no repositório oficial de pacotes do Raspberry Pi OS. Você pode facilmente instalar o Node.js do repositório de pacotes do Raspberry Pi OS.

Primeiro, atualize o cache do repositório de pacotes APT com o seguinte comando:

$ sudo apt update

Em seguida, instale o Node.js e NPM com o seguinte comando:

$ sudo apt install nodejs npm

Para confirmar a instalação, pressione Y e então pressione .

O gerenciador de pacotes APT irá baixar e instalar todos os pacotes necessários. Pode demorar um pouco para ser concluído.

Neste ponto, Node.js e NPM devem ser instalados.

Uma Vez Nó.js e NPM estão instalados, verifique se o e npm os comandos estão disponíveis, da seguinte forma:

$ node --version
$ npm - versão

Atualize o NPM com o seguinte comando:

$ sudo npm install --global npm

NPM deve ser atualizado.

Como você pode ver, o NPM foi atualizado da versão 5.8.0 à versão 6.14.8.

$ node --version $ npm --version

Agora esse Nodo.js e NPM são instalados, crie o novo diretório do projeto ~ / ds18b20, do seguinte modo:

$ mkdir -v ~ / ds18b20

Navegue até o ~ / ds18b20 diretório, da seguinte forma:

$ cd ~ / ds18b20

Crie o vazio pacote.json arquivo com o seguinte comando:

$ npm init --y

Instale o Expressar.js biblioteca para o projeto com o seguinte comando:

$ npm install - salvar expresso

O expresso.biblioteca js agora deve ser instalada.

Crie o novo arquivo servidor.js no diretório do projeto, da seguinte maneira:

servidor $ nano.js

Insira as seguintes linhas de códigos no servidor.js Arquivo.

deixe express = require ('express');
deixe fs = require ('fs');
deixe servidor = express ();
const PORT = 8080;
const WEBROOT = './público';
servidor.obter ('/', expresso.estático (WEBROOT));
servidor.get ('/ temperatura', (req, res) =>
let tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
deixe a temperatura = fs.readFileSync (tempDataPath, codificação: 'utf8', sinalizador: 'r') / 1000;
res.json (temperatura, intervaloInício: -55, intervaloEnd: 125);
);
servidor.ouvir (PORTA, () =>
console.log ('servidor rodando na porta $ PORT');
);

Quando terminar, pressione + X seguido pela Y e para salvar o servidor.arquivo js.

Aqui, a linha 1 importa expressar, e a linha 2 importa o fs módulo.

Linha 4 inicializa expressa.

As linhas 6 e 7 definem o PORTA e WEBROOT variáveis ​​constantes, respectivamente. A API e o servidor da web serão executados em PORTA (qual é 8080, neste artigo), e o servidor da web servirá conteúdo estático do WEBROOT (qual é o público/ diretório dentro do diretório do projeto neste artigo).

A linha 9 é usada para configurar o expresso para servir conteúdos estáticos do WEBROOT.

As linhas 11-15 definem o endpoint da API /temperatura, que será usado para obter os dados de temperatura no formato JSON.

Na linha 12, o tempDataPath variável mantém o caminho absoluto para o temperatura arquivo do módulo de termômetro digital DS18B20, mostrado em uma seção anterior deste artigo.

Na linha 13, os dados de temperatura são lidos a partir do temperatura arquivo usando o Node.módulo js fs, e os dados de temperatura são armazenados no temperatura variável.

Na linha 14, os dados de temperatura são impressos no formato JSON. O módulo de termômetro digital DS18B20 pode medir entre as temperaturas de -55 ° C a 125 ° C. Eu adicionei isso na saída JSON usando o rangeStart e rangeEnd propriedades.

Finalmente, a linha 17-19 executa a API e o servidor da web em PORTA (qual é 8080, neste artigo).

Criar uma público/ diretório no diretório do projeto, da seguinte maneira:

$ mkdir -v public

Execute o servidor.js programa com o seguinte comando:

servidor $ node.js

O servidor deve estar rodando na porta 8080.

Você pode acessar os dados de temperatura do módulo termômetro DS18B20 a partir do /temperatura ponto final da API.

Para testar se você pode obter os dados de temperatura da API, execute ondulação, do seguinte modo:

$ curl -s http: // localhost: 8080 / temperature | json_pp

Como você pode ver, os dados de temperatura são impressos no console no formato JSON. Então, a API está funcionando.

Aperte + C parar o servidor.

Agora, vou criar uma página da web que irá solicitar ao servidor API os dados de temperatura e exibi-los de forma agradável na página. Os dados de temperatura serão atualizados a cada 5 segundos.

Crie um novo índice.html arquivo no público/ diretório do projeto, da seguinte forma:

$ nano public / index.html

Insira as seguintes linhas de códigos no índice.html Arquivo.




Monitor de temperatura







00.00 ° C


Atualizações de temperatura a cada 5 segundos



Quando terminar, pressione + X seguido pela Y e para salvar o índice.html Arquivo.

O arquivo HTML índice.html é fácil de entender. É o formato no qual os dados de temperatura serão exibidos no aplicativo da web.

Aqui, as linhas 53-55 são usadas para exibir uma barra de progresso e as linhas 57-60 são usadas para exibir a temperatura.

As linhas 5-49 são usadas para decorar bem o aplicativo da web usando CSS (Cascading Style Sheet).

As linhas 62-109 são usadas para tornar o aplicativo da web funcional. Os códigos JavaScript são usados ​​para animar a barra de progresso, buscar os dados de temperatura da API e exibir as informações.

A linha 63 executa o a Principal função uma vez que o aplicativo da web é carregado no navegador.

O a Principal função é muito longa. Ele se estende da linha 65 à linha 108. Dentro da função principal, temos algumas outras funções, como getTemperature, updateTemperature, updateProgress, aplicativo, e começar.

O updateProgress função, nas linhas 83-86, pega a porcentagem de progresso como entrada e atualiza a barra de progresso.

O updateTemperature função nas linhas 77-81 leva os dados de temperatura como a entrada e atualiza o aplicativo da web com os dados de temperatura.

O getTemperature função nas linhas 66-75 faz uma solicitação ao /temperatura ponto final da API e obtém os dados de temperatura. Assim que os dados são recebidos, ele chama o updateTemperature funcionar com os dados. O updateTemperature função, em seguida, atualiza o aplicativo da web com os novos dados de temperatura.

O aplicativo função, nas linhas 88-99, anima a barra de progresso e solicita os dados de temperatura da API a cada 5 segundos.

O começar função, nas linhas 101-104, inicia o aplicativo da web.

Abra o pacote.json arquivo com o editor de texto nano da seguinte maneira:

pacote $ nano.json

Mudar a Principal para servidor.js e adicione o novo script servir no scripts seção, conforme marcado na captura de tela abaixo.

Quando terminar, pressione + X seguido pela Y e para salvar o pacote.json Arquivo.

Agora que tudo está pronto, execute o aplicativo da web e a API com o seguinte comando:

$ npm run servir

O servidor deve estar rodando na porta 8080.

Agora, abra um navegador da web em seu dispositivo Raspberry Pi e visite http: // localhost: 8080. Os dados de temperatura do módulo de termômetro digital DS18B20 devem ser exibidos em seu navegador da web, como você pode ver na captura de tela abaixo.

Os dados de temperatura devem ser atualizados a cada 5 segundos.

Como você pode ver, a temperatura muda a cada 5 segundos.

Se quiser acessar o aplicativo da web de outro computador em sua rede, você precisará saber o endereço IP do seu dispositivo Raspberry Pi.

Você pode encontrar o endereço IP do seu dispositivo Raspberry Pi com o seguinte comando:

$ hostname -I

Como você pode ver, o endereço IP do meu dispositivo Raspberry Pi é 192.168.0.107. Isso vai ser diferente para você. Portanto, certifique-se de substituir o endereço IP a partir de agora.

Depois de saber o endereço IP do seu dispositivo Raspberry Pi, você poderá acessar o aplicativo da web de qualquer computador da rede usando um navegador da web. Basta visitar http: // 192.168.0.107: 8080, e o aplicativo da web deve mostrar os dados de temperatura do módulo de termômetro digital DS18B20.

Conclusão

Neste artigo, você aprendeu como usar o módulo de termômetro digital DS18B20 no Raspberry Pi para medir a temperatura. Você também aprendeu como criar um nó.js API para mostrar os dados de temperatura em um aplicativo da web, que acessa os dados de temperatura da API e os exibe. Este artigo deve ajudá-lo a começar a monitorar a temperatura Raspberry Pi com o módulo de termômetro digital DS18B20 e IoT com Raspberry Pi.

SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...
0 A.D. Tutorial
Dos muitos jogos de estratégia que existem, 0 A.D. consegue se destacar como um título abrangente e um jogo muito profundo e tático, apesar de ser de ...