あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

WiringPi-Rubyを今のRaspberry Piで使う

Raspberry Pi Advent Calendarの4日目です。とくに全部埋めたいというわけじゃないのですが、ネタがないこともないので書いてます。

adventar.org

今日はWiringPiのRuby版ライブラリの話。WiringPiはRaspberry Pi界ではわりとよく聞くやつで、Ruby版のライブラリも用意されています。が、3年ほどメンテが止まっており、いまのRaspbianでは動作しません。

github.com

で、自分で手を入れて動くようにして、Pull requestしました。

github.com

いまのところLチカとI2C接続の部分しか試していないので、他の部分でちゃんと使えるか試せていないのですが、RubyでGPIOいじりたかったんだよ〜!という方がいらっしゃったら試してみてもらえると幸いです。

とりあえず、私のプルリクしたコミットを持ってきて、gem buildしてインストールすれば動きます。

何をしたかというと、submoduleで含まれていたWiringPiの元のライブラリのリビジョンを新しくしただけ。変更点をとくに確認していないのがアなところです…。それでも、SoCの判定方法変更に追従できておらず一切使えないという状況は脱しているので、少しでも動くようになっていればいいかなと思っています。また、Raspbian Stretchではextconf.rbにコンパイルオプションを足してやる必要があったので足しました。これに気づいたあとextconf.rbに含めるまでが時間を要しました……。ホントはわからないままここにわからんって書くつもりでいたくらいですので。

ちなみに、自分の作品の中ではICカード残高チェッカーでRubyを使用していて、今回を機にスクリプトを少し改良しています。I2C部分は外部コマンドを叩いていたのですが、ライブラリの動作を見るためにWiringPi-Rubyを使うように改めました。セットアップPlaybookも修正が必要な箇所がいくつか発生していたので整備し直しました。

[lcd-icreader] use wiringpi i2c class, fix playbook / fix libpafe url · Akkiesoft/RPi-tools@ba57a86 · GitHub

WiringPi-Rubyの話題は月末のコミケで発行する新刊の中でも触れています。良ければぜひ。