{"id":1371,"date":"2024-10-13T17:02:44","date_gmt":"2024-10-13T15:02:44","guid":{"rendered":"https:\/\/www.gressly.ch\/?page_id=1371"},"modified":"2024-10-20T12:38:35","modified_gmt":"2024-10-20T10:38:35","slug":"wifi-thermo-hygro-barometer","status":"publish","type":"page","link":"https:\/\/www.gressly.ch\/index.php\/elektronik\/wifi-thermo-hygro-barometer\/","title":{"rendered":"WiFi Thermo- \/ Hygro- \/ Barometer"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Um die Luft-Temperatur, -feutche und -druck zu messen, habe ich einen Sensor mit einem Raspberry Pi Pico verbuden mit 3 AAA Batterien betrieben.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241018_143501-1024x768.jpg\" alt=\"\" class=\"wp-image-1388\" style=\"width:600px\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241018_143501-1024x768.jpg 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241018_143501-300x225.jpg 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241018_143501-768x576.jpg 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241018_143501-1536x1152.jpg 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241018_143501-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Geh\u00e4use, welches ich mit <a href=\"http:\/\/tinkercad.com\">tinkercad.com<\/a> enworfen und anschliessend mit dem 3D-Drucker gedruckt habe, schliesst alle Bauteile sch\u00f6n ein. Ein Deckel, der sch\u00f6n eng draufsitzt h\u00e4lt gut genug um die Batterien im Geh\u00e4use zu halten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wer das Geh\u00e4use bei sich drucken m\u00f6chte, kann die Files hier downloaden: <a href=\"https:\/\/www.printables.com\/model\/1037401-raspberry-pi-pico-wifi-air-sensor\">https:\/\/www.printables.com\/model\/1037401-raspberry-pi-pico-wifi-air-sensor<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_160106-1024x768.jpg\" alt=\"\" class=\"wp-image-1377\" style=\"width:600px\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_160106-1024x768.jpg 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_160106-300x225.jpg 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_160106-768x576.jpg 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_160106-1536x1152.jpg 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_160106-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Beim Sensor handelt es sich um eine Kombination von AHT20 \/ BMP28 welche Temperatur, relative Luftfeuchtigkeit und den Luftdruck misst. Er wird mit dem I2C interface am Pi Pico verbunden. Das lesen der Messwerte ist so sehr einfach.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155914-1024x768.jpg\" alt=\"\" class=\"wp-image-1373\" style=\"width:600px\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155914-1024x768.jpg 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155914-300x225.jpg 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155914-768x576.jpg 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155914-1536x1152.jpg 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155914-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bauteile passen exakt in die Aussparungen und werden durch Pins festgehalten. So verrutscht nichts mehr und es braucht keine Schrauben oder Leim, was das Demontieren vereinfacht.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155835-1024x768.jpg\" alt=\"\" class=\"wp-image-1376\" style=\"width:600px\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155835-1024x768.jpg 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155835-300x225.jpg 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155835-768x576.jpg 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155835-1536x1152.jpg 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/P_20241012_155835-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Mit 3 AAA Batterien wird der Pico mit Strom versorgt und h\u00e4lt, sofern man ihn richtig programmiert, viele Tage auch mit aufladbaren Batterien. Wichtig ist, dass man mit machine.lightsleep() den Pico in einen Ruhezustand versetzt, der sehr wenig Energie ben\u00f6tigt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"394\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/Klima_PicoW_Steckplatine-1024x394.png\" alt=\"\" class=\"wp-image-1390\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/Klima_PicoW_Steckplatine-1024x394.png 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/Klima_PicoW_Steckplatine-300x115.png 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/Klima_PicoW_Steckplatine-768x295.png 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/Klima_PicoW_Steckplatine-1536x591.png 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2024\/10\/Klima_PicoW_Steckplatine.png 1659w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Verkabelung ist sehr einfach, Batteriehalter (es gab leider kein Bild mit 3 Batterien) an VSYS und GND. Den Sensor verbindet man mit einem beliebigen I2C-Kanal. Unten der Python-Code als Beispiel um es nachzubauen. Ich sende alle 5 Minuten die neuen Messwerte an meinen OpenHAB server. Auch die aktuelle Spannung der Stromversorgung wird gemessen zus\u00e4tzlich zur Wlan-Signalst\u00e4rke.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import json, ahtx0, bmp280, gc, network, requests, time, machine<br><br>vsys = machine.ADC(3)<br>i2c = machine.I2C(1, scl=machine.Pin(27), sda=machine.Pin(26))<br>aht20 = ahtx0.AHT20(i2c)<br>bmp = bmp280.BMP280(i2c, addr=0x77)<br>header = {\"Content-Type\":\"text\/plain\"}<br><br>while True:<br>    <br>    wlan = network.WLAN(network.STA_IF)<br>    wlan.active(True)<br>    wlan.connect(\"&lt;your_wlan_ssid&gt;\", \"&lt;your_wlan_password&gt;\")<br>    print(\"Connecting to WLAN\")<br>    time.sleep(3)<br>    <br>    if wlan.isconnected():<br>        <br>        machine.Pin(29, machine.Pin.IN)<br>        x = {<br>          \"voltage\": round(vsys.read_u16()*3.23*3\/65535, 1),<br>          \"humidity\": int(round(aht20.relative_humidity, 0)),<br>          \"temperature\": round(aht20.temperature, 1),<br>          \"temperature2\": round(bmp.temperature, 1),<br>          \"pressure\": int(round(bmp.pressure\/100, 0)),<br>          \"wlan_signal\": wlan.status(\"rssi\")<br>        }<br>        <br>        jsonString = json.dumps(x)<br>        print(\"jsonString: \", jsonString)<br>        <br>        try:<br>            requests.put(\"http:\/\/openhab\/rest\/items\/&lt;item_name&gt;\/state\", data=jsonString, headers=header, timeout=5)<br>            wlan.active(False)<br>            wlan.deinit()<br>            gc.collect()<br>            machine.lightsleep(5*60*1000)<br>        except Exception as err:<br>            print(f\"error: {err}\")<br><br>    <br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bauteile k\u00f6nnen hier gekauft werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.bastelgarage.ch\/raspberry-pi\/rpi-pico\/raspberry-pi-pico-w-mikrocontroller-mit-wifi\">Rapberry Pi Pico W<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bastelgarage.ch\/aht20-und-bmp280-digitaler-temperatur-feuchtigkeit-und-luftdrucksensor\">Sensor<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bastelgarage.ch\/batteriefach-batteriehalter-3xaaa-mit-ph2-0-2p-stecker\">Batteriefach<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Um die Luft-Temperatur, -feutche und -druck zu messen, habe ich einen Sensor mit einem Raspberry Pi Pico verbuden mit 3 AAA Batterien betrieben. Ein Geh\u00e4use, welches ich mit tinkercad.com enworfen und anschliessend mit dem 3D-Drucker gedruckt habe, schliesst alle Bauteile sch\u00f6n ein. Ein Deckel, der sch\u00f6n eng draufsitzt h\u00e4lt gut genug um die Batterien im Geh\u00e4use zu halten. Wer das Geh\u00e4use bei sich drucken m\u00f6chte, kann die Files hier downloaden: https:\/\/www.printables.com\/model\/1037401-raspberry-pi-pico-wifi-air-sensor Beim Sensor handelt es sich um eine Kombination von AHT20 \/ BMP28 welche Temperatur, relative Luftfeuchtigkeit und den Luftdruck misst. Er wird mit dem I2C interface am Pi Pico verbunden. Das lesen der Messwerte ist so sehr einfach. Die Bauteile passen exakt in die Aussparungen und werden durch Pins festgehalten. So verrutscht nichts mehr und es braucht keine Schrauben oder Leim, was das Demontieren vereinfacht. Mit 3 AAA Batterien wird der Pico mit Strom versorgt und h\u00e4lt, sofern man ihn richtig programmiert, viele Tage auch mit aufladbaren Batterien. Wichtig ist, dass man mit machine.lightsleep() den Pico in einen Ruhezustand versetzt, der sehr wenig Energie ben\u00f6tigt. Die Verkabelung ist sehr einfach, Batteriehalter (es gab leider kein Bild mit 3 Batterien) an VSYS und GND. Den Sensor verbindet man mit einem beliebigen I2C-Kanal. Unten der Python-Code als Beispiel um es nachzubauen. Ich sende alle 5 Minuten die neuen Messwerte an meinen OpenHAB server. Auch die aktuelle Spannung der Stromversorgung wird gemessen zus\u00e4tzlich zur Wlan-Signalst\u00e4rke. import json, ahtx0, bmp280, gc, network, requests, time, machinevsys = machine.ADC(3)i2c = machine.I2C(1, scl=machine.Pin(27), sda=machine.Pin(26))aht20 = ahtx0.AHT20(i2c)bmp = bmp280.BMP280(i2c, addr=0x77)header = {&#8220;Content-Type&#8221;:&#8221;text\/plain&#8221;}while True: wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(&#8220;&lt;your_wlan_ssid&gt;&#8221;, &#8220;&lt;your_wlan_password&gt;&#8221;) print(&#8220;Connecting to WLAN&#8221;) time.sleep(3) if wlan.isconnected(): machine.Pin(29, machine.Pin.IN) x = { &#8220;voltage&#8221;: round(vsys.read_u16()*3.23*3\/65535, 1), &#8220;humidity&#8221;: int(round(aht20.relative_humidity, 0)), &#8220;temperature&#8221;: round(aht20.temperature, 1), &#8220;temperature2&#8221;: round(bmp.temperature, 1), &#8220;pressure&#8221;: int(round(bmp.pressure\/100, 0)), &#8220;wlan_signal&#8221;: wlan.status(&#8220;rssi&#8221;) } jsonString = json.dumps(x) print(&#8220;jsonString: &#8220;, jsonString) try: requests.put(&#8220;http:\/\/openhab\/rest\/items\/&lt;item_name&gt;\/state&#8221;, data=jsonString, headers=header, timeout=5) wlan.active(False) wlan.deinit() gc.collect() machine.lightsleep(5*60*1000) except Exception as err: print(f&#8221;error: {err}&#8221;) Bauteile k\u00f6nnen hier gekauft werden:<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1202,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1371","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/comments?post=1371"}],"version-history":[{"count":9,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1371\/revisions"}],"predecessor-version":[{"id":1392,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1371\/revisions\/1392"}],"up":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1202"}],"wp:attachment":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/media?parent=1371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}