[PYTHON] [Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu

Letztes Mal hat versucht, Energie für die Flüssigkristallanzeige zu sparen. Dieses Mal werden wir ein Thermometer und ein Feuchtigkeitsmessgerät hinzufügen, um die Temperatur und Luftfeuchtigkeit des Raums zu überwachen.

Das Thermometer wurde bereits eingebaut. [Python] Ermitteln Sie die Raumtemperatur mit Arduino vom Temperatursensor und zeigen Sie sie auf dem Bildschirm an (Teil 1) [Python] Ermitteln Sie die Raumtemperatur mit Arduino vom Temperatursensor und zeigen Sie sie auf dem Bildschirm an (Teil 2)

Ein unabhängiges Feuchtigkeitsmessgerät war jedoch schwierig. Es gab nur wenige Materialien und es war ein bisschen schwierig für mich, also Dieses Mal werde ich versuchen, den Schwierigkeitsgrad ein wenig zu senken.

Es gab einen beliebten Temperatur- und Feuchtigkeitssensor mit einem geringen Schwierigkeitsgrad, daher werde ich versuchen, ihn zu verwenden. Da das Thermometer ein Set ist, wird das vorherige Thermometer gespeichert und neu entworfen.

Material

Dies ist das einzige Material. Fügen Sie der Arduino-Schaltung hinzu, die Sie zuletzt verwendet haben. Das komplizierte Design ist bereits in das Modul integriert, sodass die Arbeit einfach ist.

Schaltungserstellung

Die Seite, auf die ich mich diesmal bezog Temperatur- und Feuchtigkeitsmessung mit DHT11 --Arduino - Einführung in das Internet der Dinge von Grund auf https://iot.keicode.com/arduino/temperature-dht11.php

Screenshot_20200208[1].png

DHT11 (hellblaue Teile) in der obigen Abbildung steht auf dem Kopf. Bitte beachten Sie, dass es von links [GND] [NC] [DATA] [VDD] ist.

Der Ausgang ist der gleiche digitale 8-Pin wie die Referenzseite. Die orangefarbenen und gelben Drähte sind 5 V und GND ist schwarz. Der Schaltplan war einfach, aber die reale Schaltung wurde ein wenig überfüllt.

IMG_20200208_1729.jpg

Danach habe ich vor, ein Manometer hinzuzufügen, aber was wird passieren?

Arduino-Programmcode

#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);

}

Der größte Teil des hinzugefügten Codes ist für die Arbeit mit der DHT11-Bibliothek vorgesehen. Ich möchte die Temperatur in Grad Celsius erhalten, also setze ich "bool isFahrenheit = false;".

Da die Verarbeitung kompliziert war, habe ich auch eine Schleife mit Intervallen von 2 Sekunden erstellt. Nur für den Fall.

Es liest vom digitalen 8-Pin und gibt ihn im CSV-Format einschließlich des Werts des vorherigen Beleuchtungsstärkesensors aus.

Hinzufügung der DHT-Bibliothek

DHT-Bibliotheken können über den Library Manager der Arduino IDE hinzugefügt werden. Wählen Sie im Menü "Extras-> Bibliothek verwalten".

DHT sensor library by Adafruit Im Screenshot habe ich Ver.1.3.8 installiert. Screenshot_20200208[2].png

Adafruit Unified Sensor by Adafruit Es ist eine gemeinsame Bibliothek. Zu diesem Zeitpunkt ist Ver.1.1.2 installiert. Screenshot_20200208[3].png

Erstellen Sie eine Datenbank, einen Benutzer und eine Tabelle

Ab diesem Zeitpunkt werden die Sensorinformationen in die Datenbank geschrieben.

Da nicht mehrere serielle Verbindungen gleichzeitig hergestellt werden können (Es mag einen Weg geben, aber einen billigeren Weg) Das Programm, das in die Datenbank schreibt, wird weiterhin ausgeführt, und andere Programme teilen Informationen, indem sie auf die Datenbank verweisen.

$ 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)
Artikel Wert einstellen
Datenbank sensor
Nutzer sensorpi
Tabelle tbl_serval

Die Struktur von tbl_serval sieht folgendermaßen aus. NULL ist für alle Spalten zulässig, wir werden es jedoch bald überprüfen.

serval ist eine Abkürzung für SERial VALue.

Spaltenname Schimmel NULL Erläuterung
time DATETIME Toleranz Aufnahmezeit
max_temperature FLOAT Toleranz Temperatur (maximal)
avg_temperature FLOAT Toleranz Temperatur (Durchschnitt)
min_temperature FLOAT Toleranz Temperatur (Minimum)
max_humidity FLOAT Toleranz Luftfeuchtigkeit (maximal)
avg_humidity FLOAT Toleranz Luftfeuchtigkeit (Durchschnitt)
min_humidity FLOAT Toleranz Luftfeuchtigkeit (Minimum)
max_heatIndex FLOAT Toleranz Temperatur erleben (maximal)
avg_heatIndex FLOAT Toleranz Temperatur erleben (Durchschnitt)
min_heatIndex FLOAT Toleranz Temperatur erleben (Minimum)
max_pressure INT Toleranz Druck (maximal)
avg_pressure INT Toleranz Druck (Durchschnitt)
min_pressure INT Toleranz Druck (Minimum)
max_photocell INT Toleranz Beleuchtung (maximal)
avg_photocell INT Toleranz Beleuchtung (Durchschnitt)
min_photocell INT Toleranz Beleuchtung (Minimum)

Python-Programmcode

Ich habe es hier und da behoben, also nur eine Übersicht. Wenn Sie an den Änderungen interessiert sind, GitHub (mySensor) & [GitHub (Desktop Clock)](https://github.com/km Schauen Sie sich DesktopClock / commit / 437884c6f55cee7693addb0726ccf4ae81c04269 an.

Screenshot_20200208[4].png Es wird bald abgeschlossen sein.

Kleine Geschichte

Ich hatte einen Mechanismus zum Ausschalten der Hintergrundbeleuchtung, wenn die Beleuchtungsstärke 50 oder weniger betrug. Nach dieser Änderung verschwand der Raum, selbst wenn er abgedunkelt war, nicht sofort, und nach einer Weile schaltete er sich aus und die Reaktion verlangsamte sich. Durch einen Neustart des Python-Programms wird das Problem behoben, aber nach kurzer Zeit tritt es erneut auf.

Als Ergebnis der Überprüfung von Iloilo scheint die Ursache der Empfangspuffer zu sein.

main.py


#Leeren Sie den Empfangspuffer
self.ser.flushInput()

Wenn Sie dies nicht tun, können Sie keine Synchronisierung mit der seriellen Verbindung durchführen. Es scheint, dass der Verzögerungsbereich mit der Zeit zunimmt.

Ich denke nicht, dass es eine gute Idee ist, aber es liegt wahrscheinlich daran, dass die Verzögerung verschwunden ist.

Recommended Posts

[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Erstellen Sie eine Partition und installieren Sie Raspberry Pi OS
MQTT auf Raspberry Pi und Mac
Verwenden einer Webkamera mit Raspberry Pi
Machen Sie einen einfachen CO2-Inkubator mit Raspberry PI und CO2-Sensor (MH-Z14A)
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Haustierüberwachung mit Rekognition und Raspberry pi
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Starten Sie docker.plone und fügen Sie eine benutzerdefinierte Vorlage hinzu
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Raspberry Pi 3 x Julius (Lese- und Grammatikdatei)
Erstellen Sie eine Django-Umgebung auf Raspai (MySQL)
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
MQTT Radicon Car mit Arduino und Himbeere
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
Einfache Verbindung zwischen Raspberry Pi und AWS IoT
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Erstellen Sie ein Besuchermeldungssystem mit Raspberry Pi
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Beispiel für ein Raspberry Pi und AWS IoT-Verbindungsprogramm
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Steuern Sie die Musikwiedergabe auf einem Smartphone, das mit Raspberry Pi 3 und Bluetooth mit AVRCP verbunden ist
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Installation von Docker auf Raspberry Pi und L Chika
Installieren Sie pyenv auf Raspberry Pi, um Python zu verwalten
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Ein Memorandum bei der Herstellung einer Überwachungskamera mit Raspeye
Verwenden Sie raspberryPi und Julius (Spracherkennung). ③ Wörterbucherstellung
Was ist Raspberry Pi?
GPGPU mit Raspberry Pi
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Pigpio auf Himbeer-Pi
Raspberry Pi Videokamera
Raspberry Pi Schlechtes Wissen
Lass uns Raspberry Pi machen?
DigitalSignage mit Raspberry Pi
Raspberry Pi 4 Setup-Hinweise
Cython auf Raspberry Pi