[PYTHON] [Raspberry Pi] Ajouter un thermomètre et un hygromètre

La dernière fois a essayé la conception économe en énergie de l'écran à cristaux liquides. Cette fois, nous ajouterons un thermomètre et un humidimètre pour surveiller la température et l'humidité de la pièce.

Le thermomètre a déjà été incorporé. [Python] Obtenez la température ambiante du capteur de température avec Arduino et affichez-la à l'écran (Partie 1) [Python] Obtenez la température ambiante du capteur de température avec Arduino et affichez-la à l'écran (Partie 2)

Cependant, un humidimètre indépendant était difficile. Il y avait peu de matériel et c'était un peu difficile pour moi, alors Cette fois, je vais essayer de baisser un peu le niveau de difficulté.

Il y avait un capteur de température et d'humidité populaire avec un faible degré de difficulté, alors je vais essayer de l'utiliser. Puisque le thermomètre est un ensemble, le thermomètre précédent sera stocké et nouvellement conçu.

Matériel

--Module capteur de température et d'humidité DHT11 ――Une résistance 10kΩ

C'est le seul matériau. Ajoutez au circuit Arduino que vous avez utilisé la dernière fois. La conception compliquée est déjà intégrée au module, le travail est donc facile.

Création de circuits

La page à laquelle j'ai fait référence cette fois Mesure de la température et de l'humidité avec DHT11 --Arduino --Introduction à l'IoT à partir des bases https://iot.keicode.com/arduino/temperature-dht11.php

Screenshot_20200208[1].png

DHT11 (parties bleu clair) dans la figure ci-dessus est à l'envers. Veuillez noter que ce sera [GND] [NC] [DATA] [VDD] à partir de la gauche.

La sortie est la même 8 broches numérique que la page de référence. Les fils orange et jaune sont 5V et GND est noir. Le schéma de circuit était simple, mais le vrai circuit est devenu un peu encombré.

IMG_20200208_1729.jpg

Après cela, je prévois d'ajouter un manomètre, mais que va-t-il se passer?

Code de programme Arduino

#include <DHT.h>

// Initializing DHT11 sensor
const int PIN_DHT = 8;
DHT dht(PIN_DHT, DHT11);

void setup() {

  //start serial connection
  Serial.begin(9600);

  //configure pin A3 as an input and enable the internal resistor
  pinMode(A3, INPUT);

  // start DHT11 sensor
  dht.begin();

}

void loop() {

  // Whether to display in Fahrenheit
  bool isFahrenheit = false;

  // Get humidity and temperature
  float percentHumidity = dht.readHumidity();
  float temperature = dht.readTemperature(isFahrenheit);

  // Do nothing if not available
  if (isnan(percentHumidity) || isnan(temperature)) {
    return;
  }

  // Get heat index
  float heatIndex = dht.computeHeatIndex(
    temperature,
    percentHumidity,
    isFahrenheit
  );

  //read the photocell value into a variable
  int photocell = analogRead(A3);

  //print out the sensor value in csv format
  String s = "";
  s += String(temperature, 1) + ",";
  s += String(percentHumidity, 1) + ",";
  s += String(heatIndex, 1) + ",";
  s += String(photocell);
  Serial.println(s);

  //delay 2000 ms
  delay(2000);

}

La plupart du code ajouté sert à travailler avec la bibliothèque DHT11. Je veux obtenir la température en degrés Celsius, donc j'ai mis bool isFahrenheit = false;.

De plus, comme le traitement était compliqué, j'ai fait une boucle à 2 secondes d'intervalle. Au cas où.

Il lit le 8 broches numérique et le sort au format CSV, y compris la valeur du capteur d'éclairement précédent.

Ajout de la bibliothèque DHT

Les bibliothèques DHT peuvent être ajoutées à partir du gestionnaire de bibliothèques de l'IDE Arduino. Dans le menu, sélectionnez "Outils-> Gérer la bibliothèque".

DHT sensor library by Adafruit Dans la capture d'écran, j'ai installé la version 1.3.8. Screenshot_20200208[2].png

Adafruit Unified Sensor by Adafruit C'est une bibliothèque commune. À ce stade, la version 1.1.2 est installée. Screenshot_20200208[3].png

Créer une base de données, un utilisateur et une table

À partir de ce moment, les informations du capteur seront écrites dans la base de données.

Étant donné que plusieurs connexions série ne peuvent pas être établies en même temps (Il peut y avoir un moyen, mais comme moyen moins cher) Le programme qui écrit dans la base de données continue de s'exécuter et d'autres programmes partagent des informations en référençant la base de données.

$ mysql -u root -praspberry 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE sensor;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE USER 'sensorpi'@'localhost' IDENTIFIED BY 'raspberry';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON sensor.* TO 'sensorpi'@'localhost';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SELECT user, password, plugin FROM user;
+------------+-------------------------------------------+--------+
| user       | password                                  | plugin |
+------------+-------------------------------------------+--------+
| root       | ***************************************** |        |
| phpmyadmin | ***************************************** |        |
| fxpi       | ***************************************** |        |
| sensorpi   | ***************************************** |        |
+------------+-------------------------------------------+--------+
4 rows in set (0.01 sec)

MariaDB [mysql]> QUIT;
Bye
pi@raspberrypi:~ $ mysql -u sensorpi -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 34
Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> USE sensor;
Database changed
MariaDB [sensor]> CREATE TABLE tbl_serval (time DATETIME,
    -> max_temperature FLOAT, avg_temperature FLOAT, min_temperature FLOAT,
    -> max_humidity FLOAT, avg_humidity FLOAT, min_humidity FLOAT,
    -> max_heatIndex FLOAT, avg_heatIndex FLOAT, min_heatIndex FLOAT,
    -> max_pressure INT, avg_pressure INT, min_pressure INT,
    -> max_photocell INT, avg_photocell INT, min_photocell INT);
Query OK, 0 rows affected (0.05 sec)
article Définir la valeur
Base de données sensor
utilisateur sensorpi
table tbl_serval

La structure de tbl_serval ressemble à ceci. NULL est autorisé pour toutes les colonnes, mais nous l'examinerons bientôt.

serval est une abréviation de SERial VALue.

Nom de colonne Moule NULL La description
time DATETIME Tolérance Temps d'enregistrement
max_temperature FLOAT Tolérance Température (maximum)
avg_temperature FLOAT Tolérance Température (moyenne)
min_temperature FLOAT Tolérance Température (minimum)
max_humidity FLOAT Tolérance Humidité (maximum)
avg_humidity FLOAT Tolérance Humidité (moyenne)
min_humidity FLOAT Tolérance Humidité (minimum)
max_heatIndex FLOAT Tolérance Expérience de la température (maximum)
avg_heatIndex FLOAT Tolérance Expérience de la température (moyenne)
min_heatIndex FLOAT Tolérance Expérience de la température (minimum)
max_pressure INT Tolérance Pression (maximum)
avg_pressure INT Tolérance Pression (moyenne)
min_pressure INT Tolérance Pression (minimum)
max_photocell INT Tolérance Éclairage (maximum)
avg_photocell INT Tolérance Illumination (moyenne)
min_photocell INT Tolérance Éclairage (minimum)

Code de programme Python

Je l'ai corrigé ici et là, donc juste un aperçu. Si vous êtes intéressé par les modifications, GitHub (mySensor) & GitHub (Desktop Clock) Jetez un œil à DesktopClock / commit / 437884c6f55cee7693addb0726ccf4ae81c04269).

--Recevoir et diviser les informations du capteur (format CSV) toutes les 2 secondes --Calculer les valeurs maximale, moyenne et minimale en 1 minute --Écrire dans la base de données

Screenshot_20200208[4].png Il sera bientôt terminé.

Petite histoire

J'avais un mécanisme pour éteindre le rétroéclairage lorsque l'éclairement était de 50 ou moins. Après ce changement, même si la pièce était obscurcie, elle n'a pas disparu immédiatement, et après un certain temps, elle s'est éteinte et la réaction a ralenti. Le redémarrage du programme Python le corrigera, mais après un court instant, il se reproduira.

Suite à la vérification d'Iloilo, il semble que la cause soit le tampon de réception.

main.py


#Vider le tampon de réception
self.ser.flushInput()

Si vous ne le faites pas, vous ne pourrez pas vous synchroniser avec la connexion série. Il semble que la plage de délai augmente avec le temps.

Je ne pense pas que ce soit une bonne idée, mais c'est probablement parce que le retard a disparu.

Recommended Posts

[Raspberry Pi] Ajouter un thermomètre et un hygromètre
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
Fabriquez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 3
Créez un capteur de couleur à l'aide d'une tarte à la râpe et d'une caméra
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
Créez une partition, puis installez le système d'exploitation Raspberry Pi
MQTT sur Raspberry Pi et Mac
Utiliser une webcam avec Raspberry Pi
Fabriquez un incubateur à CO2 simple à l'aide de Raspberry PI et d'un capteur de CO2 (MH-Z14A)
Classique de Noël (?) Éclairage d'un arbre de Noël avec Raspberry Pi et Philips Hue
Faire une boussole d'affichage kanji avec Raspberry Pi et Sense Hat
Surveillance des animaux avec Rekognition et Raspberry pi
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Lancez docker.plone et ajoutez un modèle personnalisé
Faire une minuterie de lavage-séchage avec Raspberry Pi
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Créez un compteur de voiture avec Raspberry Pi
Créez un convertisseur Ethernet LAN sans fil et un routeur simple avec Raspberry Pi
Raspberry Pi 3 x Julius (fichier de lecture et fichier de grammaire)
Construire un environnement Django sur Raspai (MySQL)
Essayez d'utiliser le code QR avec Raspberry Pi
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Compilation croisée de Raspberry Pi et création d'un environnement de développement de débogage à distance avec VS Code
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
MQTT Radicon Car avec Arduino et Raspberry
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
Connexion facile entre Raspberry Pi et AWS IoT
[Pour les débutants] J'ai fait un capteur humain avec Raspberry Pi et notifié LINE!
Créer un système de notification des visiteurs à l'aide de Raspberry Pi
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Exemple de programme de connexion Raspberry Pi et AWS IoT
Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)
Construire un environnement de développement Python sur Raspberry Pi
Contrôlez la lecture de musique sur un smartphone connecté à Raspberry Pi 3 et Bluetooth avec AVRCP
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
Compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --3. Utilisez MySQL
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Apprentissage automatique avec Raspberry Pi 4 et Coral USB Accelerator
Détecter l'état de port du masque avec OpenCV et Raspberry Pi
Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Installation de Docker sur Raspberry Pi et L Chika
Installez pyenv sur Raspberry Pi pour gérer Python
Résoudre les problèmes liés à l'installation d'OpenCV sur Raspberry Pi et à la capture
Un mémorandum lors de la réalisation d'une caméra de surveillance avec Raspeye
Utilisez raspberryPi et Julius (reconnaissance vocale). ③ Création de dictionnaire
Qu'est-ce que Raspberry Pi?
GPGPU avec Raspberry Pi
Créez facilement un TweetBot qui vous informe de la température et de l'humidité avec Raspberry Pi + DHT11.
pigpio sur Raspberry pi
Caméra vidéo Raspberry Pi
Mauvaise connaissance Raspberry Pi
Faisons Raspberry Pi?
DigitalSignage avec Raspberry Pi
Notes de configuration du Raspberry Pi 4
Cython sur Raspberry Pi