2015年12月27日

FlashAirにA/Dコンバータ(MCP3008)をつなぐ

FlashAirにA/Dコンバータをつなぐのは非常に簡単。
MCP3008を用意し、以下のようにつなぐ。
(可変抵抗は観察用で、実際には必要な電圧入力を設定する)



次のようなスクリプトを書く。

fa.spi("init",1000);
fa.spi("cs",0);

fa.spi("write",0x01);
a = fa.spi("write",0x80);
b = fa.spi("write",0xFF);

fa.spi("cs",1);
fa.spi("read");

s = bit32.bor(bit32.lshift(bit32.band(a,0x03),8),b)
v = 3.3*s/1023;

print("CH0:"..v.."[V]");

一応解説を入れておくと、
0x01はスタートビット
0x80は測定指示(シングルエンド・CH0・ダミー)
0xFFはダミーである。

a,bに合計10bitのデータが入るので、sで結合し、vで電圧にしている。
MCP3008は厳密にはSPIではない(8bit刻みではない)のだが、
SPIでも互換で使えるように設計されており、
データシートにあるSPI機能を用いた使い方そのままである。

cs=1の後、空読みしているのは、前回の記事に載せた仕様(orバグ)ためである。

センサー情報をWi-Fiで飛ばしたい、あるいはスマホから読み取りたい時には便利なので
試してみてほしい。

より多くのセンサーを繋ぎたいのであれば、I2C変換機能を持ったボード
(秋月FlashAir DIP IOボードもしくはAirioRP)を使い、
I2Cで繋がるA/DコンバータICを使うことをおすすめする。

(細工をすれば、あまった1ピンで2つのSPIスレーブを制御することもできるが)



posted by gpsnmeajp at 13:21| Comment(0) | TrackBack(0) | 未分類
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/181155308
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック