[PYTHON] Machen Sie einen einfachen CO2-Inkubator mit Raspberry PI und CO2-Sensor (MH-Z14A)

Zweck

Da die untersuchten Mikroorganismen möglicherweise unter Verwendung von Spurenelementen in der Atmosphäre leben, werden wir ein Kulturgerät erstellen, das sie hinzufügen kann.

Aktivieren Sie UART auf der Raspberry Pi-Seite

sudo raspi-config ->"5 Interfacing Option" ->"P6 Serial"

Sie werden gefragt, ob Sie sich seriell bei der Shell anmelden möchten. Wählen Sie daher "Nein". "Would you like a login shell to be accessible over serial?" -> "Nein"

Sie werden gefragt, ob Sie die serielle Schnittstelle aktivieren möchten. Wählen Sie daher "Ja". "Would you like the serial port hardware to be enabled?" -> "Ja"

Wählen Sie Fertig stellen, um neu zu starten.

fortsetzen

$ whoami
pi
$ ls -la /dev/ttyS0
crw-rw---- 1 root dialout 4,64 29. November 10:42 /dev/ttyS0
$ sudo gpasswd -a pi dialout

Modul zur Verwendung von MHZ-14A

Messen Sie die Kohlendioxidkonzentration mit Raspberry Pi 3 Modell B + (MH-Z14A) -AWS IoT ist ebenfalls verfügbar- Wurde verwiesen.

MH-Z14A NDIR-CO2-SENSOR ZUR KOHLENDIOXIDERKENNUNG Da das Datenblatt aktualisiert wurde, habe ich mich auf das neueste bezogen. Die folgenden fünf Befehle sind für diesen Sensor festgelegt.

  1. Messung der CO2-Konzentration
  2. Nullpunktkalibrierung
  3. Span Kalibrierung
  4. Ein / Aus der automatischen Kalibrierungsfunktion
  5. Ändern Sie den Messbereich Diese Funktion wird diesmal nicht verwendet, da für die Kalibrierung Standardgas (oder die Atmosphäre als CO2-Konzentration von 400 ppm) verwendet wird. Eingegebene Befehle zum Messen der CO2-Konzentration, zum Deaktivieren der automatischen Kalibrierung und zum Ändern des Messbereichs. Die automatische Kalibrierung ist eine Funktion, die alle 24 Stunden automatisch eine Nullpunktkalibrierung durchführt. Es wird empfohlen, diese Funktion nicht zu verwenden, wenn sie in Gewächshäusern, Farmen und Kühlschränken verwendet wird.

Beim Lesen des referenzierten Codes ・ Definition der Klasse und Bedeutung von Init und Selbst ・ Verwendung von Pyserial -Erstellen eines Moduls und die Bedeutung von if __name__ == '__ main __': Ich wusste nicht viel darüber, also habe ich etwas gemacht, das vorerst funktioniert, aber ich bin nicht sicher, ob der Code korrekt ist.

Ich habe das erstellte mhz14a.py in / usr / lib / python2.7 / dist-packages / gespeichert. Referenz; 3. Ausgabe, S. 195

mhz14a.py


import serial
import time

class MHZ14A():
    PACKET = [0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79]
    RANGE1 = [0xFF, 0x01, 0x99, 0x00, 0x00, 0x00, 0x07, 0xd0, 0x8F]
    RANGE2 = [0xFF, 0x01, 0x99, 0x00, 0x00, 0x00, 0x13, 0x88, 0xCB]
    RANGE3 = [0xFF, 0x01, 0x99, 0x00, 0x00, 0x00, 0x27, 0x10, 0x2F]
    AUTOCALON = [0xFF, 0x01, 0x79, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xE6]
    AUTOCALOFF = [0xFF, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86]

    def __init__(self, ser):
        self.serial = serial.Serial(ser, 9600, timeout=1)
        time.sleep(2)

    def get(self):
        self.serial.write(bytearray(MHZ14A.PACKET))
        res = self.serial.read(size=9)
        res = bytearray(res)
        checksum = 0xff & (~(res[1] + res[2] + res[3] + res[4] + res[5] + res[6] + res[7]) + 1)
        if res[8] == checksum:
            return (res[2] << 8|res[3])
        else:
            raise Exception("checksum: " + hex(checksum))

    def close(self):
        self.serial.close()

#Erfasst die CO2-Konzentration vom Sensor und gibt sie zurück
def main():
    sensor = MHZ14A("/dev/ttyS0")
    try:
        return (int(sensor.get()))
    except:
        pass
    sensor.close()

#Self-Ein / Aus der Kalibrierungsfunktion(Kein Rückgabewert)
def autocal(x):
    sensor = MHZ14A("/dev/ttyS0")
    if x == 0:
        sensor.serial.write(bytearray(MHZ14A.AUTOCALOFF))
    elif x == 1:
        sensor.serial.write(bytearray(MHZ14A.AUTOCALON))
    sensor.close()

#Senden Sie einen Befehl zum Ändern des Messbereichs(Kein Rückgabewert)
def range(y):
    sensor = MHZ14A("/dev/ttyS0")
    if y == 1:
        sensor.serial.write(bytearray(MHZ14A.RANGE1))
    elif y == 2:
        sensor.serial.write(bytearray(MHZ14A.RANGE2))
    elif y == 3:
        sensor.serial.write(bytearray(MHZ14A.RANGE3))
    sensor.close

if __name__ == '__main__':
    main()

・ Main () gibt den Sensorwert zurück ・ Autocal (x) ist die automatische Kalibrierungsfunktion ein (1) aus (0) ・ Der Bereich (y) bietet drei Möglichkeiten zum Ändern des Messbereichs: 0 ~ 2000, 0 ~ 5000, 0 ~ 10000, und die anfängliche Einstellung der Maschine ist 5000.

Nehmen Sie CO2 auf und schalten Sie das elektromagnetische Ventil ein / aus

Ich habe es unter Bezugnahme auf den Code von L Chika geschrieben. Die automatische Kalibrierungsfunktion ist ausgeschaltet und der Messbereich auf 0 bis 10000 ppm eingestellt.

import RPi.GPIO as GPIO
from time import sleep
import datetime
import mhz14a as MHZ

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)

MHZ.autocal(0) #self-Schalten Sie die Kalibrierungsfunktion aus
MHZ.range(3) #Messbereich 0~Auf 10000ppm einstellen

try:
    while True:
        ppm = MHZ.main() #Sensorwert abrufen
        if ppm < 9500: #CO2-Konzentration, die das elektromagnetische Ventil öffnet
            GPIO.output(18, True)
            sleep(0.2) #Zeit zum Öffnen des elektromagnetischen Ventils(Sekunden)
            GPIO.output(18, False)
            sleep(0.8)
        else:
            sleep(1)
        print(ppm, datetime.datetime.now()) #CO2-Konzentration und Datum / Uhrzeit anzeigen
        sleep(60) #Messintervall(Sekunden)
except KeyboardInterrupt:
    pass

GPIO.cleanup()
print("stop")

Elektromagnetisches Ventil ein / aus

・ Elektromagnetisches Ventil JPMV22NC (bei Amazon gekauft) ・ 12-V-Stromversorgung am elektromagnetischen Ventil ・ DC-DC-Wandler SUS1R50505 ・ OMRON G5V-2 (Wenn es nicht diese Größe hat, haftet es nicht am Bullet Board) ・ Transistor S8050 (ich habe ihn in einer von Amazon sortierten Packung gekauft) ・ 1000Ω Widerstand (im Sortiment von Amazon erhältlich) ・ Diode (im Sortiment von Amazon erhältlich) Als ich versuchte, einen Schaltplan zu zeichnen, wurde Firitzing aufgeladen, also machte ich eine direkte Aufnahme vom Bullet Board. Zuerst funktionierte das elektromagnetische Ventil nicht und ich konnte nicht alles verstehen, also habe ich das 5V GND an das Raspeye GND angeschlossen und es hat funktioniert. Es ist schwierig ... IMG_3483_2.png

Ich habe vorerst versucht, es zu bewegen

IMG_3485.png Wie auf dem Foto gezeigt, sind der Sensor, der CO2-Auslass und der Lüfter in einem Gewindebohrer verpackt, leicht abgedeckt (nicht vollständig versiegelt) und über Nacht bewegt. Das Ergebnis ist die folgende Grafik.

co2.png Da die Obergrenze des Sensors 10000 ppm beträgt, schüttle ich ihn ab, aber ich denke, ich kann ungefähr 10000 ppm beibehalten. Apropos Gier, ich möchte einen Messbereich von bis zu 10%, aber es gibt nichts Erschwingliches.

Zukünftige Aufgaben

· Protokoll speichern ・ Wasserstoff-, Methan- und Kohlenmonoxidsensoren hinzugefügt (ich habe den Sensor selbst gekauft, aber eine AD-Umwandlung ist erforderlich) → Spurengas-Inkubator

Recommended Posts

Machen Sie einen einfachen CO2-Inkubator mit Raspberry PI und CO2-Sensor (MH-Z14A)
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Verwenden einer Webkamera mit Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Verwenden Sie OpenJtalk, damit Raspberry Pi Japanisch spricht
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Erstellen Sie ein Besuchermeldungssystem mit Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Verwendung des digitalen 1-Draht-Temperatursensors DS18B20 mit Raspberry Pi von Python
Erklären Sie vorsichtig den Prozess der Erstellung einer einfachen Überwachungskamera ohne Server mithilfe von Raspeye, Gmail API und Line API
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Versuchen Sie es mit dem Temperatursensor (LM75B) mit Raspeye.
Erstellen Sie mit OpenCV und TensorFlow einen Sato Yohei-Diskriminator
Erstellen Sie Ihre eigene IoT-Plattform mit raspberrypi und ESP32 (Teil 3) ~ ESP32-Einstellungen Analoger Temperatursensor
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Machen Sie ein Auto mit automatischem Fahrroboter mit Raspberry Pi3 B + und Ultraschall-Abstandssensor HC-SR04
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Verwenden Sie Python auf Raspberry Pi 3, um "Temperatur (mit A / D-Wandler)" zu erkennen!
Erstellen Sie eine Partition und installieren Sie Raspberry Pi OS
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
Ich habe mit PyQt einen einfachen Texteditor erstellt
Innenüberwachung mit Raspberry Pi
Endlich ... Erstellen Sie einen Funkcontroller mit Python auf Raspberry Pi 3! (Wenn der Magnet näher gebracht wird, bewegt sich der Motor und stoppt automatisch)
So laden Sie Dateien mit Python in den Cloud-Speicher hoch [Erstellen Sie mit Raspberry PI # 1 eine Festkommakamera]
"2/2" Ich mache eine einfache Webanwendung für den Roboterbetrieb. "Raspberry Pi 3B + und Django Channels"
"1/2" Ich mache eine einfache Webanwendung für den Roboterbetrieb. "Raspberry Pi 3B + und Django Channels"
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Machen wir einen Fahrradcomputer mit Raspberry Pi Zero (W, WH)
Erstellen Sie mit Python und OpenCV ein einfaches OMR (Mark Sheet Reader)
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Erstellen Sie einen einfachen geplanten Stapel mit Dockers Python Image und parse-crontab
Wiegeinstrument mit Himbeer-Pi und hx711 (GUI-Anzeige in Tkinter)
Raspberry Pi --1 - Zum ersten Mal (Schließen Sie einen Temperatursensor an, um die Temperatur anzuzeigen)
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
[Hinweis] Verwenden eines 16x2-stelligen LCD-Zeichens (1602A) von Python mit Raspeye
Endlich ... Erstellen Sie einen Funkcontroller mit Python auf Raspberry Pi 3! (Der Motor bewegt sich, während die Taste gedrückt wird.)
USB über Ethernet mit Raspberry pi
MQTT auf Raspberry Pi und Mac
Lerne Zundokokiyoshi mit einem einfachen RNN
Erstellen Sie mit TensorFlow eine Gesichtserkennung
Erstellen einer einfachen Tabelle mit Stettytable
Versuchen Sie es mit ArUco mit Raspberry Pi
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Grundeinstellungen für die Verwendung des Grove Pi + Starterkits und der Kamera mit Raspberry Pi
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Endlich ... Erstellen Sie einen Funkcontroller mit Python auf Raspberry Pi 3! (Der Motor bewegt sich, während der Magnet näher gebracht wird)