{"id":5312,"date":"2015-03-01T02:22:32","date_gmt":"2015-03-01T01:22:32","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=5312"},"modified":"2024-03-15T09:30:17","modified_gmt":"2024-03-15T08:30:17","slug":"raspberry-pi-per-bash-mit-gpio-lib-wiringpi-per-phyton-mit-rpi-gpio-und-java-mit-pi4j-ansteuern-der-pins-auf-kali","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=5312","title":{"rendered":"Raspberry Pi: Per Bash mit GPIO Lib wiringpi, per Phyton mit RPi.GPIO und Java mit pi4j ansteuern der Pins auf Kali"},"content":{"rendered":"<p>Um die Pins per Bash anzusteuern, kann die wiringpi Lib verwendet werden. Die GPIO Homepage oder auch die Pin Belegung des rPi ist hilfreich.<\/p>\n<p>So, jetzt erst einmal alles installieren und testen mit einer LED mit Widerstand an Pin 7 (4. Pin von oben links) und Masse (ganz unten links).<\/p>\n<p>Zuerst alles f\u00fcr die <strong>Bash<\/strong>, um von der Konsole auf die Pins zugreifen zu k\u00f6nnen:<!--more--><\/p>\n<pre class=\"lang:default decode:true \" >\r\n# installieren der wiringPi lib\r\n# git installieren\r\nsudo apt-get install git-core\r\n# repo clonen\r\ngit clone git:\/\/git.drogon.net\/wiringPi\r\ncd wiringPi\r\ngit pull origin\r\ncd wiringPi\r\n# compilieren \r\n.\/build\r\n# test die Version ausgeben\r\ngpio -v\r\n# Ergebnis: gpio version: 2.25\r\n# Status aller ausgeben mit\r\ngpio readall\r\n# Ergebnis:\r\n<\/pre>\n<p>Wir sehen nun alle Werte. Z.B. ist der GPIO. 7 auf OUT geschaltet und der Wert in Spalte V(alue) ist 0.<br \/>\nDa ich eine LED zwischen GPIO 7 und Masse geklemmt habe ist die nun aus.<br \/>\n<a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.38.44.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.38.44.png\" alt=\"alle aus\" width=\"884\" height=\"574\" class=\"aligncenter size-full wp-image-5314\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.38.44.png 884w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.38.44-300x195.png 300w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><br \/>\nJetzt schalten wir die LED an Pin 7 an mit:<\/p>\n<pre class=\"lang:default decode:true \" >\r\ngpio write 7 1<\/pre>\n<p>und die LED geht an. Der Status ist nun auf 1 in der V Spalte:<br \/>\n<a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.37.32.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.37.32.png\" alt=\"GPIOs\" width=\"884\" height=\"579\" class=\"aligncenter size-full wp-image-5313\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.37.32.png 884w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2015\/02\/Bildschirmfoto-2015-02-27-um-15.37.32-300x196.png 300w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Jetzt soll auch der Zugriff per Python laufen.<br \/>\nDa es bei Kali kein Python Package gibt, bauen wir <a href=\"https:\/\/pypi.org\/project\/RPi.GPIO\/\" title=\"rpi.gpio\" target=\"_blank\" rel=\"noopener noreferrer\">RPi.GPIO<\/a> selbst zusammen:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n# Lib downloaden\r\nwget https:\/\/pypi.python.org\/packages\/source\/R\/RPi.GPIO\/RPi.GPIO-0.5.11.tar.gz\r\n# auspacken\r\ntar -xvf RPi.GPIO-0.5.11.tar.gz\r\ncd RPi.GPIO-0.5.11\r\n# instalieren\r\nsudo python setup.py install\r\n# l\u00f6schen\r\ncd ~\r\nsudo rm -rf RPi.GPIO-0.* <\/pre>\n<p>So jetzt k\u00f6nnen wir auch von Phyton aus auf die Pins zugreifen, hier mal ein Testscript <code>led.py<\/code>, welches die LED an Pin 7 anschaltet:<\/p>\n<pre class=\"lang:python decode:true \" >\r\n#!\/usr\/bin\/python\r\n\r\nimport RPi.GPIO as GPIO\r\nGPIO.setwarnings(False)\r\nGPIO.setmode(GPIO.BOARD)\r\nGPIO.setup(7, GPIO.OUT)\r\nGPIO.output(7, True)<\/pre>\n<pre class=\"lang:default decode:true \" >chmod +x led.py<\/pre>\n<p>Und ausf\u00fchren des Python Script als sudo:<\/p>\n<pre class=\"lang:default decode:true \" >sudo .\/led.py<\/pre>\n<p>Hier gibt es noch <a href=\"https:\/\/sourceforge.net\/p\/raspberry-gpio-python\/wiki\/Examples\/\" title=\"python-gpio\" target=\"_blank\" rel=\"noopener noreferrer\">Beispiele<\/a>.<\/p>\n<p>Das Java Interface pi4j kann bei der Gelegenheit auch gleich installiert werden mit:<\/p>\n<pre class=\"lang:default decode:true \" >\r\ncurl -s get.pi4j.com | sudo bash\r\n<\/pre>\n<p>Ok, bei Kali schl\u00e4gt das fehl. Deshalb manuel:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n# archive holen\r\nsudo wget http:\/\/get.pi4j.com\/download\/pi4j-1.0-SNAPSHOT.deb\r\n# installieren\r\nsudo dpkg -i pi4j-1.0-SNAPSHOT.deb\r\n# beispiele compilieren, dauert 10 min\r\nsudo cd \/opt\/pi4j\/examples\r\nsudo .\/build\r\n# test eines Beispiels, Ausf\u00fchren des Blink Beispiels\r\nsudo java -classpath .:classes:\/opt\/pi4j\/lib\/'*' BlinkGpioExample<\/pre>\n<p>Kommt unter Kali zu folgenden Fehler, da nicht die aktuelle Java Version installiert ist, sondern 1.6.0_34. Deshalb sind auch beim compilieren Warnungen aufgetreten.<\/p>\n<pre class=\"lang:default decode:true \" >Exception in thread \"main\" java.lang.UnsupportedClassVersionError: com\/pi4j\/io\/gpio\/GpioFactory : Unsupported major.minor version 51.0\r\n\tat java.lang.ClassLoader.defineClass1(Native Method)\r\n\tat java.lang.ClassLoader.defineClass(ClassLoader.java:643)\r\n\tat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)\r\n\tat java.net.URLClassLoader.defineClass(URLClassLoader.java:277)\r\n\tat java.net.URLClassLoader.access$000(URLClassLoader.java:73)\r\n\tat java.net.URLClassLoader$1.run(URLClassLoader.java:212)\r\n\tat java.security.AccessController.doPrivileged(Native Method)\r\n\tat java.net.URLClassLoader.findClass(URLClassLoader.java:205)\r\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:323)\r\n\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)\r\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:268)\r\n\tat BlinkGpioExample.main(BlinkGpioExample.java:55)<\/pre>\n<p>Ok, dann auch noch Java 1.7 <a href=\"http:\/\/blog.wenzlaff.de\/?p=2943\" title=\"java-installieren\" target=\"_blank\" rel=\"noopener noreferrer\">umschalten<\/a>.<\/p>\n<pre class=\"lang:default decode:true \" >update-alternatives --config java\r\nupdate-alternatives --config javac\r\n# test\r\njava -version\r\n# ok \r\n# java version \"1.7.0_75\"\r\n# OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~deb7u1)\r\n# OpenJDK Zero VM (build 24.75-b04, mixed mode)\r\n#\r\n# neu compilieren, nochmal 10 min warten f\u00fcr alle 34 Beispiele \r\nsudo cd \/opt\/pi4j\/examplessudo \r\n.\/build\r\n# ok, keine Fehler mehr\r\n<\/pre>\n<p>So nun das Testen ob die Java Programme ausgef\u00fchrt werden k\u00f6nnen.<\/p>\n<p>Das klappt leider noch nicht, es kommt die Fehlermeldung das die libpi4j.so nicht gefunden wird:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nroot@pi:\/opt\/pi4j\/examples# java -classpath .:classes:\/opt\/pi4j\/lib\/'*' BlinkGpioExample\r\n&lt;--Pi4J--&gt; GPIO Blink Example ... started.\r\nFeb 28, 2015 7:53:25 PM com.pi4j.util.NativeLibraryLoader load\r\nSCHWERWIEGEND: Unable to load [libpi4j.so] using path: [\/lib\/libpi4j.so]\r\njava.lang.UnsatisfiedLinkError: \/tmp\/libpi4j2137877968790734584.so: \/tmp\/libpi4j2137877968790734584.so: Kann die Shared-Object-Datei nicht \u00f6ffnen: Datei oder Verzeichnis nicht gefunden<\/pre>\n<p>Die gibt es da auch nicht. Da mache ich dann bei Gelegenheit weiter&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um die Pins per Bash anzusteuern, kann die wiringpi Lib verwendet werden. Die GPIO Homepage oder auch die Pin Belegung des rPi ist hilfreich. So, jetzt erst einmal alles installieren und testen mit einer LED mit Widerstand an Pin 7 (4. Pin von oben links) und Masse (ganz unten links). Zuerst alles f\u00fcr die Bash, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=5312\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eRaspberry Pi: Per Bash mit GPIO Lib wiringpi, per Phyton mit RPi.GPIO und Java mit pi4j ansteuern der Pins auf Kali\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":4233,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[538,5,1023],"tags":[1995,2178,1996,1998,1997,1030,717],"class_list":["post-5312","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elektronik","category-java","category-raspberry-pi","tag-gpio","tag-java","tag-phyton","tag-pi4j","tag-pins","tag-rpi","tag-schnittstelle"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/5312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5312"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/5312\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/media\/4233"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5312"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}