{"id":3991,"date":"2025-03-23T17:58:12","date_gmt":"2025-03-23T16:58:12","guid":{"rendered":"https:\/\/www.rommelkist.nl\/elec\/?p=3991"},"modified":"2025-06-05T10:59:53","modified_gmt":"2025-06-05T08:59:53","slug":"raspberry-pi-zero-wat-rommelen","status":"publish","type":"post","link":"https:\/\/www.rommelkist.nl\/elec\/elektronica\/raspberry-pi-zero-wat-rommelen\/","title":{"rendered":"Raspberry Pi Zero 2 W &#8211; wat rommelen &#8230;"},"content":{"rendered":"\n<p>Inmiddels twee exemplaren van de <a href=\"https:\/\/www.raspberrypi.com\/products\/raspberry-pi-zero-2-w\/\">Raspberry Pi Zero 2 W<\/a> in bezit. Ik heb elk voorzien van Raspberry Pi OS, 32bits Bookworm (Debian): RaspiZero1 op een 8GB micro-SD-kaartje en RaspiZero2 op een 32GB micro-SD-kaartje.<br>De RaspiZero2 is volledig uitgerust: naast de voeding, een mini-HDMI naar HDMI-kabel voor het beeldscherm, op de USB aansluiting een OTG-kabeltje met dongle voor draadloze set; muis en toetsenbord.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1011\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-8-1024x1011.png\" alt=\"\" class=\"wp-image-3993\" style=\"width:500px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-8-1024x1011.png 1024w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-8-300x296.png 300w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-8-768x758.png 768w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-8-425x420.png 425w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-8.png 1027w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">RaspiZero2<\/figcaption><\/figure>\n\n\n\n<p>De RaspiZero1 heeft alleen een voeding en wordt dus &#8216;headless&#8217; ingezet; dat wil zeggen dat de besturing vanaf mijn hoofdcomputer (Venus) over het draadloze WiFi-netwerk verloopt. Met deze Zero wil ik wat experimenteren met de GPIO-pinnen. Om dat te kunnen doen heb ik er de daarvoor benodigde 40-pins header opgezet. <br>Vervolgens heb ik het een en ander geactiveerd; o.a. SSH, SPI, I2C, Serial Port, 1-wire, Remote GPIO.<\/p>\n\n\n\n<p>Als eerste heb ik een LED-array aangesloten. Zie hieronder.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"385\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-10.png\" alt=\"\" class=\"wp-image-3996\" style=\"width:200px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-10.png 457w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-10-300x253.png 300w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-10-425x358.png 425w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><\/a><\/figure>\n\n\n\n<p>Deze LED-array heeft 6 blauwe ledjes met elk een voorschakelweerstand en een gezamenlijke gnd aansluiting. Hieronder zie je de module aangesloten op de GPIO-pinnen van de Zero. Ik kwam er achter dan (natuurlijk) niet alle GPIO pinnen zomaar te gebruiken zijn. Op de 40-pins bus is een aantal, de hieronder groen gemarkeerde, pinnen zondermeer w\u00e9l te gebruiken. Andere pinnen hebben meerdere functies en die kunnen soms dus niet meewerken. \ud83d\ude42<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-14.png\"><img loading=\"lazy\" decoding=\"async\" width=\"367\" height=\"688\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-14.png\" alt=\"\" class=\"wp-image-4004\" style=\"width:250px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-14.png 367w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-14-160x300.png 160w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-14-293x550.png 293w\" sizes=\"auto, (max-width: 367px) 100vw, 367px\" \/><\/a><\/figure>\n\n\n\n<p>Met GPIO4 en 18 heb ik wat zitten stoeien: soms werkte het wel, soms kreeg ik foutmeldingen in Python. Waarom dat was bleef mij vooralsnog onduidelijk.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-9-1024x429.png\" alt=\"\" class=\"wp-image-3994\" style=\"width:500px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-9-1024x429.png 1024w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-9-300x126.png 300w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-9-768x322.png 768w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-9-1536x644.png 1536w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-9-425x178.png 425w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-9.png 1711w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">RaspiZero1 met de LEDs 1, 3 en 6 aan (van boven naar beneden).<\/figcaption><\/figure>\n\n\n\n<p>Om de LEDs aan en uit te zetten heb ik gebruikgemaakt van het (reeds met Raspberry Pi OS op de Zero ge\u00efnstalleerde) <a href=\"https:\/\/flask.palletsprojects.com\/en\/stable\/#\">Flask<\/a>. Hiermee is in Python een simpele webserver op te zetten. <br><br>Ik had het boek &#8220;The Raspberry Pi Zero 2 W <em>GO!<\/em> Book&#8221; geschreven door Dogan Ibrahim en uitgegeven door Elektor aangeschaft. Jammer genoeg werkte het daarin opgenomen Python script niet! Het boek is in 2023 uitgegeven (het is nu 2025) en het opgenomen script maakt gebruik van een GPIO-library die inmiddels niet meer door de Zero gebruikt wordt en vervangen moet worden door de &#8220;<a href=\"https:\/\/gpiozero.readthedocs.io\/en\/stable\/index.html\">gpiozero<\/a>&#8221; library. Gemini AI heeft me goed geholpen om een alternatief programma te maken. Dit programma (app.py) is in een directory &#8220;server&#8221; op de Zero gezet. Na wat aanpassingen werkte het prima!<\/p>\n\n\n\n<p><em><strong>NB @Gemini!<\/strong><br>Ik had gevraagd om een webpagina om vanuit Python, met een knop een LED aan en uit te zetten.<br>Ik kreeg een Python-script en een HTML-pagina voorgesteld. Het maakte gebruik van de GPIO-library die ik dus niet wilde.<br>Toen ik vertelde dat ik gebruik wilde maken van gpiozero kwam er een tweede voorstel: dat werkte direct! Alleen werd er telkens een nieuwe pagina geopend na het aanklikken van een aan- of uitknop, Vervolgens aangegeven dat ik op dezelfde pagina wilde blijven.<br>Ik kreeg een voorstel met Javascript. Aangegeven dat ik geen gebruik wilde maken van Javascript.<br>Uit eindelijk (onderstaand) voorstel met dat gebruikmaakt van GET en POST. <br><br>Ik weet niet zo goed wat ik van AI moet vinden, maar dit vond ik werkelijk geweldig!<\/em><\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">from flask import Flask, render_template, request\nfrom gpiozero import LED\n\n\napp = Flask(__name__)\nled1 = LED(18)\nled2 = LED(23)\nled3 = LED(24)\nled4 = LED(25)\nled5 = LED(12)\nled6 = LED(16)\n\n\n@app.route(\"\/\", methods=[\"GET\", \"POST\"])\ndef index():\n    if request.method == \"POST\":\n        if \"led1_aan\" in request.form:\n            led1.on()\n            status = \"LED 1 ingeschakeld\"\n        elif \"led1_uit\" in request.form:\n            led1.off()\n            status = \"LED 1 uitgeschakeld\"\n        elif \"led2_aan\" in request.form:\n            led2.on()\n            status = \"LED 2 ingeschakeld\"\n        elif \"led2_uit\" in request.form:\n            led2.off()\n            status = \"LED 2 uitgeschakeld\"\n        elif \"led3_aan\" in request.form:\n            led3.on()\n            status = \"LED 3 ingeschakeld\"\n        elif \"led3_uit\" in request.form:\n            led3.off()\n            status = \"LED 3 uitgeschakeld\"\n        elif \"led4_aan\" in request.form:\n            led4.on()\n            status = \"LED 4 ingeschakeld\"\n        elif \"led4_uit\" in request.form:\n            led4.off()\n            status = \"LED 4 uitgeschakeld\"           \n        elif \"led5_aan\" in request.form:\n            led5.on()\n            status = \"LED 5 ingeschakeld\"\n        elif \"led5_uit\" in request.form:\n            led5.off()\n            status = \"LED 5 uitgeschakeld\"\n        elif \"led6_aan\" in request.form:\n            led6.on()\n            status = \"LED 6 ingeschakeld\"\n        elif \"led6_uit\" in request.form:\n            led6.off()\n            status = \"LED 6 uitgeschakeld\"            \n        else:\n            status = \"\"\n        return render_template(\"index.html\", status=status)\n    return render_template(\"index.html\", status=\"\")\n\nif __name__ == \"__main__\":\n    app.run(host=\"0.0.0.0\", port=80)<\/pre>\n\n\n\n<p>In de directory server maak je een directory &#8220;templates&#8221; aan waar de html-pagina komt te staan. Hieronder mijn eerst werkende webpagina (Index.html).<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">&lt;!DOCTYPE html>\n&lt;html>\n&lt;head>\n    &lt;title>GPIO-bediening&lt;\/title>\n&lt;\/head>\n&lt;body>\n    &lt;h1>GPIO-bediening&lt;\/h1>\n\n    &lt;form method=\"post\">\n\t\tLED 1\n        &lt;button type=\"submit\" name=\"led1_aan\">Aan&lt;\/button>\n        &lt;button type=\"submit\" name=\"led1_uit\">Uit&lt;\/button>\n    &lt;\/form>\n\n    &lt;form method=\"post\">\n\t\tLED 2\n        &lt;button type=\"submit\" name=\"led2_aan\">Aan&lt;\/button>\n        &lt;button type=\"submit\" name=\"led2_uit\">Uit&lt;\/button>\n    &lt;\/form>\n\t\n    &lt;form method=\"post\">\n\t\tLED 3\n        &lt;button type=\"submit\" name=\"led3_aan\">Aan&lt;\/button>\n        &lt;button type=\"submit\" name=\"led3_uit\">Uit&lt;\/button>\n    &lt;\/form>\n\n    &lt;form method=\"post\">\n\t\tLED 4\n        &lt;button type=\"submit\" name=\"led4_aan\">Aan&lt;\/button>\n        &lt;button type=\"submit\" name=\"led4_uit\">Uit&lt;\/button>\n    &lt;\/form>\n\t\n    &lt;form method=\"post\">\n\t\tLED 5\n        &lt;button type=\"submit\" name=\"led5_aan\">Aan&lt;\/button>\n        &lt;button type=\"submit\" name=\"led5_uit\">Uit&lt;\/button>\n    &lt;\/form>\n\n    &lt;form method=\"post\">\n\t\tLED 6\n        &lt;button type=\"submit\" name=\"led6_aan\">Aan&lt;\/button>\n        &lt;button type=\"submit\" name=\"led6_uit\">Uit&lt;\/button>\n    &lt;\/form>\n\t\n    &lt;p>{{ status }}&lt;\/p>\n&lt;\/body>\n&lt;\/html><\/pre>\n\n\n\n<p>Hieronder het resultaat: de webpagina op de Zero met de &#8216;knoppen&#8217; om de 6 ledjes aan en uit te zetten en daaronder de laatste opdracht weergegeven.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"444\" height=\"489\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-16.png\" alt=\"\" class=\"wp-image-4011\" style=\"aspect-ratio:0.9079946087820103;object-fit:cover;width:300px\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-16.png 444w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-16-272x300.png 272w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-16-425x468.png 425w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/a><figcaption class=\"wp-element-caption\">De eenvoudige webpagina.<\/figcaption><\/figure>\n\n\n\n<p class=\"has-large-font-size\">De &#8220;ontwikkelomgeving&#8221;<\/p>\n\n\n\n<p>Een mix van Notepad++, PuTTY en WinSCP. <br>Alles gebeurt vanaf mijn standaard computer; met de editor <a href=\"https:\/\/notepad-plus-plus.org\/\">Notepad++<\/a> heb ik daarop de bestanden &#8220;app.py&#8221; en &#8220;Index.html&#8221; aangemaakt en in een map op het bureaublad opgeslagen.<br>Op de RaspiZero1 heb ik in mijn home-directory een directory &#8220;server&#8221;, met daarin een directory &#8220;templates&#8221;, gemaakt. <br>Met het programma <a href=\"https:\/\/winscp.net\/eng\/docs\/lang:nl\">WinSCP<\/a> (een soort <em>Commander<\/em>) kan je heel makkelijk verbinding maken met de Zero en de gemaakte (en de daarna telkens aangepaste) bestanden naar de Zero kopi\u00ebren: &#8220;app.py&#8221; naar directory server, &#8220;Index.html&#8221; naar de director &#8220;templates&#8221;.<br>Met <a href=\"https:\/\/www.putty.org\/\">PuTTY<\/a> maak ik verbinding met de Zero en start vanuit de directory &#8220;server&#8221; de Flask server met de opdracht:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">sudo python3 app.py<\/pre>\n\n\n\n<p>De server is met &lt;CTRL&gt;&lt;C&gt; te stoppen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"601\" src=\"https:\/\/www.rommelkist.nl\/elec\/wp-content\/uploads\/2025\/03\/image-7-1024x601.png\" alt=\"\" class=\"wp-image-3992\" srcset=\"https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-7-1024x601.png 1024w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-7-300x176.png 300w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-7-768x451.png 768w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-7-1536x902.png 1536w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-7-2048x1203.png 2048w, https:\/\/www.rommelkist.nl\/wp-content\/uploads\/2025\/03\/image-7-425x250.png 425w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Zo ziet de schermvulling eruit!<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inmiddels twee exemplaren van de Raspberry Pi Zero 2 W in bezit. Ik heb elk voorzien van Raspberry Pi OS, 32bits Bookworm (Debian): RaspiZero1 op een 8GB micro-SD-kaartje en RaspiZero2 op een 32GB micro-SD-kaartje.De RaspiZero2 is volledig uitgerust: naast de voeding, een mini-HDMI naar HDMI-kabel voor het beeldscherm, op de USB aansluiting een OTG-kabeltje met dongle voor draadloze set; muis en toetsenbord. De RaspiZero1 heeft alleen een voeding en wordt dus &#8216;headless&#8217; ingezet; dat wil zeggen dat de besturing vanaf mijn hoofdcomputer (Venus) over het draadloze WiFi-netwerk verloopt. Met deze Zero wil ik wat experimenteren met de GPIO-pinnen. Om dat te kunnen doen heb ik<span class=\"more-link\"><a href=\"https:\/\/www.rommelkist.nl\/elec\/elektronica\/raspberry-pi-zero-wat-rommelen\/\">Read More &rarr;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,74],"tags":[172,40,171],"class_list":["entry","author-admin","post-3991","post","type-post","status-publish","format-standard","category-elektronica","category-raspberry-pi","tag-gpio","tag-led","tag-raspberry-pi-zero"],"_links":{"self":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts\/3991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/comments?post=3991"}],"version-history":[{"count":0,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/posts\/3991\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/media?parent=3991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/categories?post=3991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rommelkist.nl\/elec\/wp-json\/wp\/v2\/tags?post=3991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}