Monitorando a temperatura em Raspberry Pi

Monitorando a temperatura em Raspberry Pi

Video playerhttps: // linuxhint.com/wp-content/uploads/2020/10/2020-09-29-20-47-25.MP400: 0000: 0000: 40 UPILHA TENHAS DE SELA DE AUTA.
As temperaturas de monitoramento podem 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ê precisará:

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

  1. Um computador de placa única de 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 placa de pão
  6. 3 PCs de fios de conexão feminina a mulher
  7. Alguns fios de conexão masculino a homem
  8. Um resistor de 10k
  9. Um módulo de termômetro digital DS18B20

Pinutas de termômetro digital DS18B20

Se você segurar o termômetro digital DS18B20, como mostrado na imagem abaixo, o primeiro pino será moído (Gnd), O segundo pino será DADOS, e o terceiro pino será VCC.

Diagrama de circuito

O diagrama de 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.

A Resistor de 10kΩ deve estar conectado entre PIN2 e Pin3 do módulo de termômetro digital.

Você deve segurar seu Raspberry Pi, como 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 esquerda será Pin3 E o certo será Pin4, e assim por diante.

Depois de conectar todos os componentes ao seu dispositivo Raspberry Pi, deve parecer algo assim:

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

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

Dados de temperatura de leitura do termômetro digital DS18B20

O módulo 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á ativada. Você pode facilmente ativar a interface da ferramenta de configuração do Raspberry Pi.

Para ativar 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 .

Imprensa .

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

Para que as mudanças entrem em vigor, reinicie o seu Raspberry Pi da seguinte forma:

$ sudo reiniciar

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

$ sudo lsmod | Grep W1

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

$ sudo modprobe w1_therm

Depois de ativar 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/ônibus/w1/dispositivos diretório, como você pode ver na captura de tela abaixo.

$ ls/sys/barramento/w1/dispositivos/

Navegue até o novo diretório, como segue:

$ CD/SYS/BUS/W1/DEVICES/28-00000BA693E9

Você deve encontrar um temperatura Arquivo no diretório, como você pode ver na captura de tela abaixo.

$ ls -lh

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

$ CAT Temperature

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

Você pode usar uma linguagem de programação, como python ou nó.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, como segue:

$ 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 do 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 termômetro DS18B20 que podem ser acessados ​​a partir da API. Também vou criar um aplicativo da web que busque os dados de temperatura da API e o exibirá bem. Vou usar o nó.linguagem de programação js para fazer isso. Os códigos são carregados no meu repositório GitHub Shovon8/DS18B20-Raspberrypi-Api. Você pode conferir se estiver tendo dificuldades para copiar e exibir 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 instalar facilmente o nó.JS do Raspberry Pi OS Package Repository.

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

$ sudo apt update

Em seguida, instale o nó.JS e NPM com o seguinte comando:

$ sudo apt install nodejs npm

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

O gerenciador de pacotes APT baixará e instalará todos os pacotes necessários. Pode demorar um pouco para completar.

Neste ponto, nó.JS e NPM devem ser instalados.

Uma vez que o nó.JS e NPM estão instalados, verifique se o e npm Os comandos estão disponíveis, como segue:

$ node -versão
$ npm --versões

Atualize o NPM com o seguinte comando:

$ sudo npm install -npm global

NPM deve ser atualizado.

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

$ node -versão
$ npm --versões

Agora aquele nó.JS e NPM são instalados, crie o novo diretório de projetos ~/ds18b20, do seguinte modo:

$ mkdir -v ~/ds18b20

Navegue até o ~/ds18b20 Diretório, como segue:

$ 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 Instale -Save Express

O expresso.A biblioteca JS agora deve ser instalada.

Crie o novo arquivo servidor.JS No diretório do projeto, como segue:

$ Nano Server.JS

Insira as seguintes linhas de códigos no servidor.JS arquivo.

deixe expresso = requer ('expresso');
Seja fs = requer ('fs');
Deixe o servidor = expresso ();
Porta const = 8080;
const webroot = './público';
servidor.Get ('/', expresso.estático (webroot));
servidor.get ('/temperatura', (req, res) =>
deixe tempdatapath = '/sys/barramento/w1/dispositivos/28-00000BA693E9/temperatura';
Deixe a temperatura = fs.readfilesync (tempdatapath, coding: 'utf8', sinalizador: 'r') / 1000;
res.JSON (temperatura, Rangestart: -55, RangeEnd: 125);
);
servidor.Ouça (porta, () =>
console.log ('servidor em execução na porta $ porta');
);

Depois de 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.

A linha 4 inicializa expressa.

Linha 6 e 7 definem o PORTA e Webroot variáveis ​​constantes, respectivamente. A API e o servidor da web serão executados PORTA (qual é 8080, neste artigo), e o servidor da web servirá a 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 Express para servir o conteúdo estático do Webroot.

Linhas 11-15 Definir o terminal da API /temperatura, que será usado para colocar os dados de temperatura no formato JSON.

Na linha 12, o tempdatapath A 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 do temperatura arquivo usando o nó.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 Termômetro Digital DS18B20 pode medir entre as temperaturas -55 ° C a 125 ° C. Eu adicionei que 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, como segue:

$ mkdir -v público

Execute o servidor.JS Programa com o seguinte comando:

$ Node Server.JS

O servidor deve estar em execução na porta 8080.

Você pode acessar os dados de temperatura do módulo termômetro DS18B20 do /temperatura terminal 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/temperatura | json_pp

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

Imprensa + C Para parar o servidor.

Agora, criarei uma página da Web que solicitarei o servidor da API para os dados de temperatura e exibirá -os bem 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, como segue:

$ nano público/índice.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



Depois de terminar, pressione + X seguido pela Y e Para salvar o índice.html arquivo.

O arquivo html índice.html é fácil de entender. É o formato em que 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 o aplicativo da web bem usando CSS (folha de estilo em cascata).

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 principal função assim que o aplicativo da web é carregado no navegador.

O principal A função é muito longa. Vai da linha 65 à linha 108. Dentro da função principal, temos outras funções, como gettemperature, UpdateTEMPERATURA, UpdateProgress, aplicativo, e começar.

O UpdateProgress Função, nas linhas 83-86, toma a porcentagem de progresso como entrada e atualiza a barra de progresso.

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

O gettemperature função nas linhas 66-75 faz uma solicitação para o /temperatura endpoint da API e obtém os dados de temperatura. Depois que os dados são recebidos, eles chamam o UpdateTEMPERATURA função com os dados. O UpdateTEMPERATURA Função então 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 forma:

$ Nano Package.JSON

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

Depois de 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 Service

O servidor deve estar em execução na porta 8080.

Agora, abra um navegador da web no seu dispositivo Raspberry Pi e visite http: // localhost: 8080. Os dados de temperatura do módulo do termômetro digital DS18B20 devem ser exibidos no 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 está mudando a cada 5 segundos.

Se você deseja acessar o aplicativo da web de outro computador em sua rede, 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 será diferente para você. Portanto, substitua o endereço IP a partir de agora.

Depois de conhecer o endereço IP do seu dispositivo Raspberry Pi, você poderá acessar o aplicativo da web em qualquer computador em sua 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 a usar o módulo de termômetro digital DS18B20 em Raspberry Pi para medir a temperatura. Você também aprendeu a criar um nó.API JS para mostrar os dados de temperatura em um aplicativo da web, que acessa os dados de temperatura da API e o exibe. Este artigo deve ajudá -lo a começar com o monitoramento de temperatura do Raspberry Pi com o módulo Digital Thermeter Digital DS18B20 com Raspberry Pi.