Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Sensor de temperatura Raspberry Pi


Algumas semanas atrás, comprei um Raspberry Pi. Depois de ler o Guia do Usuário do Raspberry Pi de Eben Upton, particularmente os dois capítulos em que ele concentra a atenção no GPIO, tive uma ideia para o meu primeiro projeto. A postagem cobre a primeira iteração de um projeto de monitoramento de temperatura doméstica que criei usando um Raspberry Pi, um MCP9808, um Mac Mini antigo (início de 2008), InfluxDB, Grafana, um pouco de Python e runit.

Hardware do sensor


Para este projeto, escolhi usar o Breakout Board MCP9808 da Adafruit - uma excelente fonte de componentes, circuitos e ideias. Escolhi esta unidade por alguns motivos:
  1. É controlado por I²C - o GPIO do Raspberry Pi suporta o barramento I²C necessário sobre os pinos 3 (linha de dados serial, SDA) e 5 (linha de relógio serial, SCL)
  2. Funciona na faixa lógica e de alimentação de 2,7 V a 5,5 V - o Raspberry Pi fornece linhas de alimentação de 3,3 V e 5 V
  3. Era muito barato (<$ 5 USD) - Minhas habilidades de soldagem não são as melhores.


Montagem do circuito


O Breakout Board MCP9808 vem de Adafruit quase todo montado. Este kit específico requer apenas que você solde a tira de cabeçote de 8 pinos incluída na placa de breakout.

Usei um GPIO Breakout e uma placa de ensaio para conectar o Raspberry Pi ao MCP9808; essa abordagem é um pouco mais fácil de gerenciar, corrigir erros de fiação e menos permanente do que soldar o sensor ao Raspberry Pi. Para ler as temperaturas do MCP9808, apenas o pino de alimentação, o aterramento e os pinos I²C SDA e SCL são necessários:

Os pinos opcionais restantes não são usados ​​neste projeto. Eles fornecem soluções alternativas para problemas de endereçamento I²C quando vários dispositivos são usados ​​no mesmo barramento e um pino para alertar se o sensor lê uma temperatura acima ou abaixo de um limite.

O Datastore


Eu sabia que queria apoiar o projeto com um armazenamento de dados persistente. Isso me permitiria capturar pontos de dados e depois analisá-los para tendências gerais, padrões de aquecimento / resfriamento de referência cruzada com eventos climáticos, etc.

Escolhi o InfluxDB por causa de sua linguagem de consulta centrada no tempo e modelo de armazenamento. Instalei o Influx em um Mac Mini antigo (início de 2009 com OSX 10.10) que estava sentado embaixo da minha mesa. A instalação e execução de uma instalação básica do InfluxDB está bem documentada; como eu já uso o Homebrew para gerenciar a maioria das dependências de terceiros e existe uma fórmula para o InfluxDB, a instalação foi concluída emitindo brew install influxdb .

Configure o banco de dados InfluxDB


Com o InfluxDB instalado, configurei um banco de dados para armazenar minhas leituras de temperatura e um usuário de banco de dados para gerenciá-lo. Usei o console da web da minha instância do InfluxDB para fazer isso; por padrão, ele é executado na porta 8083 do host InfluxDB.

Configuração do Raspberry Pi


Agora que o hardware e o armazenamento de dados estão configurados, é necessário um pouco de configuração do sistema operacional para um Raspberry Pi pronto para usar a fim de se comunicar com o MCP9808 pelo barramento I²C.

Habilitar I²C


Por padrão, o Raspberry Pi não carrega os módulos de kernel necessários para usar o barramento I²C. Para habilitar a comunicação I²C pelo GPIO, adicionei as duas linhas a seguir a / etc / modules
  i2c-bcm2708i2c-dev  

Em seguida, reinicie o Raspberry Pi
  sudo reboot  

Após a inicialização do sistema, o sistema deve ser capaz de reconhecer que o MCP9808 está conectado. Usei o i2cdetect ferramenta CLI para fazer isso:
  sudo i2cdetect 1 # canal 1 é o padrão no modelo Raspberry Pi B +  

O software do sensor


Adafruit fornece um wrapper MCP9808 e uma abstração I²C. Usei ambos no script do driver principal para este projeto.

Instalar dependências de compilação

  sudo apt-get updatesudo apt-get install build-essential python-dev python-smbus  

Instale o wrapper Adafruit_Python_MCP9808

  cd ~ / Downloadsgit clone https://github.com/adafruit/Adafruit_Python_MCP9808/blob/master/Adafruit_MCP9808cd Adafruit_MCP9808sudo python setup.py install  

Isso também instalará a abstração I²C, pois o wrapper MCP9808 depende dela.

Ler, relatar, repetir


Em seguida, escrevi um pequeno script Python, poll.py , para ler a partir do MCP9808 em um intervalo e relatar suas descobertas para a instância do banco de dados mcp9808_test InfluxDB.



#! / usr / bin / python import time import Adafruit_MCP9808.MCP9808 as MCP9808 from influxdb import InfluxDBClient # Gera a carga necessária para postar # dados de temperatura no InfluxDB def temperatura_dados (graus_c):return [{'pontos':[[c_to_f (graus_c)]], 'nome':'Leituras de temperatura', 'colunas':['graus_f']}] # Converte representações de temperatura em graus centígrados # para Farenheight def c_to_f (c):return c * 9.0 / 5.0 + 32.0 # Inicializa a cominicação com o MCP9808 # sobre o barramento I2C. sensor =MCP9808.MCP9808 () sensor.begin () # Define o intervalo no qual a lógica de captura # ocorrerá capture_interval =60.0 # A cada 60 segundos # Estabelece uma conexão com a instância mcp9808_test # InfluxDB influxClient =InfluxDBClient (' ', 8086,' mcp9808 ',' ',' mcp9808_test ') # Ler, Reportar, Repetir enquanto Verdadeiro:temp =sensor.readTempC () imprimir "Temperatura {0:0.3} F" .format ( c_to_f (temp)) influxClient.write_points (temperatura_data (temp)) time.sleep (capture_interval)

Agora ele pode ser executado usando o seguinte comando; observe que o script precisa ser executado como root usuário do Raspberry Pi para interagir com o GPIO.
  sudo python  /poll.py  

Para todos


Horray! Tudo estava funcionando ... até que eu liguei / desliguei o powerstip embaixo da minha mesa. Nesse ponto, percebi que queria garantir que o arquivo poll.py o script funcionou enquanto o Raspberry Pi tinha energia. Para conseguir isso, usei o supervisor de processo runit.



Para mais detalhes:Sensor de temperatura Raspberry Pi

Processo de manufatura

  1. Registrador de temperatura Raspberry Pi
  2. Perfil de temperatura Raspberry Pi usando LabVIEW
  3. Meça temperaturas com um sensor DS18B20 de 1 fio e Raspberry Pi
  4. Monitor de rede de temperatura e umidade Raspberry Pi
  5. Ler a temperatura com DS18B20 | Raspberry Pi 2
  6. Monitoramento de temperatura no Raspberry Pi
  7. Medindo a temperatura com RASPBERRY PI
  8. Biblioteca Python do sensor de temperatura TMP006 usando Raspberry pi,
  9. Sensor de temperatura Python e Raspberry Pi
  10. Estação meteorológica Raspberry Pi