{"id":1818,"date":"2024-09-24T08:00:00","date_gmt":"2024-09-24T06:00:00","guid":{"rendered":"https:\/\/www.fuhselab.de\/?p=1818"},"modified":"2024-08-20T08:59:35","modified_gmt":"2024-08-20T06:59:35","slug":"arduino-led-interface-4","status":"publish","type":"post","link":"https:\/\/www.fuhselab.de\/index.php\/2024\/09\/24\/arduino-led-interface-4\/","title":{"rendered":"Arduino LED Interface 4"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><br>Das Arduino LED Interface geht in die vierte Runde und k\u00fcmmert sich um die Schreibrechte am seriellen Port und schaut nochmal auf den Arduino Code\u2026<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schreibrechte auf \/dev\/ttyACM0:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn sich die LED nicht \u00fcber das Interface, also \u00fcber die Webseite schalten l\u00e4sst, dann sind eventuell die Zugriffsrechte f\u00fcr die serielle Schnittstelle nicht richtig eingestellt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entscheidend sind hier die Schreibrechte die jeweils f\u00fcr Besitzer, Gruppe und Andere eingestellt sind. Der Besitzer und die Gruppe sollten lesen und schreiben k\u00f6nnen. F\u00fcr &#8222;Andere&#8220; sollte es reichen, wenn nur Schreibrechte vergeben werden.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sudo chmod o=www \/dev\/ttyACM0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Mit dem Befehl \u201cchmod\u201c k\u00f6nnen die Zugriffsrechte eingestellt werden. Die drei Rechte sind dabei die Zugriffsrechte f\u00fcr lesen, schreiben und ausf\u00fchren. Diese Rechte k\u00f6nnen f\u00fcr UGO gesetzt werden und damit ist der User, die Gruppe und Others gemeint. Der Bindestrich bedeutet das entsprechende Recht ist nicht gesetzt. Der gew\u00fcnschte Ordner oder die gew\u00fcnschte Datei kann einfach ausgew\u00e4hlt werden, indem eine entsprechende Pfadangabe hinter den Befehl gesetzt wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr das Arduino Projekt \u201cLED Interface\u201c geht es also darum, ein Schreibrecht f\u00fcr \u201cOthers\u201c zu setzen. Der Benutzer muss nicht ge\u00e4ndert werden und kann \u201croot\u201c bleiben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Programmierung:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>char c;\n\nvoid setup()\n{\nSerial.begin(9600);\nSerial.println(\"LED-Interface\");\npinMode(13, OUTPUT);\n}\n\nvoid loop()\n{\nif (Serial.available() > 0)\n{\nc = Serial.read();\nSerial.println(c);\n}\n\nelse\n{\ndelay(100);\n}\n\nif (c=='n')\n{\nSerial.println(\"on\");\ndigitalWrite(13, HIGH);\n}\n\nif (c=='f')\n{\nSerial.println(\"off\");\ndigitalWrite(13, LOW);\n}\nc='\\0';\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Code wird in der Arduino IDE geschrieben und dann auf das Board hochgeladen. Wenn alles geklappt hat, sollte es m\u00f6glich sein die LED \u00fcber das Interface zu schalten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entscheidend sollte dabei die Bezeichnung des Ports sein. Im PHP Code sollte also der Port eingetragen sein, der auch in der Arduino IDE eingestellt wurde.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n$port = fopen(\"\/dev\/ttyACM0\",\"w\");\nsleep(2);\n?><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schreibrechte per PHP Extension oder udev-Regeln:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach einem Neustart des Systems ist es sehr wahrscheinlich, dass die Zugriffsrechte wieder auf den Benutzer &#8222;root&#8220; gesetzt werden und die Schreibrechte f\u00fcr &#8222;Andere&#8220; nicht gesetzt sind. Gibt es eine dauerhafte L\u00f6sung f\u00fcr dieses Problem?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die m\u00f6gliche L\u00f6sung per PHP Extension werde ich mir vermutlich erst sp\u00e4ter im Rahmen des n\u00e4chsten PHP Workshops anschauen. Auch die Sache mit den udev-Regeln soll hier nur grob beschrieben werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eigene udev-Regeln erstellt man in einem Editor mit Root-Rechten und legt sie im Verzeichnis \/etc\/udev\/rules.d\/ ab. Den Dateinamen sollte man mit einer hohen Zahl oder ohne Zahl beginnen. Wichtig ist, dass die Dateien, die die Regeln enthalten, mit .rules enden, da sie sonst nicht ausgef\u00fchrt werden. F\u00fcr unser LED Interface k\u00f6nnten wir also die Datei &#8222;interface.rules&#8220; erstellen. Nun m\u00fcssten wir nur noch wissen welche Befehle in diese Datei zu schreiben sind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Arduino LED Interface geht in die vierte Runde und k\u00fcmmert sich um die Schreibrechte am seriellen Port und schaut nochmal auf den Arduino Code\u2026<\/p>\n","protected":false},"author":1,"featured_media":48,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[22],"class_list":["post-1818","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","tag-arduino-gruppe-peine"],"_links":{"self":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/comments?post=1818"}],"version-history":[{"count":1,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1818\/revisions"}],"predecessor-version":[{"id":1819,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/posts\/1818\/revisions\/1819"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media\/48"}],"wp:attachment":[{"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/media?parent=1818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/categories?post=1818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fuhselab.de\/index.php\/wp-json\/wp\/v2\/tags?post=1818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}