[PYTHON] Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient

La température et l'humidité ont été mesurées avec des capteurs appelés Raspberry Pi3 et HDC1000, et envoyées au service de visualisation de données IoT "Ambient" pour visualisation (graphique). Le programme a été écrit en Python.

RaspberryPi_hdc1000

Accéder au HDC1000 depuis Raspberry Pi 3 avec Python

Connexion entre Raspberry Pi 3 et HDC1000

Le HDC1000 est une puce de capteur qui mesure la température et l'humidité. Il est accessible via une interface appelée I2C. Cette fois, j'ai utilisé le ["module capteur de température / humidité HDC1000"] d'Akizuki Denshi (http://akizukidenshi.com/catalog/g/gM-08775/) sur lequel ce HDC1000 est monté.

Connectez le Raspberry Pi 3 et le HDC1000 comme suit.

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

Préparation du Raspberry Pi 3

Connectez Raspberry Pi 3 au WiFi en vous référant à Jusqu'à ce que vous achetiez Raspberry Pi 3 et que vous vous connectiez au WiFi et SSH avec Mac.

Ensuite, activez I2C en vous reportant à Comment activer I2C sur Raspberry Pi (version 2015). Je vais. HDC1000 a été détecté à l'adresse 0x40 comme suit:

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: -- -- -- -- -- -- -- --

J'ai décidé d'écrire le programme en Python, j'ai donc installé un module appelé WiringPi for Python qui accède à I2C avec Python.

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

Cela construira et installera Python. La version que j'ai construite était la 2.32.1.

Module HDC1000 pour Python

J'ai écrit un module pour accéder au HDC1000. La méthode init ressemble à ceci.

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)
        #Définir le MODE d'enregistrement de configuration=0 Lire la température et l'humidité individuellement

Lorsque le bit Mode du registre de configuration (0x02) est réglé sur 0, 16 bits de température et d'humidité sont lus individuellement, et lorsqu'il est réglé sur 1, la température et l'humidité sont lues en tant que données 32 bits à la fois. Cette fois, je l'ai lu individuellement. À propos, dans la bibliothèque I2C de Wiringpi, il semble que les octets supérieur et inférieur soient lus et écrits à l'envers. Le bit Mode de HDC1000 est le bit 12 lorsque le bit le moins significatif est 0, et lorsqu'il est mis à 1, il devient 0x1000 à 16 bits, mais lors de l'écriture avec la bibliothèque I2C, 0x0010 est écrit.

La méthode pour obtenir la température ressemble à ceci.

    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

Le HDC1000 commencera à mesurer la température lorsque vous écrivez quelque chose dans le registre 0x00, la broche RDY sera HIGH (1) et lorsque la mesure sera terminée, elle sera LOW (0). En Python, writeReg8 () écrit 0x00 pour enregistrer 0x00 et attend que la broche RDY devienne 0 dans l'instruction while suivante. Lorsque la broche RDY devient 0, le registre 0x00 est lu, mais les données ne peuvent pas être lues par readReg8 () ou readReg16 () de la bibliothèque I2C de câblagepi. Au lieu de cela, les données sont lues en lisant 2 octets avec la fonction os.read (). A pu être lu.

L'utilisation est comme ça. Créez une instance en spécifiant l'adresse I2C (0x40) du HDC1000 et le numéro de broche (7) de la broche RDY, et lisez la température et l'humidité avec getTemp () et getHumid ().

import hdc1000

hdc1000 = hdc1000.Hdc1000(0x40, 7)

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

Envoyer des données de Raspberry Pi 3 vers Ambient pour visualisation

Ambient est un service cloud IoT qui reçoit, stocke et visualise (graphiques) les données envoyées à partir de micro-ordinateurs.

Ambient structure

Il existe une bibliothèque C pour Arduino, une bibliothèque C pour mbed, une bibliothèque node.js, un nœud Node-RED comme SDK pour envoyer des données à Ambient, mais en plus de cela, j'ai créé une bibliothèque Python.

Installation de la bibliothèque Ambient Python

La bibliothèque Python d'Ambient a été publiée sur Github. Vous pouvez installer la bibliothèque depuis Github comme suit: L'exemple a été exécuté sur un Raspberry Pi 3, mais vous pouvez également l'installer et l'utiliser sur Python sur votre Mac.

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

pi$ pip freeze | grep ambient
ambient==0.1.0

Comment utiliser en Python

import ambient

ambi = ambient.Ambient(100, "your_writeKey") #Remplacez par votre identifiant de chaîne, écrivez la clé

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

Tout d'abord, importez la bibliothèque ambiante, créez une instance en spécifiant l'ID de canal et la clé d'écriture pour envoyer les données, puis envoyez les données avec la méthode send (). Les données sont transmises dans le format de dictionnaire ci-dessus. La clé spécifie l'un de "d1" à "d8".

Lorsque Ambient reçoit des données, il accumule les données avec un horodatage au moment de la réception et les trace en temps réel. Par exemple, si vous envoyez la température et l'humidité à des intervalles de 5 minutes, vous pouvez vérifier la transition de la température et de l'humidité au fil du temps dans un graphique comme indiqué ci-dessous.

Ambient chart

Résumé

Nous avons publié une bibliothèque Python pour envoyer des données à Ambient et un exemple de programme pour mesurer la température et l'humidité avec HDC1000 sur Github.

Recommended Posts

Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Raspberry + am2302 Mesure la température et l'humidité avec un capteur de température et d'humidité
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Mesurez la température, l'humidité, etc. avec SensorTag et envoyez-le à Ambient via Raspberry Pi 3 pour le représenter graphiquement Partie 2
Mesurez et comparez les températures avec Raspberry Pi et générez automatiquement des graphiques
Mesurer la température du processeur de Raspeye avec Python
Production de système de contrôle de température avec tarte aux framboises et ESP32 (1)
Mesurer la force du signal SIM avec Raspberry Pi
Surveillance des animaux avec Rekognition et Raspberry pi
Créez facilement un TweetBot qui vous informe de la température et de l'humidité avec Raspberry Pi + DHT11.
Envoyez la température, l'humidité, etc. mesurées par SensorTag à Ambient via Raspberry Pi 3 et tracez-les.
[Python + PHP] Créez un moniteur de température / humidité / pression avec Raspberry Pi
Production d'un système de contrôle de température avec tarte aux framboises et ESP32 (2) Production d'un appareil de transmission
MQTT Radicon Car avec Arduino et Raspberry
GPGPU avec Raspberry Pi
DigitalSignage avec Raspberry Pi
Création d'un système de contrôle de température avec tarte aux framboises et ESP32 (3) Réception d'un fichier Python
Apprentissage automatique avec Raspberry Pi 4 et Coral USB Accelerator
Visualisons la pièce avec tarte aux râpes, partie 1
Détecter l'état de port du masque avec OpenCV et Raspberry Pi
Mesurez la température et l'humidité intérieures et extérieures et affichez-les sur le tableau de bord
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Résoudre les problèmes liés à l'installation d'OpenCV sur Raspberry Pi et à la capture
Simulez la mesure de température avec Raspberry Pi + Flask + SQLite + Ajax
Plantes Mutter avec Raspberry Pi
Introduction facile au piratage domestique avec Raspberry Pi et discord.py
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
Débutant Python s'ouvre et se ferme avec Raspberry Pi
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
J'ai essayé de connecter Raspeye et conect + avec l'API Web
Utilisez vl53l0x avec RaspberryPi (python)
Commande de servomoteur avec Raspberry Pi
MQTT sur Raspberry Pi et Mac
Communication série avec Raspberry Pi + PySerial
Classique de Noël (?) Éclairage d'un arbre de Noël avec Raspberry Pi et Philips Hue
Notifier LINE de la température corporelle du thermomètre BLE avec la tarte à la râpe # 1
Configuration du système d'exploitation avec Raspberry Pi Imager
Avertir LINE de la température corporelle du thermomètre BLE avec la tarte à la râpe n ° 2
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
Essayez L Chika avec raspberrypi
Faire une boussole d'affichage kanji avec Raspberry Pi et Sense Hat
Construire un serveur VPN avec Raspberry Pie
Affichage graphique de la consommation électrique des ménages avec 3GPI et Raspeye
Essayez de déplacer 3 servos avec Raspeye
Utiliser une webcam avec Raspberry Pi
Créez un convertisseur Ethernet LAN sans fil et un routeur simple avec Raspberry Pi
Acquérir la valeur du capteur de Grove Pi + avec Raspberry Pi et la stocker dans Kintone
Application de notification de message Rabbit MQ avec Growl en Python ~ avec Raspeye et Julius ~
Bonjour le monde avec Raspberry Pi + Minecraft Pi Edition
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Essayez de pêcher le Wakasagi avec Raspberry Pi
Programmation normale avec la programmation Node-RED avec Raspberry Pi 3
Capteur humain amélioré fabriqué avec Raspberry Pi
Essayez la détection d'objets avec Raspberry Pi 4 + Coral
Exécuter le servomoteur SG-90 avec Raspberry Pi