ファームウェア・DSIO
LED電光掲示板は Dallas 1-Wire Busとのインターフェース回路を 有しています。 1-Wire Busは3線、あるいは2線からなるバスで、 複数のセンサー等のデバイスを接続することができます。 デバイスは64bitからなる固有のIDを有し、別々にアクセスすることができます。
代表的なデバイスとしてはDS18S20という温度センサーがあります。 この温度センサーは1/16度の分解能を有し、 また、複数のセンサーをバスに接続できることから 面白い応用が可能です。
使用法の概要
1-wire bus上のデバイスにアクセスするには、 bus上のデバイスのIDを知る必要があります。 そのために dsenumコマンドでデバイスのIDを列挙させます。次に dsconvtコマンドですべてのセンサー温度変換コマンドを発行し、 そのあと dsgettコマンドで各センサーの測定値を読出します。
コマンド:dsenum
用例:dsenum
1-Wire busに接続されているデバイスのIDを列挙する。
応答例:(何も接続されていない場合) dsenum E no devices. Ok. 応答例:(3個の温度センサーが接続されている場合) dsenum D 1002890f00000037 D 101b8c0f00000028 D 10fb890f000000d3 Ok.
コマンド:dsconvt
用例:dsconvt [ID]
1-wireバスに 温度変換命令を発行する。 引数は16進数16桁のデバイスのIDコードで、 指定されれば、そのデバイスだけへの変換命令が発行され、 指定されなければ、バス上の全てのデバイスへの変換命令が発行される。
バスを監視し、変換の完了を待つので、 バス上に指定された温度センサーが無い場合にはタイムアウト・エラーになる。
応答例:(何も接続されていない場合) dsconvt E convT timeout Ok. 応答例:(温度センサーが接続されている場合) dsconvt Ok.
コマンド:dsgett
用例:dsgett [ID]
センサーの温度の変換値を読出す。 単位は度で、小数点以下2桁までの値が返される。 引数は16進数16桁のデバイスのIDコードで、 指定されれば、そのデバイスの値を読出し、 指定されなければ、バス上の全てのデバイスへの読出しが行なわれるが、 バスに接続されているセンサーが複数有る場合にはエラーになる。
応答例:(何も接続されていない場合) dsgett E read scratchapd failed. Ok. 応答例:(3個の温度センサーが接続されている場合) dsgett E crc error. E read scratchapd failed. Ok. dsgett 1002890f00000037 D 27.26 Ok.