Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sensor de temperatura Raspberry Pi

Hace unas semanas compré una Raspberry Pi. Después de leer la Guía del usuario de Raspberry Pi de Eben Upton, en particular los dos capítulos en los que centra su atención en el GPIO, tuve una idea para mi primer proyecto. La publicación cubre la primera iteración de un proyecto de monitoreo de temperatura en el hogar que armé usando una Raspberry Pi, un MCP9808, una vieja Mac Mini (principios de 2008), InfluxDB, Grafana, un poco de Python y runit.

El hardware del sensor

Para este proyecto, elegí utilizar la placa de conexión MCP9808 de Adafruit, una excelente fuente de componentes, circuitos e ideas. Elegí esta unidad por varias razones:

  1. Se controla a través de I²C:el GPIO de Raspberry Pi admite el bus I²C requerido en los pines 3 (línea de datos en serie, SDA) y 5 (línea de reloj en serie, SCL)
  2. Funciona en el rango lógico y de potencia de 2,7 V a 5,5 V; la Raspberry Pi proporciona líneas eléctricas de 3,3 V y 5 V
  3. Era bastante barato (<$ 5 USD):mis habilidades de soldadura no son las mejores.

Asamblea de circuito

La placa de ruptura MCP9808 se envía desde Adafruit en su mayoría ensamblada. Este kit en particular solo requiere que suelde la tira de cabezal de 8 pines incluida a la placa de conexión.

Usé un GPIO Breakout y una placa para conectar la Raspberry Pi al MCP9808; este enfoque es un poco más fácil de administrar, corrige errores de cableado y menos permanente que soldar el sensor a la Raspberry Pi. Para leer las temperaturas del MCP9808, solo se requieren el pin de alimentación, tierra y los pines I²C SDA y SCL:

Los pines restantes, opcionales, no se utilizan en este proyecto. Proporcionan soluciones para problemas de direccionamiento I²C cuando se utilizan varios dispositivos en el mismo bus y un pin para alertar si el sensor lee una temperatura por encima o por debajo de un umbral.

El almacén de datos

Sabía que quería respaldar el proyecto con un almacén de datos persistente. Esto me permitiría capturar puntos de datos y luego analizarlos en busca de tendencias generales, patrones de referencia cruzada de calentamiento / enfriamiento con eventos climáticos, etc.

Elegí InfluxDB por su lenguaje de consulta centrado en el tiempo y su modelo de almacenamiento. Instalé Influx en una vieja Mac Mini (principios de 2009 con OSX 10.10) que tenía sentada debajo de mi escritorio. La puesta en marcha de una instalación básica de InfluxDB está bien documentada; dado que ya uso Homebrew para administrar la mayoría de mis dependencias de terceros y existe una fórmula para InfluxDB, la instalación se completó emitiendo brew install influxdb .

Configure la base de datos de InfluxDB

Con InfluxDB instalado, configuro una base de datos para almacenar mis lecturas de temperatura y un usuario de la base de datos para administrarla. Usé la consola web de mi instancia de InfluxDB para hacer esto; por defecto se ejecuta en el puerto 8083 del host InfluxDB.

Configuración de Raspberry Pi

Ahora que el hardware y el almacén de datos están configurados, se necesita un poco de configuración del sistema operativo para una Raspberry Pi lista para usar para comunicarse con el MCP9808 a través del bus I²C.

Habilitar I²C

De forma predeterminada, la Raspberry Pi no carga los módulos del kernel necesarios para utilizar el bus I²C. Para habilitar la comunicación I²C a través de GPIO, agregué las siguientes dos líneas a / etc / modules

  i2c-bcm2708i2c-dev  

Luego reinicia la Raspberry Pi

  reiniciar sudo  

Una vez que el sistema se inicia, el sistema debería poder reconocer que el MCP9808 está conectado. Usé el i2cdetect herramienta cli para hacerlo:

  sudo i2cdetect 1 # el canal 1 es el predeterminado en el modelo Raspberry Pi B +  

El software del sensor

Adafruit proporciona un contenedor MCP9808 y una abstracción I²C. Hice uso de ambos en el script del controlador principal para este proyecto.

Instalar dependencias de compilación

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

Instala el contenedor Adafruit_Python_MCP9808

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

Esto también instalará la abstracción I²C ya que el contenedor MCP9808 depende de ella.

Leer, informar, repetir

A continuación, escribí un pequeño script en Python, poll.py , para leer del MCP9808 en un intervalo e informar sus hallazgos a la instancia de base de datos mcp9808_test InfluxDB.

#! / usr / bin / python import time import Adafruit_MCP9808.MCP9808 as MCP9808 from influxdb import InfluxDBClient # Genera la carga útil necesaria para publicar # datos de temperatura en InfluxDB def temperatura_data (grados_c):return [{'puntos':[[c_to_f (grados_c)]], 'nombre':'Lecturas de temperatura', 'columnas':['grados_f']}] # Convierte representaciones de temperatura en grados centígrados # a Farenheight def c_to_f (c):return c * 9.0 / 5.0 + 32.0 # Inicializa la comunicación con el MCP9808 # a través del bus I2C. sensor =MCP9808.MCP9808 () sensor.begin () # Define el intervalo en el que ocurrirá la lógica de captura # capture_interval =60.0 # Cada 60 segundos # Establece una conexión con la instancia mcp9808_test # InfluxDB influxClient =InfluxDBClient (' ', 8086,' mcp9808 ',' ',' mcp9808_test ') # Leer, informar, repetir mientras es verdadero:temp =sensor.readTempC () print "Temperature {0:0.3} F" .format ( c_to_f (temp)) influxClient.write_points (temperature_data (temp)) time.sleep (capture_interval)

Ahora se puede ejecutar con el siguiente comando; tenga en cuenta que el script debe ejecutarse como root usuario de la Raspberry Pi para interactuar con el GPIO.

  sudo python  /poll.py  

For-ever-er

¡Horray! Todo estaba funcionando ... hasta que le di una patada al interruptor de encendido / apagado del powerstip debajo de mi escritorio. En este punto me di cuenta de que quería asegurarme de que el poll.py El script se ejecutó mientras la Raspberry Pi tuviera energía. Para lograr esto, utilicé el supervisor de procesos runit.

Para más detalles:Sensor de temperatura Raspberry Pi


Proceso de manufactura

  1. Registrador de temperatura Raspberry Pi
  2. Perfil de temperatura de Raspberry Pi usando LabVIEW
  3. Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
  4. Monitor de red de temperatura y humedad Raspberry Pi
  5. Leer temperatura con DS18B20 | Raspberry Pi 2
  6. Monitoreo de temperatura en Raspberry Pi
  7. Medición de temperatura con RASPBERRY PI
  8. Biblioteca Python del sensor de temperatura TMP006 con Raspberry pi,
  9. Sensor de temperatura Python y Raspberry Pi
  10. Estación meteorológica Raspberry Pi
  11. Supervisión de la temperatura con Raspberry Pi