ArduinoとXBeeとサーボモータでブラウザから照明のスイッチを制御
人感センサーを用いて照明を制御したかったが手元に無いので、
XBeeを使って遠隔制御してみる。
照明のスイッチを制御する端末
Arduino Uno + XBee(ルータ) + サーボモータ
制御信号を送信する端末
PC + XBee(コーディネータ)
ブラウザからON・OFFを操作すると、サーバ側のPython・XBeeコーディネータから、
サーボモータと接続した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); }
サーボモータなどは以下を参考にした。