{"id":1958,"date":"2025-01-24T15:06:49","date_gmt":"2025-01-24T14:06:49","guid":{"rendered":"https:\/\/bartelmes-infotech.de\/?page_id=1958"},"modified":"2026-05-11T11:24:42","modified_gmt":"2026-05-11T09:24:42","slug":"co2-wert-messen-python","status":"publish","type":"page","link":"https:\/\/bartelmes-infotech.de\/index.php\/co2-wert-messen-python\/","title":{"rendered":"CO2-Wert messen &#8211; Python"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1958\" class=\"elementor elementor-1958\">\n\t\t\t\t<div class=\"elementor-element elementor-element-83f71bf e-flex e-con-boxed e-con e-parent\" data-id=\"83f71bf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d12da6 elementor-widget elementor-widget-image\" data-id=\"4d12da6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/bartelmes-infotech.de\/wp-content\/uploads\/2023\/04\/Flughafen-2.jpg\" class=\"attachment-large size-large wp-image-1635\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-521aa37 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"521aa37\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e0bfd46\" data-id=\"e0bfd46\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b538253 elementor-widget elementor-widget-heading\" data-id=\"b538253\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">CO\u2082-Wert messen und anzeigen<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-f60c500 e-flex e-con-boxed e-con e-parent\" data-id=\"f60c500\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d2eaa52 elementor-widget elementor-widget-heading\" data-id=\"d2eaa52\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">\u00dcberblick<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3cd92e4 e-flex e-con-boxed e-con e-parent\" data-id=\"3cd92e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c276434 elementor-widget elementor-widget-text-editor\" data-id=\"c276434\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Mit diesem Projekt wird die CO\u2082-Konzentration in der Luft gemessen und mit einer 7-Segment-Anzeige angezeigt. Zur Messung der CO\u2082-Konzentration wird der Sensor MH-Z19B eingesetzt. Die 7-Segment-Anzeige TM1637 zeigt den gemessenen Wert an.<\/p><p>In einem ersten Schritt wird die Funktion des CO\u2082-Sensors getestet, anschlie\u00dfend wird die 7-Segmentanzeige ebenfalls getestet.<\/p><p>Nachdem beide Tests erfolgreich durchgef\u00fchrt wurden, wird der komplette Hardware-Aufbau mit einem Python-Programm angesteuert.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6afa5f2 e-flex e-con-boxed e-con e-parent\" data-id=\"6afa5f2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c0367ab elementor-widget elementor-widget-text-editor\" data-id=\"c0367ab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Die Hauptbestandteile der Luft sind Stickstoff (ca. 78 %), Sauerstoff (ca. 21 %) und Kohlenstoffdioxid (CO\u2082). Ein zu hoher Anteil an Kohlenstoffdioxid in der Atemluft hat Schadwirkungen auf Tier und Mensch.<\/p><p>Der Kohlenstoffdioxidgehalt der Luft wird in ppm (Parts per Million) angegeben. Anhand des gemessenen Wertes f\u00fcr Kohlenstoffdioxid kann die Luftqualit\u00e4t in R\u00e4umen eingesch\u00e4tzt werden. Die Tabelle unten gibt eine \u00dcbersicht \u00fcber den Zusammenhang von Luftqualit\u00e4t und CO\u2082-Konzentration.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5ccc9d1 e-flex e-con-boxed e-con e-parent\" data-id=\"5ccc9d1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cddb003 elementor-widget elementor-widget-image\" data-id=\"cddb003\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"548\" height=\"199\" src=\"https:\/\/bartelmes-infotech.de\/wp-content\/uploads\/2025\/02\/Co2-Tabelle.png\" class=\"attachment-large size-large wp-image-1980\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-77f39f8 e-flex e-con-boxed e-con e-parent\" data-id=\"77f39f8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-806de78 elementor-widget elementor-widget-heading\" data-id=\"806de78\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Hardware<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-091197b e-flex e-con-boxed e-con e-parent\" data-id=\"091197b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7dca0f3 elementor-widget elementor-widget-text-editor\" data-id=\"7dca0f3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Bei diesem Projekt wird folgende Hardware verwendet:<\/p><ul><li>Raspberry Pi 3 Model B<\/li><li>CO\u2082-Sensor MH-Z19B<\/li><li>7-Segmentanzeige 4-stellig TM1637<\/li><li>diverse Leitungen<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cf6be41 e-flex e-con-boxed e-con e-parent\" data-id=\"cf6be41\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3816877 elementor-widget elementor-widget-heading\" data-id=\"3816877\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Funktionstest des CO\u2082-Sensors MH-Z19B<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4bb1a08 elementor-widget elementor-widget-text-editor\" data-id=\"4bb1a08\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"HwtZe\" lang=\"de\"><span class=\"jCAhz ChMk0b\"><span class=\"ryNqvb\">Zun\u00e4chst f\u00fchren wir einen einfachen Funktionstest des CO\u2082-Sensors MH-Z19B durch. Dazu wird ein kleines Python-Programm erstellt und auf dem Raspberry Pi ausgef\u00fchrt. Das Programm gibt die gemessenen CO\u2082-Werte auf dem Bildschirm aus.<\/span><\/span><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7fc66cb e-flex e-con-boxed e-con e-parent\" data-id=\"7fc66cb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5a0b17d elementor-widget elementor-widget-heading\" data-id=\"5a0b17d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Stromlaufplan f\u00fcr den Test des CO\u2082-Sensors<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1524deb elementor-widget elementor-widget-text-editor\" data-id=\"1524deb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Der Stromlaufplan zeigt den Raspberry Pi, den CO\u2082-Sensor MH-Z19B und die Verbindungen.<\/p><p>Verschaltung MH-Z19B \u2014 Raspberry Pi:<br \/>Vin \u2014 Pin 4<br \/>GND \u2014 Pin 6<br \/>TXD \u2014 Pin 8<br \/>RXD \u2014 Pin 10<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bd57338 e-flex e-con-boxed e-con e-parent\" data-id=\"bd57338\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9f85fe7 elementor-widget elementor-widget-image\" data-id=\"9f85fe7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"525\" height=\"526\" src=\"https:\/\/bartelmes-infotech.de\/wp-content\/uploads\/2025\/02\/MH-Z19B_Testschaltung.png\" class=\"attachment-large size-large wp-image-1971\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-65e9f0b e-flex e-con-boxed e-con e-parent\" data-id=\"65e9f0b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f9e9676 elementor-widget elementor-widget-heading\" data-id=\"f9e9676\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Software f\u00fcr den Test des CO\u2082-Sensors<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-df2fc2e elementor-widget elementor-widget-text-editor\" data-id=\"df2fc2e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><b>Voraussetzungen f\u00fcr den Programmablauf:<\/b><\/p><ul><li>Auf dem Raspberry Pi ist das Betriebssystem <b>Raspberry OS Stand April 2026<\/b> installiert.<\/li><li>Der Raspberry Pi ist mit dem <b>Internet<\/b> verbunden.<\/li><li>Der Sensor MH-Z19B wird \u00fcber die serielle Schnittstelle <b>serial0<\/b> angesprochen.<br \/>Serial0: Pin 8 = TX, Pin 10 = RX <br \/>Damit\u00a0 die serielle Schnittstelle <strong>serial0<\/strong> f\u00fcr den Sensor nutzbar ist, muss sie \u00fcber <strong>Einstellungen \u2192 Control Centre \u2192 Interfaces \u2192 Serieller Anschluss <\/strong>aktiviert\u00a0werden.<\/li><\/ul><p style=\"padding-left: 40px;\"><strong>Achtung: Der Sensor MH-Z19 ben\u00f6tigt eine Aufw\u00e4rmzeit von 15 min!<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e95741 e-flex e-con-boxed e-con e-parent\" data-id=\"5e95741\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-194b9a4 elementor-widget elementor-widget-heading\" data-id=\"194b9a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Testprogramm f\u00fcr den CO\u2082-Sensor erstellen und ausf\u00fchren<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6583949 elementor-widget elementor-widget-text-editor\" data-id=\"6583949\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Hinweis:<\/p><p>Die Bibliothek <strong>pyserial<\/strong> zur Ansteuerung der seriellen Schnittstelle ist mit dem Betriebssystem schon installiert.<\/p><p>\u00a0<\/p><p>Erstellen Sie ein Projektverzeichnis <strong>projekt_co2<\/strong> und wechseln Sie anschlie\u00dfend in dieses Verzeichnis mit folgenden Befehlen:<\/p><ul><li><strong>mkdir projekt_co2<\/strong><\/li><li><strong>cd projekt_co2<\/strong><\/li><\/ul><p>Erstellen Sie in dem Verzeichnis <strong>projekt_co2<\/strong> das Python-Testprogramm <strong>mh_z19_auslesen.py <\/strong>&#8211; z. B. mit dem Editor <strong>Geany<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d8fec4a e-flex e-con-boxed e-con e-parent\" data-id=\"d8fec4a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c1d29bb elementor-widget elementor-widget-text-editor\" data-id=\"c1d29bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Programmcode:<\/strong><\/p><p>Die Datei <strong>mh_z19_auslesen.py<\/strong> enth\u00e4lt folgenden Programmcode:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7db86f4 elementor-widget elementor-widget-text-editor\" data-id=\"7db86f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #0000ff;\">import<\/span> time<\/p><p><span style=\"color: #0000ff;\">import<\/span> serial<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9a8f30 elementor-widget elementor-widget-text-editor\" data-id=\"f9a8f30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #99cc00;\"># Initialisierung UART (MH-Z19B)<\/span><\/p><p><span style=\"color: #99cc00;\"># \/dev\/serial0 ist der Standard-Pfad f\u00fcr UART am Pi<\/span><\/p><p>ser = serial.<span style=\"color: #ff9900;\">Serial<\/span>(&#8218;\/dev\/serial0&#8216;, baudrate=<span style=\"color: #ff0000;\">9600<\/span>, timeout=<span style=\"color: #ff0000;\">1<\/span>)<\/p><p><span style=\"color: #0000ff;\">def<\/span> <span style=\"color: #ff00ff;\">get_co2_value()<\/span>:<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #ff9900;\">&#8222;&#8220;&#8220;Liest den CO2-Wert vom MH-Z19B \u00fcber UART.&#8220;&#8220;&#8220;<\/span><\/p><p style=\"padding-left: 40px;\"><span style=\"color: #99cc00;\"># Befehl zum Auslesen (Standard-Protokoll des MH-Z19B)<\/span><br \/>cmd = b&#8220;\\xff\\x01\\x86\\x00\\x00\\x00\\x00\\x00\\x79&#8243;<br \/>ser.<span style=\"color: #ff9900;\">write<\/span>(cmd)<br \/>res = ser.<span style=\"color: #ff9900;\">read<\/span>(9)<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">if<\/span> <span style=\"color: #800080;\">len<\/span>(res) == <span style=\"color: #ff0000;\">9<\/span> <span style=\"color: #0000ff;\">and<\/span> res[<span style=\"color: #ff0000;\">0<\/span>] == <span style=\"color: #ff0000;\">0xff<\/span> <span style=\"color: #0000ff;\">and<\/span> res[1] == <span style=\"color: #ff0000;\">0x86<\/span>:<\/p><p style=\"padding-left: 80px;\"><span style=\"color: #99cc00;\"># CO2-Wert berechnet sich aus Byte 2 und 3<\/span><br \/>high_byte = res[<span style=\"color: #ff0000;\">2<\/span>]<br \/>low_byte = res[<span style=\"color: #ff0000;\">3<\/span>]<br \/>co2 = (high_byte * <span style=\"color: #ff0000;\">256<\/span>) + low_byte<br \/><span style=\"color: #0000ff;\">return<\/span> co2<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">return<\/span> <span style=\"color: #800080;\">None<\/span><\/p><p><span style=\"color: #99cc00;\"># &#8212; Hauptschleife &#8212;<\/span><\/p><p><span style=\"color: #800080;\">print<\/span>(&#8222;Starte Messung&#8230; (Abbruch mit Strg+C)&#8220;)<\/p><p><span style=\"color: #0000ff;\">try<\/span>:<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">while<\/span> <span style=\"color: #800080;\">True<\/span>:<\/p><p style=\"padding-left: 80px;\">co2_ppm = get_co2_value()<\/p><p style=\"padding-left: 80px;\"><span style=\"color: #0000ff;\">if<\/span> co2_ppm <span style=\"color: #0000ff;\">is not<\/span> <span style=\"color: #800080;\">None<\/span>:<\/p><p style=\"padding-left: 120px;\"><span style=\"color: #800080;\">print<\/span>(f&#8220;CO2-Gehalt: {co2_ppm} ppm&#8220;)<\/p><p style=\"padding-left: 80px;\"><span style=\"color: #0000ff;\">else<\/span>:<\/p><p style=\"padding-left: 120px;\"><span style=\"color: #800080;\">print<\/span>(&#8222;Fehler beim Lesen des Sensors&#8220;)<br \/>display.<span style=\"color: #ff9900;\">show<\/span>(&#8222;err &#8222;)<\/p><p style=\"padding-left: 80px;\">time.<span style=\"color: #ff9900;\">sleep<\/span>(5) <span style=\"color: #99cc00;\"># Messintervall (der Sensor braucht etwas Zeit)<\/span><\/p><p><span style=\"color: #0000ff;\">except<\/span> <span style=\"color: #800080;\">KeyboardInterrupt<\/span>:<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #800080;\">print<\/span>(&#8222;\\nProgramm beendet.&#8220;)<\/p><p><span style=\"color: #0000ff;\">finally<\/span>:<\/p><p style=\"padding-left: 40px;\">ser.<span style=\"color: #ff9900;\">close<\/span>()<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24978ed elementor-widget elementor-widget-text-editor\" data-id=\"24978ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Mit folgendem Befehl rufen Sie das Testprogramm auf &#8211; achten Sie dabei auf die richtige Schreibweise von <strong>mh_z19_auslesen<\/strong>:<\/p><ul><li><strong>sudo python mh_z19_auslesen.py<\/strong><\/li><\/ul><p>Das Messergebnis wird ausgegeben, die Ausgabe sieht dann z. B. wie folgt aus:<\/p><p><strong>CO2-Gehalt: 619 ppm<\/strong><\/p><p>Der gemessene Wert <strong>619<\/strong> zeigt eine hohe Qualit\u00e4t der Raumluft &#8211; geringe CO\u2082-Konzentration &#8211; an.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-13df103 e-flex e-con-boxed e-con e-parent\" data-id=\"13df103\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8472a21 elementor-widget elementor-widget-heading\" data-id=\"8472a21\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Funktionstest der 7-Segment-Anzeige TM1637<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bea6f3e elementor-widget elementor-widget-text-editor\" data-id=\"bea6f3e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"HwtZe\" lang=\"de\"><span class=\"jCAhz ChMk0b\"><span class=\"ryNqvb\">Jetzt f\u00fchren wir einen einfachen Funktionstest der 7-Segment-Anzeige TM1637 durch. Dazu wird ein kleines Python-Programm erstellt und auf dem Raspberry Pi ausgef\u00fchrt. Das Programm gibt diverse Ziffern- und Zeichenfolgen mittels der 7-Segment-Anzeige aus.<\/span><\/span><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-755b799 e-flex e-con-boxed e-con e-parent\" data-id=\"755b799\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8c698ff elementor-widget elementor-widget-heading\" data-id=\"8c698ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Stromlaufplan f\u00fcr den Test der 7-Segment-Anzeige<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5df5a75 elementor-widget elementor-widget-text-editor\" data-id=\"5df5a75\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Der Stromlaufplan zeigt den Raspberry Pi, die 7-Segmentanzeige TM1637 und die Verbindungen.<\/p><p lang=\"de-DE\"><span style=\"font-size: small;\">Verschaltung TM1637 \u2014 Raspberry Pi:<br \/>+5 V \u2014 Pin 2<br \/>GND \u2014 Pin 6 oder Pin 14<br \/>CLK \u2014 Pin 38 (GPIO20)<br \/>DIO \u2014 Pin 40 (GPIO21)<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e518837 e-flex e-con-boxed e-con e-parent\" data-id=\"e518837\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b970b1 elementor-widget elementor-widget-image\" data-id=\"5b970b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"427\" src=\"https:\/\/bartelmes-infotech.de\/wp-content\/uploads\/2025\/12\/7-Segment-Anzeige-1.png\" class=\"attachment-large size-large wp-image-2008\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-715f50a elementor-widget elementor-widget-image\" data-id=\"715f50a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"121\" src=\"https:\/\/bartelmes-infotech.de\/wp-content\/uploads\/2025\/12\/7-Segment-Anzeige-2.png\" class=\"attachment-medium size-medium wp-image-2009\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fde0eff e-flex e-con-boxed e-con e-parent\" data-id=\"fde0eff\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d65527 elementor-widget elementor-widget-heading\" data-id=\"1d65527\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Software f\u00fcr den Test der 7-Segment-Anzeige<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c62ce29 elementor-widget elementor-widget-text-editor\" data-id=\"c62ce29\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><b>Voraussetzungen f\u00fcr den Programmablauf:<\/b><\/p><ul><li>Auf dem Raspberry Pi ist das Betriebssystem <b>Raspberry OS Stand <\/b><b>April 2026<\/b>\u00a0installiert.<\/li><li>Der Raspberry Pi ist mit dem <b>Internet<\/b> verbunden.<\/li><li>Die 7-Segment-Anzeige TM1637 wird in diesem Projekt \u00fcber die <span class=\"user-query-container\"><span class=\"user-query-bubble-with-background ng-star-inserted\"><span class=\"horizontal-container\">Ausg\u00e4nge GPIO20 und GPIO21 angesteuert<\/span><\/span><\/span>.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f4e35e2 e-flex e-con-boxed e-con e-parent\" data-id=\"f4e35e2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6f135ca elementor-widget elementor-widget-heading\" data-id=\"6f135ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Testprogramm f\u00fcr die 7-Segment-Anzeige erstellen und ausf\u00fchren<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5f330ef elementor-widget elementor-widget-text-editor\" data-id=\"5f330ef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Erstellen Sie ein Projektverzeichnis <strong>projekt_co2<\/strong> und wechseln Sie anschlie\u00dfend in dieses Verzeichnis mit folgenden Befehlen:<\/p><ul><li><strong>mkdir projekt_co2<\/strong><\/li><li><strong>cd projekt_co2<\/strong><\/li><\/ul><p>Erstellen Sie in dem Verzeichnis <strong>projekt_co2<\/strong> das Python-Testprogramm <strong>TM1637_test.py<\/strong> &#8211; z. B. mit dem Editor <strong>Geany<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7a631d5 e-flex e-con-boxed e-con e-parent\" data-id=\"7a631d5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1f017f6 elementor-widget elementor-widget-text-editor\" data-id=\"1f017f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Programmcode:<\/strong><\/p><p>Die Datei <strong>TM1637_test.py<\/strong> enth\u00e4lt folgenden Programmcode:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d578f1 elementor-widget elementor-widget-text-editor\" data-id=\"8d578f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #0000ff;\">import <\/span><span style=\"color: #000000;\">tm1637 <\/span><\/p><p><span style=\"color: #0000ff;\">import <\/span><span style=\"color: #000000;\">time <\/span><\/p><p><span style=\"color: #528ccf;\"><span style=\"color: #0000ff;\">from<\/span> <\/span>datetime\u00a0<span style=\"color: #0000ff;\">import <\/span><span style=\"color: #000000;\">datetime<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d593ba elementor-widget elementor-widget-text-editor\" data-id=\"2d593ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"hljs-comment\"># Initialisierung der Anzeige an GPIO 20 (CLK) und GPIO 21 (DIO)<\/span><\/p><p>display = tm1637.TM1637(clk=<span class=\"hljs-number\" style=\"color: #ff0000;\">20<\/span>, dio=<span class=\"hljs-number\" style=\"color: #ff0000;\">21<\/span>)<\/p><p><span class=\"hljs-comment\"># Helligkeit einstellen (0 bis 7)<\/span><\/p><p>display.brightness(<span class=\"hljs-number\" style=\"color: #ff0000;\">3<\/span>)<\/p><p><span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #3366ff;\">def <\/span><span class=\"hljs-title\" style=\"color: #ff9900;\">test_display<\/span>():<\/span><\/p><p style=\"padding-left: 40px;\"><span style=\"color: #3366ff;\"><span class=\"hljs-keyword\">try<\/span>:<\/span><\/p><p style=\"padding-left: 80px;\">print(<span class=\"hljs-string\" style=\"color: #339966;\">&#8222;Starte Test&#8230;&#8220;<\/span>)<\/p><p style=\"padding-left: 80px;\"><span class=\"hljs-comment\"># 1. Zahlen anzeigen<\/span><\/p><p style=\"padding-left: 80px;\">print(<span class=\"hljs-string\" style=\"color: #339966;\">&#8222;Zeige Zahl 1234&#8220;<\/span>)<\/p><p style=\"padding-left: 80px;\">display.number(<span class=\"hljs-number\" style=\"color: #ff0000;\">1234<\/span>)<\/p><p style=\"padding-left: 80px;\">time.sleep(<span class=\"hljs-number\" style=\"color: #ff0000;\">2<\/span>)<\/p><p style=\"padding-left: 80px;\"><span class=\"hljs-comment\"># 2. Einzelsegmente (Wort &#8218;Cool&#8216;)<\/span><\/p><p style=\"padding-left: 80px;\"><span class=\"hljs-comment\"># Man kann auch eigene Muster definieren<\/span><\/p><p style=\"padding-left: 80px;\">print(<span class=\"hljs-string\" style=\"color: #339966;\">&#8222;Zeige Text-\u00e4hnliche Zeichen&#8220;<\/span>)<\/p><p style=\"padding-left: 80px;\">display.show(<span class=\"hljs-string\" style=\"color: #339966;\">&#8222;Cool&#8220;<\/span>)<\/p><p style=\"padding-left: 80px;\">time.sleep(<span class=\"hljs-number\" style=\"color: #ff0000;\">2<\/span>)<\/p><p style=\"padding-left: 80px;\"><span class=\"hljs-comment\"># 3. Endlosschleife: Aktuelle Uhrzeit (HH:MM)<\/span><\/p><p style=\"padding-left: 80px;\">print(<span class=\"hljs-string\" style=\"color: #339966;\">&#8222;Zeige aktuelle Uhrzeit (Strg+C zum Beenden)&#8220;<\/span>)<\/p><p style=\"padding-left: 80px;\"><span class=\"hljs-keyword\" style=\"color: #3366ff;\">while <\/span><span class=\"hljs-literal\" style=\"color: #ff0000;\">True<\/span>:<\/p><p style=\"padding-left: 120px;\">now = datetime.now()<\/p><p style=\"padding-left: 120px;\"><span class=\"hljs-comment\"># Doppelpunkt blinken lassen<\/span><\/p><p style=\"padding-left: 120px;\">display.numbers(now.hour, now.minute, colon=<span class=\"hljs-literal\" style=\"color: #ff0000;\">True<\/span>)<\/p><p style=\"padding-left: 120px;\">time.sleep(<span class=\"hljs-number\" style=\"color: #ff0000;\">1<\/span>)<\/p><p style=\"padding-left: 120px;\">display.numbers(now.hour, now.minute, colon=<span class=\"hljs-literal\" style=\"color: #ff0000;\">False<\/span>)<\/p><p style=\"padding-left: 120px;\">time.sleep(<span class=\"hljs-number\" style=\"color: #ff0000;\">1<\/span>)<\/p><p style=\"padding-left: 40px;\"><span class=\"hljs-keyword\" style=\"color: #3366ff;\">except <\/span>KeyboardInterrupt:<\/p><p style=\"padding-left: 80px;\"><span class=\"hljs-comment\"># Anzeige beim Beenden l\u00f6schen<\/span><\/p><p style=\"padding-left: 80px;\">display.write([<span class=\"hljs-number\" style=\"color: #ff0000;\">0<\/span>, <span class=\"hljs-number\" style=\"color: #ff0000;\">0<\/span>, <span class=\"hljs-number\" style=\"color: #ff0000;\">0<\/span>, <span class=\"hljs-number\" style=\"color: #ff0000;\">0<\/span>])<\/p><p style=\"padding-left: 80px;\">print(<span class=\"hljs-string\" style=\"color: #339966;\">&#8222;\\nTest beendet.&#8220;<\/span>)<\/p><p><span class=\"hljs-keyword\" style=\"color: #3366ff;\">if<\/span> __name__ == <span class=\"hljs-string\" style=\"color: #339966;\">&#8222;__main__&#8220;<\/span>:<\/p><p style=\"padding-left: 40px;\">test_display()<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-77876c9 e-flex e-con-boxed e-con e-parent\" data-id=\"77876c9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6459c0f elementor-widget elementor-widget-text-editor\" data-id=\"6459c0f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Damit das Ansteuern der 7-Segment-Anzeige ohne Probleme funktioniert muss eine virtuelle Umgebung eingerichtet und aktiviert werden.<\/p><p>Erstellen Sie die virtuelle Umgebung mit folgendem Befehl:<\/p><ul><li><strong>python -m venv env<\/strong><\/li><\/ul><p>Nun m\u00fcssen Sie die virtuelle Umgebung noch aktivieren. Die Aktivierung der virtuellen Umgebung muss bei jedem Start des Terminals erneut gemacht werden.<\/p><ul><li><strong>source env\/bin\/activate<\/strong><\/li><\/ul><p>Die ben\u00f6tigte Bibliothek <strong>tm1637.py<\/strong> zum Ansteuern der 7-Segment-Anzeige installieren Sie mit folgendem Befehl:<\/p><ul><li><strong>pip install raspberrypi-tm1637<\/strong><\/li><\/ul><p>Die Bibliothek <strong>tm1637.py<\/strong> wird installiert nach: <strong>..\/projekt_co2\/env\/lib\/python3.11\/site-packages<\/strong><\/p><p>Kopieren Sie die Bibliothek <strong>tm1637.py<\/strong>\u00a0nach: <strong>..\/projekt_co2<\/strong><\/p><p>\u00a0<\/p><p>Starten Sie das Testprogramm mit folgendem Befehl:<\/p><ul><li><strong>sudo python TM1637_test.py<\/strong><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9207162 e-flex e-con-boxed e-con e-parent\" data-id=\"9207162\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c30709 elementor-widget elementor-widget-text-editor\" data-id=\"6c30709\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><b>Programmablauf beenden:<\/b><\/p><p>Den Programmablauf beenden Sie mit:<\/p><ul><li><strong>Strg+c<\/strong><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-118ffeb e-flex e-con-boxed e-con e-parent\" data-id=\"118ffeb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2c9eeb2 elementor-widget elementor-widget-heading\" data-id=\"2c9eeb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Programm zur Anzeige der CO\u2082-Konzentration erstellen und starten<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3fc3a4a elementor-widget elementor-widget-text-editor\" data-id=\"3fc3a4a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Hinweis:<\/p><p>Um das folgende Programm erfolgreich ausf\u00fchren zu k\u00f6nnen, m\u00fcssen die Vorbereitungen f\u00fcr die vorhergehenden Testprogramme (z. B. serielle Schnittstelle aktivieren, Bibliothek installieren &#8230;) ebenfalls durchgef\u00fchrt werden.<\/p><p>\u00a0<\/p><p>Erstellen Sie in dem Verzeichnis <strong>projekt_co2<\/strong> das Python-Programm <strong>co2_wert_messen.py <\/strong>&#8211; z. B. mit dem Editor <strong>Geany<\/strong>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-259dc26 elementor-widget elementor-widget-text-editor\" data-id=\"259dc26\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Programmcode:<\/strong><\/p><p>Die Datei <strong>co2_wert_messen.py<\/strong> enth\u00e4lt folgenden Programmcode:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1bc04a7 elementor-widget elementor-widget-text-editor\" data-id=\"1bc04a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"hljs-keyword\" style=\"color: #3366ff;\">import <\/span>time<\/p><p><span class=\"hljs-keyword\" style=\"color: #3366ff;\">import <\/span><span class=\"hljs-keyword\">serial<\/span><\/p><p><span class=\"hljs-keyword\" style=\"color: #3366ff;\">from <\/span><span class=\"hljs-keyword\">tm1637 <\/span><span class=\"hljs-keyword\" style=\"color: #3366ff;\">import <\/span><span class=\"hljs-keyword\">TM1637<\/span><\/p><p>\u00a0<\/p><p><span style=\"color: #339966;\"># &#8212; Konfiguration &#8212;<\/span><\/p><p>\u00a0<\/p><p><span style=\"color: #339966;\"># Pins f\u00fcr TM1637 (BCM Nummerierung!)<\/span><br \/><span style=\"color: #339966;\"># Pin 38 ist GPIO 20, Pin 40 ist GPIO 21<\/span><br \/>CLK = <span style=\"color: #ff0000;\">20<\/span><br \/>DIO = <span style=\"color: #ff0000;\">21<\/span><\/p><p>\u00a0<\/p><p><span style=\"color: #339966;\"># Initialisierung Display<\/span><br \/>display = TM1637(clk=CLK, dio=DIO)<br \/>display.<span style=\"color: #ff9900;\">brightness<\/span>(<span style=\"color: #ff0000;\">2<\/span>) # Helligkeit (0 bis 7)<\/p><p>\u00a0<\/p><p><span style=\"color: #339966;\"># Initialisierung UART (MH-Z19B)<\/span><br \/><span style=\"color: #339966;\"># \/dev\/serial0 ist der Standard-Pfad f\u00fcr UART am Pi<\/span><br \/>ser = serial.Serial(&#8218;\/dev\/serial0&#8216;, baudrate=<span style=\"color: #ff0000;\">9600<\/span>, timeout=1)<\/p><p>\u00a0<\/p><p><span style=\"color: #0000ff;\">def<\/span> <span style=\"color: #ff00ff;\">get_co2_value<\/span>():<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #ff9900;\">&#8222;&#8220;&#8220;Liest den CO2-Wert vom MH-Z19B \u00fcber UART.&#8220;&#8220;&#8220;<\/span><br \/><span style=\"color: #339966;\"># Befehl zum Auslesen (Standard-Protokoll des MH-Z19B)<\/span><br \/>cmd = b&#8220;\\xff\\x01\\x86\\x00\\x00\\x00\\x00\\x00\\x79&#8243;<br \/>ser.<span style=\"color: #ff9900;\">write<\/span>(cmd)<br \/>res = ser.<span style=\"color: #ff9900;\">read<\/span>(<span style=\"color: #ff0000;\">9<\/span>)<\/p><p>\u00a0<\/p><p><span style=\"color: #0000ff;\">if<\/span> <span style=\"color: #993366;\">len<\/span>(res) == <span style=\"color: #ff0000;\">9 <\/span><span style=\"color: #0000ff;\">and<\/span> res[<span style=\"color: #ff0000;\">0<\/span>] == <span style=\"color: #ff0000;\">0xff<\/span> <span style=\"color: #0000ff;\">and<\/span> res[<span style=\"color: #ff0000;\">1<\/span>] == <span style=\"color: #ff0000;\">0x86<\/span>:<\/p><p style=\"padding-left: 80px;\"><span style=\"color: #339966;\"># CO2-Wert berechnet sich aus Byte 2 und 3<\/span><br \/>high_byte = res[<span style=\"color: #ff0000;\">2<\/span>]<br \/>low_byte = res[<span style=\"color: #ff0000;\">3<\/span>]<br \/>co2 = (high_byte * <span style=\"color: #ff0000;\">256<\/span>) + low_byte<br \/><span style=\"color: #0000ff;\">return<\/span> co2<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">return<\/span> <span style=\"color: #993366;\">None<\/span><\/p><p>\u00a0<\/p><p><span style=\"color: #339966;\"># &#8212; Hauptschleife &#8212;<\/span><\/p><p>\u00a0<\/p><p><span style=\"color: #993366;\">print<\/span>(&#8222;Starte Messung&#8230; (Abbruch mit Strg+C)&#8220;)<\/p><p>\u00a0<\/p><p><span style=\"color: #0000ff;\">try<\/span>:<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">while<\/span> <span style=\"color: #993366;\">True<\/span>:<\/p><p style=\"padding-left: 80px;\">co2_ppm = get_co2_value()<\/p><p>\u00a0<\/p><p><span style=\"color: #0000ff;\">if<\/span> co2_ppm <span style=\"color: #0000ff;\">is not<\/span> <span style=\"color: #993366;\">None<\/span>:<\/p><p style=\"padding-left: 120px;\"><span style=\"color: #993366;\">print<\/span>(f&#8220;CO2-Gehalt: {co2_ppm} ppm&#8220;)<br \/><span style=\"color: #339966;\"># Wert auf dem Display anzeigen<\/span><br \/>display.<span style=\"color: #ff9900;\">number<\/span>(co2_ppm)<\/p><p style=\"padding-left: 80px;\"><span style=\"color: #0000ff;\">else<\/span>:<\/p><p style=\"padding-left: 120px;\"><span style=\"color: #993366;\">print<\/span>(&#8222;Fehler beim Lesen des Sensors&#8220;)<br \/>display.<span style=\"color: #ff9900;\">show<\/span>(&#8222;err &#8222;)<\/p><p style=\"padding-left: 80px;\">time.<span style=\"color: #ff9900;\">sleep<\/span>(<span style=\"color: #ff0000;\">5<\/span>) <span style=\"color: #339966;\"># Messintervall (der Sensor braucht etwas Zeit)<\/span><\/p><p>\u00a0<\/p><p><span style=\"color: #0000ff;\">except<\/span> <span style=\"color: #993366;\">KeyboardInterrupt<\/span>:<\/p><p style=\"padding-left: 40px;\"><span style=\"color: #993366;\">print<\/span>(&#8222;\\nProgramm beendet.&#8220;)<br \/>display.<span style=\"color: #ff9900;\">write<\/span>([<span style=\"color: #ff0000;\">0<\/span>, <span style=\"color: #ff0000;\">0<\/span>, <span style=\"color: #ff0000;\">0<\/span>, <span style=\"color: #ff0000;\">0<\/span>]) <span style=\"color: #339966;\"># Display leeren<\/span><\/p><p><span style=\"color: #0000ff;\">finally<\/span>:<\/p><p style=\"padding-left: 40px;\">ser.<span style=\"color: #ff9900;\">close<\/span>()<\/p><p style=\"padding-left: 40px;\">\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3a93a3 elementor-widget elementor-widget-text-editor\" data-id=\"b3a93a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Starten Sie das Programm mit folgendem Befehl:<\/p><ul><li><strong>sudo python co2_wert_messen.py<\/strong><\/li><\/ul><p>Der vom CO\u2082-Sensor gemessenen Wert wird im Terminal ausgegeben und mit der 7-Segment-Anzeige angezeigt.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>CO\u2082-Wert messen und anzeigen \u00dcberblick Mit diesem Projekt wird die CO\u2082-Konzentration in der Luft gemessen und mit einer 7-Segment-Anzeige angezeigt. Zur Messung der CO\u2082-Konzentration wird der Sensor MH-Z19B eingesetzt. Die 7-Segment-Anzeige TM1637 zeigt den gemessenen Wert an. In einem ersten Schritt wird die Funktion des CO\u2082-Sensors getestet, anschlie\u00dfend wird die 7-Segmentanzeige ebenfalls getestet. Nachdem beide [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1958","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/pages\/1958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/comments?post=1958"}],"version-history":[{"count":122,"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/pages\/1958\/revisions"}],"predecessor-version":[{"id":2135,"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/pages\/1958\/revisions\/2135"}],"wp:attachment":[{"href":"https:\/\/bartelmes-infotech.de\/index.php\/wp-json\/wp\/v2\/media?parent=1958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}