LoginSignup
1
1

More than 5 years have passed since last update.

Arduino Fio + XBee Series1 で スリープモード(SM=1)を実現する

Last updated at Posted at 2016-12-21

使うデバイスがそもそも古くてスーパーニッチな記事なのですが、
一応メモ程度に残しておきます。

つかうもの


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番ピンだからいいんじゃね、
という感じの内容でした。

はいせん

15657817_10210948502486240_2001243968_o.jpg

10kΩをGNDとD2のほうに挟んであげて、
D2とDTRをつないであげればok。

ぷろぐらむ

xbee.ino
#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

以上、めでたしめでたし。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1