SyntaxHighlighter

---SyntaxHighlighter ウィジェット---

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スレーブを制御することもできるが)



0 件のコメント:

コメントを投稿