Raspberry PI の GPIO(General Purpose Input/Output) は Shell Script から リダイレクトで操作できるらしい。
ということは、ストリーム入出力を使えば mono から操作できるのでは?ということでやってみました。
VB のプログラムは以下。(VisualStudio でコンパイルして RaspiGPIOAccess.exe を生成する)
Module RaspiGPIOAccess Sub Main(args() As String) Dim path = args(0) If args.Length = 1 Then ' Read Using sr As New IO.StreamReader(path) Dim value = sr.ReadLine() Console.WriteLine(value) End Using Else ' Write Using sw = New IO.StreamWriter(path) Dim value = args(1) sw.WriteLine(value) sw.Flush() End Using End If End Sub End Module
使い方は以下。
- "sudo mono RaspiGPIOAccess.exe パス名" とした場合は読み込み
例: RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value
- "sudo mono RaspiGPIOAccess.exe パス名 値" とした場合は書き込み
例: RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 1
以下、実行結果。
# 最初に GPIO の状態を見る ~ $ ls /sys/class/gpio/ export gpiochip0 unexport # GPIO 4 の制御を開始 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/export 4 ~ $ ls /sys/class/gpio/ export gpio4 gpiochip0 unexport # GPIO 4 を書き込みモードに ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/direction out ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/direction out # GPIO 4 の値を読む ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 0 # GPIO 4 に 1 を書く (そののち読む) ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 1 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 1 # GPIO 4 に 0 を書く (そののち読む) ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 0 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/gpio4/value 0 # GPIO 4 の制御を終了 ~ $ sudo mono RaspiGPIOAccess.exe /sys/class/gpio/unexport 4 ~ $ ls /sys/class/gpio/ export gpiochip0 unexport
素直にアクセスできました。
ただ、ハード結線の設備とかまだ持っていないため、実際に入出力できているかの確認はしていません(汗