使うデバイスがそもそも古くてスーパーニッチな記事なのですが、
一応メモ程度に残しておきます。
つかうもの
Arduino Fio
https://www.switch-science.com/catalog/615/
XBee Series1(ファームのバージョンは10CD)
https://www.switch-science.com/catalog/996/
やりかた
Arduino Fio + XBee + リポ電池で単独動作可能なもの作ろうと思ったのですが、
よくよく考えるとXBeeさんスリープしてくれなくて消費電流が削れないので、
どうしようかなと思ったところ、下記の記事をみつけました。
http://www.semifluid.com/2012/09/07/arduino-fio-low-power-setup/
要約すると、
XBeeのスリープモードをSM=1に設定し、
XBeeの9番ピンで制御するようにすれば、FioのDTRが9番ピンだからいいんじゃね、
という感じの内容でした。
はいせん
10kΩをGNDとD2のほうに挟んであげて、
D2とDTRをつないであげればok。
ぷろぐらむ
#define XBEE_SLEEP_PIN 2 // D2
unsigned long sendTimer;
void setup() {
Serial.begin(9600);
Serial.println("init");
// setup sleep pin of XBee
pinMode(XBEE_SLEEP_PIN, OUTPUT);
digitalWrite(XBEE_SLEEP_PIN, HIGH); // disable
}
void loop() {
// 10秒ごとに起きてping送るよ
if (millis() - sendTimer > 10000) {
digitalWrite(XBEE_SLEEP_PIN, LOW); // enable
delay(50); // wait for wakeup
Serial.println("ping");
digitalWrite(XBEE_SLEEP_PIN, HIGH); // disable
//delay(500); // 送信完了までちょっと待ったほうがいいかもしれない
sendTimer = millis();
}
}
おまけ
FioのONと書いてるLEDは、Fio自体の電源確認用ではなく、
XBeeが起きてる時に光るようになっているので、
上記プログラムの場合10秒ごとについてるか確認することで、
XBeeが起きてくれてるか確認できます。
XBeeのスリープモードに関する記事は下記あたりがいいかも。
http://ikeyasu.hatenablog.com/entries/2008/05/31
以上、めでたしめでたし。