LoginSignup
0
0

More than 3 years have passed since last update.

Node-REDからRaspberry PiのステータスLEDを操作する

Last updated at Posted at 2019-10-15

Raspberry PiのステータスLEDについて

image.png

Raspberry Pi の基板上には、電源LED(Zeroにはない)の他に緑色のSTATUS "ACT" LEDが搭載されており、GPIOで制御することができます。

参考: Schematics https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md

Raspbianデフォルトでは、mmc0(microSD)アクセス時に点灯するように設定されていて、ファイルアクセス時に点滅します。この設定は、sysfsに定義されている /sys/class/leds/led0 に値を設定することで、設定変更できます。

設定できる値は、

none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer oneshot heartbeat backlight gpio cpu0 cpu1 cpu2 cpu3 default-on input panic [mmc0] mmc1 rfkill0 rfkill1 

であり、現在の値は[]で囲まれています。(デフォルトがmmc0です)
gpioを設定することで、GPIOポートから操作できるようになります。その際のポート番号は、/sys/class/leds/led0/gpioに設定したものになります。

Node-REDから設定する

Node-REDで操作する場合、piユーザはroot権限を持ちますが、piユーザのままで /sys/class/leds/led0 に書き込むことはできませんので、sudo してteeコマンドを使うことになります。GPIO 20(38ピン)に設定する場合は、以下のようなFlowになります。

image.png

[{"id":"5fc1cf3a.d659e","type":"exec","z":"d62ca71d.243728","command":"echo gpio  | sudo tee /sys/class/leds/led0/trigger","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":540,"y":80,"wires":[[],[],[]]},{"id":"11f2cb85.50b1f4","type":"inject","z":"d62ca71d.243728","name":"ボードLEDをGPIO20に","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":80,"wires":[["5fc1cf3a.d659e","96405c80.8979a"]]},{"id":"74210ad3.0b1e24","type":"exec","z":"d62ca71d.243728","command":"echo 20 | sudo tee /sys/class/leds/led0/gpio","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":530,"y":160,"wires":[[],[],[]]},{"id":"96405c80.8979a","type":"delay","z":"d62ca71d.243728","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":270,"y":160,"wires":[["74210ad3.0b1e24"]]}]

(Node-REDの起動時に自動設定する場合は、以下のようにinjectノードの「Node-RED起動の0.1秒後以下を行う」にチェックを入れてください)
image.png

これで、rpi-gpioノード
node-red-node-pi-gpioを使ってLEDをON/OFFできるようになります。

image.png

GPIO20を使う場合、rpi-gpio outノードの設定は以下のようになります。

image.png

LEDとGPIOポートの割り当ては、設定Flowの下側のexecノードのecho 20の部分で変更できます。LEDに割り当てたポートは、GPIOで操作できなくなりますので注意してください。

その他

rpi-gpioノードを使わず、直接/sys/class/leds/led0/gpioに値を書き込んでLEDを制御することもできます。

Raspberry Pi 2/3/4では、電源LED(赤色)も操作することができます。ステータスLEDと同様に /sys/class/leds/led1へ設定しますが、設定を変更することでボードの稼働状態がわからなくなりますので、電源LEDは極力操作しないほうがいいのではないかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0