Índice:

Servidor de dados de temperatura dupla IoT: 12 etapas (com imagens)
Servidor de dados de temperatura dupla IoT: 12 etapas (com imagens)
Anonim
Servidor de dados de temperatura dupla IoT
Servidor de dados de temperatura dupla IoT

Esta é minha primeira tentativa de escrever um Instructable, então, por favor, vá com calma comigo! Se você acha que isso não é tão ruim, por favor, vote em mim no Concurso de Autoria pela Primeira Vez.

Este é o meu projeto Lock-Down para monitorar remotamente 2 temperaturas em uma estufa, uma no nível do chão e outra logo abaixo do telhado. Embora eu tenha usado Raspberry Pi’s (RPi) antes, este projeto envolveu vários elementos que eu não tinha usado e, ao longo do caminho, encontrei vários tutoriais que estavam desatualizados ou simplesmente errados. Esta é a minha coleção de conhecimentos para fazer um monitor de temperatura remoto duplo funcional a partir de um Pi Zero & 2 DS18B20 + Sensores de temperatura digitais de um fio que foram adquiridos ao longo do caminho.

Coisas que aprendi sobre:

  • Disponibilizando dados de um dispositivo como parte da Internet das Coisas (IoT)
  • Interface de 1 fio com 2 dispositivos
  • Dataplicity
  • Dados JSON
  • Configurando o firewall UFW
  • Usando Freeboard.io para exibir os dados
  • Configurando o RPi para executar o programa automaticamente

Existem enormes quantidades de dados que podem ser encontrados com uma simples pesquisa sobre todos esses tópicos, mas o que não está tão claro é como combinar todos esses elementos separados.

Suprimentos

  • Você precisará de um Raspberry Pi (com monitor, mouse e teclado para configurar, mas não ao executar o projeto concluído)
  • Uma conexão de Internet ativa.
  • Uma PSU com um conector Micro USB
  • 2 dos Sensores Digitais de Temperatura DS18B20 + One Wire. Descobri que a Amazon era a mais barata
  • Resistor de 4 K7 ohm ou usei 2 resistores de 10 K ohm.
  • Placa de ensaio pequena e alguns fios macho / fêmea para teste na bancada
  • Pequeno pedaço de stripboard para a montagem final
  • Ferramentas simples para soldagem e decapagem de fios.
  • Pequena caixa de plástico para abrigar o design final

Etapa 1: Hardware

Hardware
Hardware
Hardware
Hardware

Eu já tinha um Raspberry Pi Zero W (com wireless), mas tenho certeza que este projeto simples funcionará bem em qualquer um dos RPIs. A caixa de bits eletrônicos estranhos em minha oficina tinha todo o resto (protoboard, fio, PSU etc) e então tudo que eu tive que comprar foram dois sensores 2 x DS18B20 da Amazon. Estes são os chips DS18B20 normais apenas convenientemente montados em uma caixa à prova d'água e cabo de 3m. Existem 3 fios do cabo:

  • Vermelho - alimentação - conecte ao pino 1 de 3,3 V
  • Preto - retorno - conecte ao pino de aterramento 6
  • Amarelo - dados - conecte ao GPIO4 pino 7

Os sensores usam a interface de 1 fio e são muito fáceis de conectar e obter dados. Existem várias páginas na Web com detalhes para a conexão de 1 dispositivo, mas muito pouco sobre a conexão de 2 (ou mais).

Para o teste na bancada, o circuito foi montado usando uma placa de ensaio. Os tutoriais que encontrei afirmavam usar um resistor de 4K7 para polarizar a linha de dados, mas não consegui encontrar um e então usei 2 * 10K em paralelo e funcionou muito bem. Existem muitos recursos na Web para usar uma placa de ensaio para montar circuitos RPi e, portanto, não os repetirei aqui.

Diagrama criado usando Circuit Diagram

Etapa 2: configuração do software Raspberry Pi OS

Configuração do software Raspberry Pi OS
Configuração do software Raspberry Pi OS
Configuração do software Raspberry Pi OS
Configuração do software Raspberry Pi OS
Configuração do software Raspberry Pi OS
Configuração do software Raspberry Pi OS

Como já havia usado este RPi antes, decidi começar com uma instalação limpa do SO, reformatei o cartão SD e instalei uma versão limpa do NOOBS. Em seguida, instalei a versão desktop completa do Raspian (a opção superior), pois isso também instalaria PIP e GIT que a versão lite não instala. Mesmo que eu não precisasse da interface gráfica do usuário (GUI) para o projeto, é uma maneira fácil de configurar todas as opções e com um cartão SD de 16 gb não havia falta de espaço.

Eu configurei o acesso WI-FI e, em seguida, executei a instalação completa e o assistente com atualizações e upgrades etc. Usando a GUI, eu configurei o RPI conforme necessário, apenas porque usar a GUI é mais simples do que a Interface de Linha de Comando (CLI). Eu fui para a janela de configuração do menu e então:

  • Na guia do sistema, mudei a senha, configurei para inicializar em CLI e desmarquei Auto Login
  • Na guia interfaces, habilitei 1 fio
  • Clicado em ok e reiniciado

Se você precisar voltar para a GUI a qualquer momento, basta digitar startx na CLI

startx

Etapa 3: configurar Dataplicity para permitir acesso remoto

Configure Dataplicity para permitir acesso remoto
Configure Dataplicity para permitir acesso remoto
Configure Dataplicity para permitir acesso remoto
Configure Dataplicity para permitir acesso remoto
Configure Dataplicity para permitir acesso remoto
Configure Dataplicity para permitir acesso remoto

Eu encontrei uma entrada de blog muito útil no site Dataplicity em https://blog.dataplicity.com/how-to-build-a-raspb … e usei algumas partes dela. A seção 3 do blog descreve a configuração do Dataplicity para acesso remoto ao RPi. Eu nunca usei o Dataplicity antes, mas devo dizer que o recomendo completamente como uma ferramenta de acesso remoto muito simples. Embora as imagens (no blog acima) estejam um pouco desatualizadas, o princípio é bom.

No seu PC, vá para Dataplicity.com e crie uma conta (você pode usar o navegador na GUI, mas lento no RPi Zero). Em seguida, clique no botão “adicionar novo dispositivo” e uma linha de código é exibida na janela pop-up. Em seguida, vá para a CLI no RPi e digite a linha de texto. Se tudo estiver bem, o logotipo do Dataplicity será exibido e o programa de instalação será executado.

De volta ao seu PC, o novo dispositivo deve agora aparecer no site Dataplicity. Clique no dispositivo e você deverá ver uma tela de terminal para o seu RPi.

Existem algumas coisas a serem observadas aqui:

  • Para fazer login, digite "su pi" (para acesso de superusuário) e será solicitada a senha (conforme definido anteriormente)
  • Você precisa habilitar o Wormhole (para ser usado mais tarde)
  • Você precisará do endereço do buraco de minhoca para exibir os dados posteriormente (clique com o botão direito para copiar quando necessário)

Você pode usar este acesso remoto para todas as etapas a seguir e é muito mais fácil para copiar dados, programas etc. do que diretamente no RPi.

Etapa 4: Verifique os sensores

Agora você pode usar o Dataplicity para acessar remotamente o RPI para todas as próximas seções.

Se tudo agora estiver conectado corretamente, você deve ser capaz de ver as temperaturas retornando do DS18B20. Eu trabalhei através do tutorial Pi Hut, mas a maior parte dele não foi necessária. Se você quiser os detalhes completos, eles podem ser encontrados aqui:

Os bits importantes são ir para o diretório de dispositivos e certificar-se de que 2 sensores diferentes são mostrados.

cd / sys / bus / w1 / devices /

Isso deve mostrar 2 dispositivos começando com 28- e o barramento mestre. Meus programas:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Esses 2 números de identificação são importantes e serão necessários mais tarde! Em seguida, mude para um dos diretórios do sensor:

cd 28-011453ebfdaa

(por exemplo) e então ler o valor do sensor

gato w1_slave

Deve haver 2 linhas de texto mostradas:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d SIM

53 01 4b 46 7f ff 0c 10 2d t = 21187

O SIM mostra que o sensor está lendo corretamente e o 21187 mostra a temperatura em Celsius de 21,187 (dividido por 1000) Repita isso para verificar o segundo sensor. Se ambos estiverem corretos, podemos prosseguir para a leitura dos dados com Python3.

Copiei e adaptei o seguinte código que encontrei na Web mas não me lembro de onde. Se este se parece com o seu código, peço desculpas, pois não houve intenção de plágio; por favor, deixe-me saber e eu reconhecerei seu trabalho.

Crie um diretório chamado projetos e mude para esse diretório.

mkdir ~ / projetos

cd ~ / projetos

Neste diretório, use o editor de texto (nano) para criar e editar um arquivo chamado thermo-test.py

sudo nano thermo-test.py

Isso deve ter aberto o editor e como você está usando o Dataplicity, você pode simplesmente copiar o código a seguir (thermo-test.py) e colar no editor. Você precisará alterar os 2 nomes de dispositivos (começando em 28-…) para aqueles anotados acima. Quando tudo parecer correto, pressione ctrl + X para terminar, Y para salvar e voltar a usar o nome existente. Se você preferir usar a GUI, Thonny fará o mesmo.

Para executar o programa de teste:

sudo python3 thermo-test.py

Se tudo correr bem, deve-se executar o arquivo em python 3 e imprimir na tela as 2 temperaturas a cada 10 segundos. Você pode testar se está tudo ok colocando 1 sensor em água gelada ou aquecendo suavemente com um secador de cabelo. Se tudo parecer bem, podemos seguir em frente!

Etapa 5: Firewall UFW

Firewall UFW
Firewall UFW

Como este RPi estaria permanentemente conectado à internet, decidi que um Firewall seria uma boa ideia e um simples de usar é o Uncomplicated Firewall (ufw). Há um tutorial muito simples aqui

Não vou aprofundar muito, pois este não é o propósito deste Instructable, mas em resumo:

Instale o firewall com:

sudo apt-get install ufw

Defina as regras padrão:

sudo ufw padrão permitir saída

sudo ufw padrão negar entrada

Abra a porta 80 para Dataplicity

sudo ufw allow 80

Habilite o firewall

sudo ufw enable

Verifique o status e certifique-se de que tudo está funcionando

sudo ufw status

Etapa 6: S finalizando os dados de temperatura como JSON

S terminando os dados de temperatura como JSON
S terminando os dados de temperatura como JSON

Voltar para o blog de Tim Fernando e a seção 5.

Siga as etapas conforme indicado (exceto que já criamos o diretório de projetos) e tudo deve funcionar bem. Usando o GIT, você baixará os arquivos do aplicativo de Tim e o PIP garantirá que todos os programas necessários sejam instalados em seu RPi. Então descobri que precisava reinicializar para ter certeza de que os pacotes estavam todos configurados corretamente.

Em seguida, execute o programa de Tim e seu RPi deve fornecer dados JSON para o primeiro sensor.

cd home / pi / projects / temperature-serve-pi

temperatura sudo gunicorn: app -b 0.0.0.0:80

Você pode continuar através do blog até a seção 6, onde encontrará dados sendo fornecidos para um dos sensores.

Você também pode usar o JSON Viewer para ver os dados https://codebeautify.org/jsonviewer Clique no botão “carregar URL” e cole o endereço do Wormhole anotado anteriormente. No painel esquerdo, você deve ver duas entradas, uma para Celsius e outra para Fahrenheit.

Etapa 7: enviar dados de ambos os sensores

Envie dados de ambos os sensores
Envie dados de ambos os sensores

Com base no código em temperaturas.py e thermo-test.py, criei 2temps.py Editado como antes no diretório / projects / temperature-serve-pi, colei no código e salvei. Então corri

sudo gunicorn 2temps: app -b 0.0.0.0:80

Agora, quando eu executei novamente o JSON Viewer, obtive valores para temp1 e temp2

Sucesso:)

Etapa 8: Início Automático

Começo automático
Começo automático

Como a energia da estufa é desligada ocasionalmente, eu queria que o RPi carregasse automaticamente o programa e começasse a provar os dados. A maneira mais simples parece ser editar o arquivo rc.local e adicionar o código necessário na parte inferior, logo acima da linha de saída 0.

cd etc

sudo nan rc.local

então add-in

dormir 10

cd home / pi / projects / temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • O & no final diz ao computador para executar o script em uma sub shell para que o seu computador não espere que a função termine e continue com o boot
  • Sleep 10 [segundos] garante que todas as operações anteriores sejam concluídas antes de iniciar o serviço.

Saia e salve como antes. Em seguida, reinicie e execute novamente o JSON Viewer para verificar se está tudo bem.

Se você quiser mais informações sobre programas de execução automática, há um ótimo tutorial aqui

Etapa 9: Exibir os dados em Freeboard.io (1)

Exibir os dados em Freeboard.io (1)
Exibir os dados em Freeboard.io (1)

As etapas no blog de Tim funcionam bem, em resumo; crie uma conta em www.freeboard.io e depois crie um novo Freeboard, chamei de SHEDTEMPERATURES.

Primeiro, adicione uma fonte de dados, clique em ADICIONAR no canto superior direito e no pop-up selecione JSON como o tipo, dê à fonte de dados um NOME, adicione o endereço do buraco de minhoca anterior como a URL e clique em NÃO para TENTAR THINGPROXY. As temperaturas mudam apenas muito lentamente e, portanto, ATUALIZAR A CADA 15 SEGUNDOS está bom. Clique em SALVAR.

Etapa 10: Exibir os dados em Freeboard.io (2)

Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)
Exibir os dados em Freeboard.io (2)

Clique em ADICIONAR PAINEL e em + para adicionar o primeiro widget. Você pode selecionar e jogar com vários TYPEs, mas descobri que o Gauge funcionava bem. Dê um TÍTULO, UNIDADES (C), MÍNIMO e MÁXIMO adequados para se adequar à sua aplicação. Para o DATASOURCE, clique no + e a fonte criada acima aparecerá.

A lista suspensa agora deve mostrar as 2 fontes de dados JSON (temp2 e temp2) criadas anteriormente. Selecione a fonte apropriada e clique em salvar.

Repita isso para o segundo medidor e está tudo pronto.

Os dados agora devem ser exibidos nos 2 medidores e se você ainda tiver o PRi conectado a um monitor, deverá ver as solicitações do Freeboard.io assim que chegarem.

Etapa 11: construir o projeto em uma caixa

Construir o projeto em uma caixa
Construir o projeto em uma caixa
Construir o projeto em uma caixa
Construir o projeto em uma caixa
Construir o projeto em uma caixa
Construir o projeto em uma caixa
Construir o projeto em uma caixa
Construir o projeto em uma caixa

Até este ponto, o RPi e os outros componentes foram todos montados na bancada usando uma placa de ensaio. Um pequeno pedaço de stripboard foi então usado para substituir a protoboard e todos os cabos soldados no lugar.

Uma pequena caixa de armazenamento de Lego rosa brilhante foi encontrada, com bastante espaço e onde o RPI não esquentaria muito. furos foram feitos nas laterais da caixa e pilares de montagem de náilon de 3 mm foram usados para segurar o RPi e o stripboard no lugar.

Existem apenas 3 conexões necessárias do GPIO, 3.3v, GND e dados.

  • 3.3vdc pino 1
  • GND pino 6
  • Dados (GPIO4) pino 7

Também foram adicionados orifícios na caixa para alimentação USB e cabos para os sensores de temperatura. Depois que tudo foi montado no lugar, uma pequena quantidade de selante de silicone foi adicionada para garantir que as aranhas não achassem que era um lugar agradável e quente para passar o inverno!

Etapa 12: Concluída

Finalizado
Finalizado
Finalizado
Finalizado

A caixa foi colocada na estufa e alimentada por um carregador USB. Os dois sensores foram colocados um perto do topo da estufa e o outro em um vaso para verificar se as mudas estavam ficando frias à noite.

Este é meu primeiro Instructable e espero que você ache que está tudo bem. Se você encontrar algum erro, por favor me avise e eu irei corrigi-lo quando necessário. A próxima etapa pode ser registrar os dados a cada (digamos) 60 segundos, mas isso virá mais tarde.

Recomendado: