Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Capteur de température Raspberry Pi

Il y a quelques semaines, j'ai acheté un Raspberry Pi. Après avoir lu le Raspberry Pi User Guide d'Eben Upton, en particulier les deux chapitres sur lesquels il focalise son attention sur le GPIO, j'ai eu une idée pour mon premier projet. L'article couvre la première itération d'un projet de surveillance de la température domestique que j'ai mis en place à l'aide d'un Raspberry Pi, d'un MCP9808, d'un ancien Mac Mini (début 2008), d'InfluxDB, de Grafana, d'un peu de Python et de runit.

Le matériel du capteur

Pour ce projet, j'ai choisi d'utiliser la carte de dérivation MCP9808 d'Adafruit - une excellente source de composants, de circuits et d'idées. J'ai choisi cet appareil pour plusieurs raisons :

  1. Il est contrôlé via I²C - Le GPIO de Raspberry Pi prend en charge le bus I²C requis sur les broches 3 (Serial Data Line, SDA) et 5 (Serial Clock Line, SCL)
  2. Il fonctionne dans la plage d'alimentation et de logique de 2,7 V à 5,5 V - le Raspberry Pi fournit des lignes d'alimentation à 3,3 V et 5 V
  3. C'était assez bon marché (<5 $ USD) – Mes compétences en soudure ne sont pas les meilleures.

Assemblage de circuits

La carte de déploiement MCP9808 est expédiée d'Adafruit pour la plupart assemblées. Ce kit particulier nécessite seulement que vous soudiez la bande d'en-tête à 8 broches incluse à la carte de dérivation.

J'ai utilisé un GPIO Breakout et une maquette pour connecter le Raspberry Pi au MCP9808; cette approche est un peu plus facile à gérer, corrige les erreurs de câblage et moins permanente que de souder le capteur au Raspberry Pi. Pour lire les températures du MCP9808, seules la broche d'alimentation, la masse et les broches I²C SDA et SCL sont nécessaires :

Les broches restantes, facultatives, ne sont pas utilisées dans ce projet. Ils fournissent des solutions de contournement pour les problèmes d'adressage I²C lorsque plusieurs appareils sont utilisés sur le même bus et une broche pour alerter si le capteur lit une température supérieure ou inférieure à un seuil.

Le magasin de données

Je savais que je voulais soutenir le projet avec un magasin de données persistant. Cela me permettrait de capturer des points de données et de les analyser plus tard pour des tendances générales, des références croisées de modèles de chauffage/refroidissement avec des événements météorologiques, etc.

J'ai choisi InfluxDB en raison de son langage de requête et de son modèle de stockage centrés sur le temps. J'ai installé Influx sur un ancien Mac Mini (début 2009 avec OSX 10.10) que j'avais assis sous mon bureau. L'installation et l'exécution d'une installation de base d'InfluxDB sont bien documentées ; comme j'utilise déjà Homebrew pour gérer la plupart de mes dépendances tierces et qu'une formule pour InfluxDB existe, l'installation a été terminée en émettant brew install influxdb .

Configurer la base de données InfluxDB

Avec InfluxDB installé, j'ai configuré une base de données pour stocker mes lectures de température et un utilisateur de base de données pour la gérer. J'ai utilisé la console Web de mon instance InfluxDB pour ce faire ; par défaut, il fonctionne sur le port 8083 de l'hôte InfluxDB.

Configuration Raspberry Pi

Maintenant que le matériel et la banque de données sont configurés, un peu de configuration du système d'exploitation est nécessaire pour un Raspberry Pi prêt à l'emploi afin de communiquer avec le MCP9808 via le bus I²C.

Activer I²C

Par défaut, le Raspberry Pi ne charge pas les modules du noyau requis pour utiliser le bus I²C. Pour activer la communication I²C sur le GPIO, j'ai ajouté les deux lignes suivantes à /etc/modules

i2c-bcm2708i2c-dev 

Redémarrez ensuite le Raspberry Pi

redémarrage sudo 

Une fois le système initialisé, le système devrait être capable de reconnaître que le MCP9808 est connecté. J'ai utilisé le i2cdetect outil cli pour le faire :

sudo i2cdetect 1 # le canal 1 est la valeur par défaut sur le modèle Raspberry Pi B+ 

Le logiciel du capteur

Adafruit fournit un wrapper MCP9808 et une abstraction I²C. J'ai utilisé les deux dans le script du pilote principal pour ce projet.

Installer les dépendances de build

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

Installez le wrapper Adafruit_Python_MCP9808

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

Cela installera également l'abstraction I²C car le wrapper MCP9808 en dépend.

Lire, signaler, répéter

Ensuite, j'ai écrit un petit script python, poll.py , pour lire à partir du MCP9808 sur un intervalle et rapporter ses résultats à l'instance de base de données mcp9808_test InfluxDB.

#!/usr/bin/python import time import Adafruit_MCP9808.MCP9808 as MCP9808 from influxdb import InfluxDBClient # Génère la charge utile nécessaire pour publier # données de température dans InfluxDB def temperature_data(degrees_c):return [ { 'points':[[c_to_f(degrees_c)]], 'name':'Temperature Readings', 'columns':['degrees_f']}] # Convertit les représentations de température en degrés Celsius # en Farenheight def c_to_f(c):return c * 9.0 / 5.0 + 32.0 # Initialise la communication avec le MCP9808 # sur le bus I2C. sensor =MCP9808.MCP9808() sensor.begin() # Définit l'intervalle sur lequel la logique de capture # se produira capture_interval =60.0 # Toutes les 60 secondes # Établit une connexion au mcp9808_test # InfluxDB instance influxClient =InfluxDBClient('', 8086, 'mcp9808', '', 'mcp9808_test') # Lire, Rapporter, Répéter tant que True :temp =sensor.readTempC() print "Temperature {0:0.3} F".format( c_to_f(temp)) influxClient.write_points(temperature_data(temp)) time.sleep(capture_interval)

Maintenant, il peut être exécuté à l'aide de la commande suivante ; notez que le script doit être exécuté en tant que root utilisateur du Raspberry Pi afin d'interagir avec le GPIO.

sudo python /poll.py 

For-ev-er

Horray ! Tout était opérationnel… jusqu'à ce que j'appuie sur l'interrupteur marche/arrêt du powerstip sous mon bureau. À ce stade, j'ai réalisé que je voulais m'assurer que le poll.py le script a fonctionné tant que le Raspberry Pi était alimenté. Pour ce faire, j'ai utilisé le superviseur de processus runit.

Pour plus de détails :Capteur de température Raspberry Pi


Processus de fabrication

  1. Enregistreur de température Raspberry Pi
  2. Profil de température Raspberry Pi avec LabVIEW
  3. Mesure des températures avec un capteur DS18B20 1 fil et Raspberry Pi
  4. Moniteur réseau de température et d'humidité Raspberry Pi
  5. Lire la température avec DS18B20 | Raspberry Pi 2
  6. Surveillance de la température sur le Raspberry Pi
  7. Mesure de la température avec RASPBERRY PI
  8. Bibliothèque Python du capteur de température TMP006 utilisant Raspberry pi,
  9. Capteur de température Python et Raspberry Pi