Arduino用のI2c基盤は5V動作が多く、さらに3.3Vでも動作するものも結構たくさん販売されています。今回はスイッチサイエンス製以外のボードでOMURON DT6を動作させるための下準備を行ってみます。Henryに関しては3.3V変換でした。ゴメンナサイ。
Sparkfun社製Intel Edison Blockのi2c接続
私の場合 i2c、BatteryBoard、BaseBlockボードを手に入れました。
BaseBlockボード
OTGへの5V電源をConsoleコネクタから持ってきてるので、Intelブレークアウトなどより簡単にUSB外部機器がつなげられる点が、すごく便利です(変換コネクタが必要だが)。BaseBlockボードだけでも、この連載で紹介したSimpleCVをインストールすれば簡単に動画配信可能。さらにEdisonの初期設定も確実に行えます。
i2cボード
このボードのi2c端子は、mraaで操作するところのi2cの1番となります(ただし3.3V)
。つまり6番ではないのでArduino IDEでは操作できません。しかし、このボードはLipoも含めてUSB電源供給用のコネクタを備えているボードと同位置に端子があり、ボード間の上下がギリギリであることから、とても使いにくいという欠点があります。同じような欠点は、後から手に入れたPWM BLOCK、Arduino BLOCKにもあり、こちらの2つは、端子にハンダ付けすると、USBが刺せなくなる場合があります。どうしてこんな設計にしたのか疑問ですが、このあたりはちょっと頭を使って切り抜けましょう。
このボードの特徴は、ボード上でパターンをカッターなどで切れば(下の写真のLevel Select部分)、他の電圧にも対処できるので、電源が確保できればレベルコンバーターは必要ありません。
Battery BLOCK
省電力設計のセンサーを使う場合、とてもスマートなものが出来上がります。Lipoの容量が少ないので、BaseBlockボードのOTGにWeb Cameraを接続してみてもカメラは動きませんでした。
今回はこの3つのボード構成で非接触温度センサーを動かしてみます。Edison Blockの特徴である小ささを生かすために、Battery BlockのLED接点(上の写真のPower LED Jumper)から3.3Vを取り出し、ステップアップ電圧レギュレーターで5Vに昇圧しました。さらにOMURON D6Tをつなげています。
で、ボード最小構成だと、
3枚接続して、いつものようにレザーカバーを付けたのがこれです。
今回の構成では最初に書いたようにArduino IDEでは操作できません。PythonかCでI2cポート番号を1としてプログラムを作ります。前々回紹介したPythonプログラムで、ポート番号を6から1に変更すれば、非接触温度センサーが動きます。
Henry基板のi2c接続
このボードは基板上でどこに接続すれば良いのかわからないので、公開回路図とテスターを使って調べてみました。結果が以下の写真です。(下図でRXとTXの間にRTSが入ってました。すいません。)
3.3Vの電源が出ているので、今回は3.3V変換にしました。
信号は全て1.8Vのため、レベル変換は自前で行います。ただしプルアップ抵抗があると、i2cに接続した機器が全く動きません。この例ではレベル変換基板にプルアップ抵抗が付いていたので、ニッパーでエイッと取ってしまいました。
接続方法は、使用するレベルコンバーターの説明書を参照して下さい。OMURON-D6TはスイッチサイエンスEglet使用時に作成した(3.3V→5V)表示機付きのものを使って動作確認しました。他のi2c基板を接続するときは3.3V動作のものを使ってください。
Henryのi2cはポート番号が6のため、Arduino IDEでコンパイルしたプログラムでi2cが操作できますが、IDEでコンパイルしたファイルがボードに転送できません。一番手っ取り早いのは、Edisonを外し、他のボードでコンパイル・転送してまたHenryに接続する方法です。Arduinoプログラムの制御方法はこの方備忘録 Edisonボード Arduino制御を参考にすると、停止・再開ができます。
まーこのボードの基本は、PythonかCまたはNodeなんでしょうね。
ではまた。 次回はちょっと長くなりますが、OpenframeworksをiPhone実機で動かすまでを書いて見たいと思います。