ArduinoとXBeeとサーボモータでブラウザから照明のスイッチを制御

人感センサーを用いて照明を制御したかったが手元に無いので、
XBeeを使って遠隔制御してみる。

照明のスイッチを制御する端末
Arduino Uno + XBee(ルータ) + サーボモータ

制御信号を送信する端末
PC + XBee(コーディネータ)

ブラウザからON・OFFを操作すると、サーバ側のPythonXBeeコーディネータから、
サーボモータと接続したXBeeルータへ信号を送信する。
信号は単純にOFFの場合は「1」、ONの場合は「2」を送信している。

ちなみに、サーボモータをスイッチにしっかり固定しないと、浮いてしまい制御できないことがあった。

以下、Arduinoスケッチ。

#include <Servo.h>
#include <XBee.h>

Servo servo;
XBee xbee = XBee();
ZBRxResponse zbRx = ZBRxResponse();

const int SERVO_MOTOR_PIN = 3;

void setup() {
  xbee.begin(9600);
  servo.attach(SERVO_MOTOR_PIN);
}

void loop() {
  char command[2] = {0};
  xbee.readPacket();
  if (xbee.getResponse().isAvailable()) {
    if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) {
      xbee.getResponse().getZBRxResponse(zbRx);
      strncpy(command, (char *)zbRx.getData(), sizeof(command));
      
      if (String(command) == "1") {
        servo.write(135);
        delay(1000);
        servo.write(90);
      } else if(String(command) == "2") {
        servo.write(45);
        delay(1000);
        servo.write(90);
      }
    }
  }
  delay(1000);
}

サーボモータなどは以下を参考にした。

参考
【Arduino】照明のスイッチをブラウザから操作してみる