マイコン一覧

Xbee APIモード 受け側Arduinoコード 送り側Processingコード

 今日午後からずーっと試行錯誤をしていたのだが、通信受け側のArduinoのコードは要約すればこんな感じでOKになりました。xbee-arduinoやXBee APIのサイトは2011/10となってはちと古いサンプルが載ってるので要注意なのでした。やはり詰まったらちゃんと仕様書を読もうw。

[java]
#include <XBee.h>

XBee xbee = XBee();
XBeeResponse response = XBeeResponse();
ZBRxResponse ZBrx = ZBRxResponse();

uint8_t data0;
uint8_t data1;

void setup() {
xbee.begin(9600);
}

void loop() {
xbee.readPacket();
if (xbee.getResponse().isAvailable()) {
if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) {
xbee.getResponse().getZBRxResponse(ZBrx);
data0 = ZBrx.getData(0);
data1 = ZBrx.getData(1);
}
}
}
[/java]
(Arduinoのコードなので SyntaxHighlighter Evolved入れて、C++モードで表示させてみたらvoidしか反応しないので javaモードで表示したがあんま変わらんw)

Processing側は要約すると以下の感じで。log4jの外し方がまだわかってないのでつけたまま。
[java]
import processing.serial.*;
import java.util.concurrent.*;

XBee xbee;

void setup()
{
size(100,100);
try {
PropertyConfigurator.configure(dataPath("")+"log4j.properties");
xbee = new XBee();
xbee.open("COM21", 9600); // ポートはご自分の環境に合わせて変えてください

int[] payload = new int[] { ‘H’, ‘i’ };

XBeeAddress64 destination = new XBeeAddress64(0, 0x13, 0xa2, 0, 0xXX, 0xXX, 0xXX, 0xXX); // 通信相手のアドレスは適宜自分の環境にあわせて

ZNetTxRequest tx = new ZNetTxRequest(destination, payload);
ZNetTxStatusResponse status = (ZNetTxStatusResponse) xbee.sendSynchronous(tx);
if (status.isSuccess()) {
// the Arduino XBee received our packet
}
}

catch (Exception e) {
System.out.println("XBee failed to initialize");
e.printStackTrace();
System.exit(1);
}

}

void draw(){
}
[/java]


電気伝導度センサー 仮組み

ブレッドボードに作成した回路。左は秋月Arduino。


 とりあえず動作確認。水に入れた時、出した時、ショートした時で値は変わるからまぁ何らかの変化はわかだろうか?それはしばらく運用しつつ調整だ。使えそうならブレッドボードから基板に固定実装する。次はこいつにXBeeをつけてログ取りと、LCDでのPCなしでの測定値確認を予定。XBeeのAPIモードがいまいちわかってないので資料やらライブラリを読み込み中。

Fritzingで仮想組して、回路チェックしてから組み立てた


 今回、配線書きソフトの「Fritzing」を初めて使ったのだが楽だった。仮想のブレッドボードで部品を置いていくと、別の回路図ビューでも確認が可能。これで、2ヶ所くらい間違いを探すことができた。


ガジェット関連2011残作業

・XBee関連。ATモデムモードからAPIモードへの変更。Arduino,Processingアプリ修正。
・水槽センサー作成。温度、電気伝導度。
・Seeeduino Stalker ソーラーバッテリー運用テスト。バッテリー容量などをAPIモードXBeeで取れるように。
・電力センサーBeeShield 1スタックに組み変え。
・Android MBW-150連携アプリ作成
・GoogleIOIO いじり。
ガジェット関連で優先度高いのはこんな所かな。水やり器は来年回しで、下準備だけしておこう。


水の電気伝導度測定(準備編)

 土壌水分や、水槽の水質の基準として水の電気伝導度を測定しようと企んでいます。以前、分極を防ぐには交流が良いという記事をどこかで読んだのですが、肝心の回路に行き着かない。岩手大学の修士論文でそれっぽいのを発見したのでその回路で作って見ることにした。
 んで、パーツが無いので秋月電子に発注。NE555とかLM358みたいな誰でも知ってるパーツであります。本当はArduinoのPWMを利用してなんとかならんかなとか思ってましたが、参考になる記事に行き当たらないのでこの方法は挫折しております。


Hello IOIO

 せっかくなのでIOIOとAndroidを接続してみた。アプリはIOIO販売元のsparkfunで配布されてるHelloIOIO。apkファイルをAndroidにコピーして、なんでもインストール可モードにしてインストール。

このアプリのボタンをオンにすると、IOIOボード搭載の黄色いstat LEDが光るというだけ。(右下の赤いLEDはPower LED)

 電源を接続したIOIOとAndroidをUSBケーブルで接続し、Hello IOIOアプリ上ののスイッチオン。無事に光りました。次のお題ははAndroid側のアプリを書いて、TEMT6000の光センサーをつないだIOIOのデータを読み込んで表示だな。


IOIO にピンソケット


 マルツからピンソケットが届いたので、IOIOに取り付けます。Android側のソフトウエアに関しては、また後日かな。


 あと、買ったのはサンハヤトのUSB Mini-Bコネクタをブレッドボードや蛇の目基板で使えるようにする変換基板。3個セットで800円弱。sparkfunのUSB microBの奴は持っているのだけど、miniBのコネクタのほうが好きなので。microBはどうも刺しにくくて。