[PYTHON] Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient

Temperatur und Luftfeuchtigkeit wurden mit Sensoren namens Raspberry Pi3 und HDC1000 gemessen und zur Visualisierung (grafische Darstellung) an IoT-Datenvisualisierungsdienst "Ambient" gesendet. Das Programm wurde in Python geschrieben.

RaspberryPi_hdc1000

Zugriff auf den HDC1000 von Raspberry Pi 3 mit Python

Verbindung zwischen Raspberry Pi 3 und HDC1000

HDC1000 ist ein Sensorchip, der Temperatur und Luftfeuchtigkeit misst. Der Zugriff erfolgt über eine Schnittstelle namens I2C. Dieses Mal habe ich das "HDC1000 Temperatur- / Feuchtigkeitssensormodul" von Akizuki Denshi verwendet, auf dem dieser HDC1000 montiert ist.

Schließen Sie den Raspberry Pi 3 und den HDC1000 wie folgt an.

Raspberry Pi HDC1000
01(3.3v) 1(+V)
03(GPIO02) 2(SDA)
05(GPIO03) 3(SCL)
07(GPIO04) 4(RDY)
06(Ground) 5(GND)

Raspberry Pi 3 vorbereiten

Verbinden Sie Raspberry Pi 3 mit WiFi unter Bis Sie Raspberry Pi 3 kaufen und mit Mac eine Verbindung zu WiFi und SSH herstellen.

Aktivieren Sie als Nächstes I2C unter Aktivieren von I2C auf Raspberry Pi (Version 2015). Ich werde. HDC1000 wurde an der Adresse 0x40 wie folgt erkannt:

pi$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Ich habe beschlossen, das Programm in Python zu schreiben, und deshalb ein Modul namens WiringPi for Python installiert, das mit Python auf I2C zugreift.

pi$ sudo apt-get install python-dev python-setuptools swig

pi$ git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
pi$ cd WiringPi-Python
pi$ ./build.sh

pi$ pip freeze | grep wir
wiringpi==2.32.1

Dadurch wird Python erstellt und installiert. Die Version, die ich gebaut habe, war 2.32.1.

HDC1000-Modul für Python

Ich habe ein Modul für den Zugriff auf die HDC1000 geschrieben. Die init -Methode sieht folgendermaßen aus.

import wiringpi
import os
import struct

class Hdc1000:
    def __init__(self, addr, rdyPin):
        wiringpi.wiringPiSetup() #setup wiringpi

        self.i2c = wiringpi.I2C() #get I2C
        self.dev = self.i2c.setup(addr) #setup I2C device
        self.rdy = rdyPin

        wiringpi.pinMode(self.rdy, 0) # set ready pin to INPUT

        self.i2c.writeReg16(self.dev, 0x02, 0x0000)
        #Stellen Sie Config reg MODE ein=0 Temperatur und Luftfeuchtigkeit einzeln ablesen

Wenn das Modusbit des Konfigurationsregisters (0x02) auf 0 gesetzt ist, werden 16 Bit Temperatur und Luftfeuchtigkeit einzeln gelesen, und wenn es auf 1 gesetzt ist, werden Temperatur und Luftfeuchtigkeit gleichzeitig als 32-Bit-Daten gelesen. Diesmal habe ich es einzeln gelesen. Übrigens scheinen in der I2C-Bibliothek von wiringpi die oberen und unteren Bytes verkehrt herum gelesen und geschrieben zu werden. Das Modusbit von HDC1000 ist Bit 12, wenn das niedrigstwertige Bit 0 ist, und wenn dies auf 1 gesetzt ist, wird es bei 16 Bit zu 0x1000, aber beim Schreiben mit der I2C-Bibliothek wird 0x0010 geschrieben.

Die Methode zum Ermitteln der Temperatur sieht folgendermaßen aus.

    def getTemp(self):
        self.i2c.writeReg8(self.dev, 0x00, 0x00)

        while wiringpi.digitalRead(self.rdy) == 1:
            pass

        data = struct.unpack('BB', os.read(self.dev, 2))
        temp = (data[0] << 8) | data[1]
        temp = temp * 165.0 / 65536.0 - 40.0
        return temp

Der HDC1000 beginnt mit der Temperaturmessung, wenn Sie etwas in Register 0x00 schreiben, der RDY-Pin ist HIGH (1) und wenn die Messung abgeschlossen ist, ist er LOW (0). In Python schreibt writeReg8 () 0x00, um 0x00 zu registrieren, und wartet, bis der RDY-Pin in der nächsten while-Anweisung 0 wird. Wenn der RDY-Pin 0 wird, wird das Register 0x00 gelesen, aber die Daten können nicht von readReg8 () oder readReg16 () der I2C-Bibliothek von wiringpi gelesen werden. Stattdessen werden die Daten durch Lesen von 2 Bytes mit der Funktion os.read () gelesen. Konnte gelesen werden.

Die Verwendung ist wie folgt. Erstellen Sie eine Instanz, indem Sie die I2C-Adresse (0x40) des HDC1000 und die Pin-Nummer (7) des RDY-Pins angeben und Temperatur und Luftfeuchtigkeit mit getTemp () und getHumid () ablesen.

import hdc1000

hdc1000 = hdc1000.Hdc1000(0x40, 7)

temp = hdc1000.getTemp()
humid = hdc1000.getHumid()
print 'temp: %.1f, humid: %.1f' % (temp, humid)

Senden Sie Daten von Raspberry Pi 3 zur Visualisierung an Ambient

Ambient ist ein IoT-Cloud-Dienst, der von Mikrocomputern gesendete Daten empfängt, speichert und visualisiert (Grafiken).

Ambient structure

Es gibt eine C-Bibliothek für Arduino, eine C-Bibliothek für mbed, eine node.js-Bibliothek und einen Node-RED-Knoten als SDK zum Senden von Daten an Ambient. Außerdem habe ich eine Python-Bibliothek erstellt.

Installieren der Ambient Python-Bibliothek

Die Python-Bibliothek von Ambient wurde auf Github veröffentlicht. Sie können die Bibliothek von Github wie folgt installieren: Das Beispiel wurde auf einem Raspberry Pi 3 ausgeführt, aber Sie können es auch auf Python auf Ihrem Mac installieren und verwenden.

pi$ sudo pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git

pi$ pip freeze | grep ambient
ambient==0.1.0

Verwendung in Python

import ambient

ambi = ambient.Ambient(100, "your_writeKey") #Ersetzen Sie durch Ihre Kanal-ID, schreiben Sie den Schlüssel

r = ambi.send({"d1": temp, "d2": humid})

Importieren Sie zunächst die Umgebungsbibliothek, erstellen Sie eine Instanz, indem Sie die Kanal-ID und den Schreibschlüssel zum Senden der Daten angeben, und senden Sie die Daten mit der Methode send (). Die Daten werden im obigen Wörterbuchformat übergeben. Der Schlüssel gibt einen von "d1" bis "d8" an.

Wenn Ambient Daten empfängt, werden die Daten zum Zeitpunkt des Empfangs mit einem Zeitstempel akkumuliert und in Echtzeit grafisch dargestellt. Wenn Sie beispielsweise Temperatur und Luftfeuchtigkeit in Intervallen von 5 Minuten senden, können Sie den zeitlichen Übergang von Temperatur und Luftfeuchtigkeit in einem Diagramm wie unten gezeigt überprüfen.

Ambient chart

Zusammenfassung

Wir haben eine Python-Bibliothek zum Senden von Daten an Ambient und ein Beispielprogramm zum Messen von Temperatur und Luftfeuchtigkeit mit HDC1000 auf Github veröffentlicht.

Recommended Posts

Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Himbeere + am2302 Temperatur und Luftfeuchtigkeit mit Temperatur- und Feuchtigkeitssensor messen
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Messen Sie Temperatur, Luftfeuchtigkeit usw. mit SensorTag und senden Sie es über Raspberry Pi 3 an Ambient, um es Teil 2 grafisch darzustellen
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
Messen Sie die CPU-Temperatur von Raspeye mit Python
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Messen Sie die SIM-Signalstärke mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Senden Sie die mit SensorTag gemessene Temperatur, Luftfeuchtigkeit usw. über Raspberry Pi 3 an Ambient und zeichnen Sie sie grafisch auf.
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
MQTT Radicon Car mit Arduino und Himbeere
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie die Temperatur und Luftfeuchtigkeit im Innen- und Außenbereich und zeigen Sie sie auf dem Armaturenbrett an
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Simulieren Sie die Temperaturmessung mit Raspberry Pi + Flask + SQLite + Ajax
Mutter pflanzt mit Raspberry Pi
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Python-Anfänger öffnet und schließt die ineinandergreifende Kamera mit Raspberry Pi
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
MQTT auf Raspberry Pi und Mac
Serielle Kommunikation mit Raspberry Pi + PySerial
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 1
Betriebssystem-Setup mit Raspberry Pi Imager
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 2
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Probieren Sie L Chika mit Himbeerpi
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Aufbau eines VPN-Servers mit Raspberry Pie
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Rabbit MQ Nachrichtenbenachrichtigungs-App mit Growl in Python ~ mit Raspeye und Julius ~
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verbesserter menschlicher Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Den Servomotor SG-90 mit Himbeer-Pi betreiben