Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Raspberry Pi-Temperatursensor

Vor ein paar Wochen habe ich mir einen Raspberry Pi gekauft. Nachdem ich Eben Uptons Raspberry Pi User Guide gelesen hatte, insbesondere die beiden Kapitel, auf die er sich auf den GPIO konzentriert, hatte ich eine Idee für mein erstes Projekt. Der Beitrag behandelt die erste Iteration eines Projekts zur Temperaturüberwachung zu Hause, das ich mit einem Raspberry Pi, einem MCP9808, einem alten Mac Mini (Anfang 2008), InfluxDB, Grafana, ein bisschen Python und Runit zusammengestellt habe.

Die Sensorhardware

Für dieses Projekt habe ich mich für das Breakout Board MCP9808 von Adafruit entschieden – eine hervorragende Quelle für Komponenten, Schaltungen und Ideen. Ich habe mich aus mehreren Gründen für dieses Gerät entschieden:

  1. Es wird über I²C gesteuert – Der GPIO des Raspberry Pi unterstützt den erforderlichen I²C-Bus über die Pins 3 (Serial Data Line, SDA) und 5 (Serial Clock Line, SCL)
  2. Er läuft im Leistungs- und Logikbereich von 2,7V bis 5,5V – der Raspberry Pi bietet Stromleitungen mit 3,3V und 5V
  3. Es war ziemlich günstig (<5 USD) – Meine Lötfähigkeiten sind nicht die besten.

Schaltungsbaugruppe

Das MCP9808 Breakout Board wird von Adafruit größtenteils montiert geliefert. Dieses spezielle Kit erfordert nur, dass Sie die mitgelieferte 8-polige Kopfleiste an die Breakout-Platine löten.

Ich habe einen GPIO-Breakout und ein Steckbrett verwendet, um den Raspberry Pi mit dem MCP9808 zu verbinden; Dieser Ansatz ist etwas einfacher zu handhaben, korrigiert Verdrahtungsfehler und ist weniger dauerhaft als das Löten des Sensors an den Raspberry Pi. Um die Temperaturen vom MCP9808 zu lesen, werden nur der Strom-Pin, die Masse und die I²C-SDA- und SCL-Pins benötigt:

Die restlichen optionalen Pins werden in diesem Projekt nicht verwendet. Sie bieten Problemumgehungen für I²C-Adressierungsprobleme, wenn mehrere Geräte an demselben Bus verwendet werden, und einen Pin zur Warnung, wenn der Sensor eine Temperatur über oder unter einem Schwellenwert misst.

Der Datenspeicher

Ich wusste, dass ich das Projekt mit einem persistenten Datenspeicher unterstützen wollte. Dies würde es mir ermöglichen, Datenpunkte zu erfassen und sie später auf allgemeine Trends, Querverweise auf Heiz-/Kühlmuster mit Wetterereignissen usw. zu analysieren.

Ich habe mich für InfluxDB wegen seiner zeitorientierten Abfragesprache und seines Speichermodells entschieden. Ich habe Influx auf einem alten Mac Mini (Anfang 2009 mit OSX 10.10) installiert, den ich unter meinem Schreibtisch hatte. Es ist gut dokumentiert, eine grundlegende Installation von InfluxDB zum Laufen zu bringen; Da ich bereits Homebrew verwende, um die meisten meiner Abhängigkeiten von Drittanbietern zu verwalten und eine Formel für InfluxDB existiert, wurde die Installation durch die Ausgabe von brew install influxdb abgeschlossen .

Konfigurieren Sie die InfluxDB-Datenbank

Wenn InfluxDB installiert ist, richte ich eine Datenbank zum Speichern meiner Temperaturmesswerte und einen Datenbankbenutzer ein, um sie zu verwalten. Ich habe dazu die Webkonsole meiner InfluxDB-Instanz verwendet. standardmäßig läuft es auf Port 8083 des InfluxDB-Hosts.

Raspberry Pi-Konfiguration

Nachdem die Hardware und der Datenspeicher eingerichtet sind, muss ein gebrauchsfertiger Raspberry Pi noch ein wenig konfiguriert werden, um mit dem MCP9808 über den I²C-Bus zu kommunizieren.

I²C aktivieren

Standardmäßig lädt der Raspberry Pi nicht die erforderlichen Kernel-Module, um den I²C-Bus zu verwenden. Um die I²C-Kommunikation über den GPIO zu ermöglichen, habe ich die folgenden zwei Zeilen zu /etc/modules . hinzugefügt

i2c-bcm2708i2c-dev 

Dann den Raspberry Pi neu starten

sudo reboot 

Nach der Systeminitialisierung sollte das System erkennen können, dass der MCP9808 angeschlossen ist. Ich habe den i2cdetect verwendet cli-Tool dazu:

sudo i2cdetect 1 # Kanal 1 ist die Standardeinstellung beim Raspberry Pi B+-Modell 

Die Sensorsoftware

Adafruit bietet einen MCP9808-Wrapper und eine I²C-Abstraktion. Ich habe beides im Haupttreiberskript für dieses Projekt verwendet.

Build-Abhängigkeiten installieren

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

Installieren Sie den Adafruit_Python_MCP9808-Wrapper

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

Dadurch wird auch die I²C-Abstraktion installiert, da der MCP9808-Wrapper davon abhängt.

Lesen, melden, wiederholen

Als nächstes habe ich ein kleines Python-Skript geschrieben, poll.py , um in Intervallen vom MCP9808 zu lesen und seine Ergebnisse an die mcp9808_test InfluxDB-Datenbankinstanz zu melden.

#!/usr/bin/python import time import Adafruit_MCP9808.MCP9808 als MCP9808 from influxdb import InfluxDBClient # Erzeugt die notwendige Nutzlast zum # Posten von Temperaturdaten in die InfluxDB def temperature_data(degrees_c):return [ { 'points':[[c_to_f(degrees_c)]], 'name':'Temperature Readings', 'columns':['degrees_f']}] # Konvertiert Temperaturdarstellungen in Celsius # in Farenheight def c_to_f(c):return c * 9.0 / 5.0 + 32.0 # Initialisiert die Kommunikation mit dem MCP9808 # über den I2C-Bus. sensor =MCP9808.MCP9808() sensor.begin() # Definiert das Intervall, in dem die Erfassungslogik # ausgeführt wird capture_interval =60.0 # Alle 60 Sekunden # Stellt eine Verbindung zum mcp9808_test her # InfluxDB-Instanz influxClient =InfluxDBClient('', 8086, 'mcp9808', '', 'mcp9808_test') # Lesen, Berichten, Wiederholen während True:temp =sensor.readTempC() print "Temperatur {0:0.3} F".format( c_to_f(temp)) influxClient.write_points(temperature_data(temp)) time.sleep(capture_interval)

Jetzt kann es mit dem folgenden Befehl ausgeführt werden; Beachten Sie, dass das Skript als root ausgeführt werden muss Benutzer des Raspberry Pi, um mit dem GPIO zu interagieren.

sudo python /poll.py 

For-ever-er

Hurra! Alles lief und lief… bis ich den Ein-/Ausschalter des Powerstips unter meinem Schreibtisch betätigte. An diesem Punkt wurde mir klar, dass ich sicherstellen wollte, dass die poll.py Skript lief, solange der Raspberry Pi Strom hatte. Um dies zu erreichen, habe ich den runit Process Supervisor verwendet.

Für weitere Details:Raspberry Pi Temperatursensor


Herstellungsprozess

  1. Himbeer-Pi-Temperaturlogger
  2. Raspberry Pi-Temperaturprofil mit LabVIEW
  3. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  4. Raspberry Pi Temperatur- und Luftfeuchtigkeits-Netzwerkmonitor
  5. Temperatur lesen mit DS18B20 | Raspberry Pi 2
  6. Temperaturüberwachung auf dem Raspberry Pi
  7. Temperaturmessung mit RASPBERRY PI
  8. TMP006-Temperatursensor-Python-Bibliothek mit Raspberry Pi,
  9. Python- und Raspberry Pi-Temperatursensor
  10. Raspberry Pi Wetterstation