Raspberry PiとNode.jsでWebからGPIO操作
jsからRaspiのGPIOを操作する
jsGPIO を使う。
READMEにある通り準備をする。
Node.jsのインストール
よしなに。
quick2wire-gpio-admin のインストール
これもREADME通りに入れればいいが、少し説明が古いので追記。
make sudo make install
gpioグループを追加する。
サンプルではsudo adduser $USER gpio
となっているが動かなかったので、usermod
で。
sudo usermod -aG gpio $USER
※ debian系であるraspbianならadduser使えるはずなんですけどね。
Linuxでユーザーをグループに追加する - Qiita
次に22pinを例に以下のような操作があるものの、Permission Deniedばかりで全然うまくいかない。
% gpio-admin export 22 % cat /sys/devices/virtual/gpio/gpio22/value 0 % echo out > /sys/devices/virtual/gpio/gpio22/direction % echo 1 > /sys/devices/virtual/gpio/gpio22/value
gpioのパスが変わってるんだそうな。 プルリクは飛んでるのにマージされてないらしい。
ということでプルリクの通りに src/gpio-admin.c
を直す。28行目くらい。
static void allow_access_by_user(unsigned int pin, const char *filename) { struct stat info; char *sys_path = "/sys/class/gpio/gpio%u/%s"; if (stat("/sys/class/gpio", &info) != 0) sys_path = "/sys/devices/virtual/gpio/gpio%u/%s"; char path[PATH_MAX]; int size = snprintf(path, PATH_MAX, sys_path, pin, filename);
これで % gpio-admin export 22
が叩けるようになる。
あとは
npm start
なり、
nodejs example-server.js
なりを実行。localhost:8000
で動作を確認。
忘備録
テストしまくってたらポートが被ってnode.jsが起動しなかった qiita.com