{"id":1810,"date":"2015-03-24T21:30:35","date_gmt":"2015-03-24T20:30:35","guid":{"rendered":"http:\/\/www.haeussler.name\/blogs\/hobby\/?p=1810"},"modified":"2022-08-20T14:01:21","modified_gmt":"2022-08-20T12:01:21","slug":"gpio-pins-des-raspberrypi-steuern","status":"publish","type":"post","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/gpio-pins-des-raspberrypi-steuern\/","title":{"rendered":"GPIO Pins des Raspberry Pi steuern"},"content":{"rendered":"<p>Um die GPIO Pins des RaspberryPi ansteuern zu k\u00f6nnen, gibt es <a href=\"http:\/\/wiringpi.com\/\" target=\"_blank\" rel=\"noopener\">wiringPi<\/a>. Diese Programmbibliothek kann man ganz einfach in verschiedenen Programmiersprachen (C\/C++, Phyton, Java oder PHP) einbinden. Die Funktionen der Libary erm\u00f6glichen unteranderem das Schalten eines High- bzw. Low-Zustandes auf den GPIO-Pins. Auch k\u00f6nnen die Pins als Eingang genutzt und mit wiringPi ausgelesen werden.<\/p>\n<p>Als erstes sollte man die Linux Pakete und die Firmware des Raspberry Pi updaten, siehe dazu meinen Blog-Beitrag <a title=\"Raspberry Pi einrichten\" href=\"http:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/raspberry-pi-einrichten\/\">Raspberry Pi einrichten<\/a>.<\/p>\n<p>Dann l\u00e4dt man wiringPi mit git herunter:<\/p>\n<pre>git clone git:\/\/git.drogon.net\/wiringPi<\/pre>\n<p>Wenn der Download abgeschlossen ist sollte im aktuellen Verzeichnis ein neuer Ordner &#8222;wiringPi&#8220; erscheinen. In diesem Ordner ist dann der Quellcode der Programmbibliothek abgelegt.<\/p>\n<p><!--more--><\/p>\n<p>Um wiringPi verwenden zu k\u00f6nnen, m\u00fcssen wir die Software im n\u00e4chsten Schritt kompilieren und installieren. Zur Installation bringt die Software ein Build-Skript mit. Um es auszuf\u00fchren wechselt man in das entsprechende Verzeichnis und setzen entsprechende Zugriffsrechte mit:<\/p>\n<pre>cd wiringBPi\nchmod +x build<\/pre>\n<p>Jetzt kann man das Build-Skript ausf\u00fchren mit:<\/p>\n<pre>sudo .\/build<\/pre>\n<p>Nach dem Build ist wiringPi erfolgreich installiert und kann verwendet werden. WiringPi ist sehr vielseitig und kann daher mit den Programmiersprachen C\/C++, Phyton, Java oder PHP genutzt werden. Au\u00dferdem ist das Schalten der GPIO Pins direkt \u00fcber die Konsole m\u00f6glich.<\/p>\n<p>Grundlegend ist festzuhalten dass die GPIO Pins als Eingang oder Ausgang konfiguriert werden k\u00f6nnen. Ein Pegel von 5 Volt bedeutet High und ein Pegel von 0 Volt bedeutet Low. Dies ist bei der Beschaltung der GPIO-Pins zu beachten um eine korrekte Funktionalit\u00e4t zu gew\u00e4hrleisten und um den RaspberryPi nicht zu besch\u00e4digen. Neben den Zust\u00e4nden High und Low unterst\u00fctzen einige Pins auch Funktionen wie PWM und UART.<\/p>\n<p>Um herauszufinden wie die GPIO Pins momentan konfiguriert und beschalten sind, kann man folgenden Befehl absetzen:<\/p>\n<pre>gpio readall<\/pre>\n<p>Will man zum Beispiel den GPIO Pin 17 ansteuern ist das physikalisch Pin 11 und aus Sicht von wiringPi Pin 0. Anhand der ausgegebenen Tabelle vom Befehl gpio readall kann dies nachvollzogen werden:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1811\" data-permalink=\"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/gpio-pins-des-raspberrypi-steuern\/attachment\/gpio-readall\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/gpio-readall.jpg?fit=671%2C417&amp;ssl=1\" data-orig-size=\"671,417\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Christian H\\u00e4ussler&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1427231941&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"gpio-readall\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/gpio-readall.jpg?fit=530%2C329&amp;ssl=1\" class=\"alignnone size-medium wp-image-1811\" src=\"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/gpio-readall-300x186.jpg?resize=300%2C186\" alt=\"gpio-readall\" width=\"300\" height=\"186\" srcset=\"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/gpio-readall.jpg?resize=300%2C186&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/gpio-readall.jpg?w=671&amp;ssl=1 671w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Wenn man Pin 17 beschalten will, muss man diesem zun\u00e4chst sagen, ob er als Eingang oder Ausgang fungieren soll. Will man zum Beispiel GPIO Pin 17 als Ausgang schalten, verwendet man dazu folgenden Befehl mit dem Parameter &#8222;out&#8220; (als Eingang w\u00fcrde man &#8222;in&#8220; nehmen):<\/p>\n<pre>gpio export 17 out<\/pre>\n<p>Anschlie\u00dfend soll zum Beispiel an GPIO Pin 17 ein High-Zustand (5 Volt) angelegt werden. Das geht mit folgendem Befehl:<\/p>\n<pre>gpio -g write 17 1<\/pre>\n<p>Ruft man jetzt die Pin-\u00dcbersicht mit gpio readall erneut auf, wird ersichtlich, dass der GPIO Pin 17 bzw. physikalisch 11 bzw. wiringPi Pin 0 auf Output und High geschalten ist. Wenn man anschlie\u00dfend vom High zum Low wechseln m\u00f6chte, ersetzt man die 1 durch eine 0:<\/p>\n<pre>gpio -g write 17 0<\/pre>\n<p>Diesen Befehl zum Schalten der GPIO Pins kann man dann in beliebigen Skripten verwenden.<\/p>\n<p>Zum Beispiel in einem PHP-Skript mit:<\/p>\n<pre>$val = trim(@shell_exec(\"\/usr\/local\/bin\/gpio -g write 17 0\"));<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Um die GPIO Pins des RaspberryPi ansteuern zu k\u00f6nnen, gibt es wiringPi. Diese Programmbibliothek kann man ganz einfach in verschiedenen Programmiersprachen (C\/C++, Phyton, Java oder PHP) einbinden. Die Funktionen der Libary erm\u00f6glichen unteranderem das Schalten eines High- bzw. Low-Zustandes auf den GPIO-Pins. Auch k\u00f6nnen die Pins als Eingang genutzt und mit wiringPi ausgelesen werden. Als erstes sollte man die Linux Pakete und die Firmware des Raspberry Pi updaten, siehe dazu meinen Blog-Beitrag Raspberry Pi einrichten. Dann l\u00e4dt man wiringPi mit git herunter: git clone git:\/\/git.drogon.net\/wiringPi Wenn der Download abgeschlossen ist sollte im aktuellen Verzeichnis ein neuer Ordner &#8222;wiringPi&#8220; erscheinen. In diesem Ordner ist dann der Quellcode der Programmbibliothek abgelegt.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[89],"tags":[94,90,87,93],"class_list":["post-1810","post","type-post","status-publish","format-standard","hentry","category-raspberry-pi","tag-gpio","tag-iot","tag-raspberry-pi","tag-wiringpi"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p76vFd-tc","jetpack-related-posts":[{"id":1773,"url":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/raspberry-pi-verschickt-whatsapp\/","url_meta":{"origin":1810,"position":0},"title":"Raspberry Pi verschickt WhatsApp","author":"Christian H\u00e4ussler","date":"27. Januar 2015","format":false,"excerpt":"WhatsApp Nachrichten vom Raspberry Pi verschicken, z.B. wenn die Waschmaschine fertig ist, das w\u00e4re doch cool. Also warum nicht, alles was man dazu braucht ist: Raspberry Pi mit Raspbian WhatsApp API yowsup (Python Script) Handynummer (z.B. von Sim-Karte-Gratis.de) Als erstes sollte man die Linux Pakete und die Firmware des Raspberry\u2026","rel":"","context":"In &quot;RaspberryPi&quot;","block_context":{"text":"RaspberryPi","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/category\/raspberry-pi\/"},"img":{"alt_text":"RaspberryPi-WhatsApp","src":"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/RaspberryPi-WhatsApp-300x161.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2376,"url":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/balena-cloud-mit-einem-raspberry-pi-4\/","url_meta":{"origin":1810,"position":1},"title":"Balena Cloud mit einem Raspberry Pi 4","author":"Christian H\u00e4ussler","date":"15. Mai 2024","format":false,"excerpt":"Verwalte und bereite IoT-Anwendungen m\u00fchelos mit Balena Cloud auf deinem Raspberry Pi 4 vor. Entdecke die Vorteile und folge unserer Anleitung! #BalenaCloud #IoT","rel":"","context":"In &quot;RaspberryPi&quot;","block_context":{"text":"RaspberryPi","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/category\/raspberry-pi\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2459,"url":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/deepseek-lokal-auf-dem-raspberry-pi-5-nutzen\/","url_meta":{"origin":1810,"position":2},"title":"DeepSeek lokal auf dem Raspberry Pi 5 nutzen","author":"Christian H\u00e4ussler","date":"31. Januar 2025","format":false,"excerpt":"Heute zeige ich Euch, wie ihr DeepSeek R1 \u2013 ein leistungsstarkes KI-Sprachmodell \u2013 direkt auf eurem Raspberry Pi 5 installieren und nutzen k\u00f6nnt. Raspberry Pi Warum KI lokal auf dem Raspberry Pi nutzen?Bevor es losgeht, m\u00f6chte ich Euch die Vorteile einer lokalen Installation erkl\u00e4ren: Datenschutz: Alle Anfragen bleiben auf eurem\u2026","rel":"","context":"In &quot;RaspberryPi&quot;","block_context":{"text":"RaspberryPi","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/category\/raspberry-pi\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/image.png?fit=1024%2C768&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/image.png?fit=1024%2C768&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/image.png?fit=1024%2C768&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/image.png?fit=1024%2C768&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1788,"url":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/samba-auf-dem-raspberry-pi\/","url_meta":{"origin":1810,"position":3},"title":"Samba auf dem Raspberry Pi","author":"Christian H\u00e4ussler","date":"29. Januar 2015","format":false,"excerpt":"Es ist sehr hilfreich, einen Sambaserver auf dem Raspberry Pi einzurichten. Damit l\u00e4sst sich bequem im lokalen Netzwerk auf den Raspberry Pi per Netzwerkfreigabe zugreifen, um Dateien auszutauschen. Als erstes sollte man die Linux Pakete und die Firmware des Raspberry Pi updaten, siehe dazu meinen Blog-Beitrag Raspberry Pi einrichten. Dann\u2026","rel":"","context":"In &quot;RaspberryPi&quot;","block_context":{"text":"RaspberryPi","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/category\/raspberry-pi\/"},"img":{"alt_text":"RaspberryPi_Samba","src":"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/RaspberryPi_Samba-300x130.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1755,"url":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/openhab-auf-dem-raspberry-pi-installieren\/","url_meta":{"origin":1810,"position":4},"title":"openHAB auf dem Raspberry Pi installieren","author":"Christian H\u00e4ussler","date":"27. Januar 2015","format":false,"excerpt":"openHAB ist eine in Java geschriebene Software f\u00fcr die Integration verschiedener Home-Automation-Systeme und Technologien in einer einzigen L\u00f6sung. openHAB bietet \u00fcbergreifende Automatisierungsregeln und eine einheitliche Benutzerschnittstelle. Das Projekt ist, da openHAB urspr\u00fcnglich nicht f\u00fcr den Raspberry Pi entwickelt wurde, schon sehr umfangreich und bietet eine breite Unterst\u00fctzung f\u00fcr Ger\u00e4te und\u2026","rel":"","context":"In &quot;openHAB&quot;","block_context":{"text":"openHAB","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/category\/openhab\/"},"img":{"alt_text":"openHAB+RaspberryPi","src":"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/openHAB-RaspberryPi.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1766,"url":"https:\/\/www.haeussler.name\/blogs\/hobby\/raspberry-pi\/raspberry-pi-einrichten\/","url_meta":{"origin":1810,"position":5},"title":"Raspberry Pi einrichten","author":"Christian H\u00e4ussler","date":"26. Januar 2015","format":false,"excerpt":"Der Raspberry Pi Model B ist einer der mittlerweile weit verbreitesten Einplatinen-Computer der Welt. Zeit sich auch einmal so einen Einplatinen-Computer zuzulegen. Zu den technische Daten des Raspberry Pi muss ich denke ich nicht viel erz\u00e4hlen, das solltet man entweder bereits wissen oder man schaut hier nach: http:\/\/www.raspberrypi.org Zum Betrieb\u2026","rel":"","context":"In &quot;RaspberryPi&quot;","block_context":{"text":"RaspberryPi","link":"https:\/\/www.haeussler.name\/blogs\/hobby\/category\/raspberry-pi\/"},"img":{"alt_text":"pi-model-b","src":"https:\/\/i0.wp.com\/www.haeussler.name\/blogs\/hobby\/wp-content\/uploads\/pi-model-b-300x151.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/posts\/1810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/comments?post=1810"}],"version-history":[{"count":2,"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/posts\/1810\/revisions"}],"predecessor-version":[{"id":2098,"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/posts\/1810\/revisions\/2098"}],"wp:attachment":[{"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/media?parent=1810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/categories?post=1810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.haeussler.name\/blogs\/hobby\/wp-json\/wp\/v2\/tags?post=1810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}