匿名

差分

Asterisk+Arduino

1,855 バイト追加, 2017年11月18日 (土) 17:52
Asterisk+Arduino」を保護しました ([編集=管理者のみ許可] (無期限) [移動=管理者のみ許可] (無期限))
===ハードウェア===
Arduino Diecimilaを使います。Arduinoについては http://www.arduino.cc/ を参照してください。<br>
日本国内では[http://www.switch-science.com/products/detail.php?product_id=3 スイッチサイエンス]( http://www.switch-science.com/ )、メカロボショップ( http://www.mecharoboshop.com/ )などから、3,000円くらいで購入できます。<br>
ネギ振りに使用しているサーボモータは小型のものです。電源はUSBから取ります。<br>
===スケッチ===
サーボモータはArduinoの10番ピンに接続します。<br>
Arduinoは以下のようなプログラムで動作させます。シリアルポート(USB)から入力された数値(1~9)に応じてネギを振る回数が決まります。'u'が入力されると上の位置、'd'が入力されると下の位置で停止します。's'が入力されると1回だけネギを振ります。<br>
#include <Servo.h>
}
}
===Asteriskからの制御===
AsteriskからはSystem()でシェルをキックすることでシリアルポートに書き込みます。ArduinoはFDT社のUSB-シリアル変換チップを使用しているため、Linux上からでは/dev/ttyUSBXにみえます。<br>
シリアルにデータを送るシェルは以下の通りです。<br>
#!/bin/sh
TTY="ttyUSB0"
if [ "$1" -lt "1" ]
then
exit
fi
if [ "$1" -gt "9" ]
then
exit
fi
stty -parenb -parodd cs8 -hupcl -cstopb -cread -clocal -crtscts < /dev/$TTY
echo $1 > /dev/$TTY
 
sttyでパラメータを設定した後、echo で引数を/dev/ttyUSB0などに書き込むだけです。<br>
Asterisk側からはextenで
exten => 2,1,system(/var/lib/asterisk/negi.sh 2)
のように引数をつけてシェルをキックすればネギを振ります。<br>
なお、/dev/ttyUSBXのパーミッションに注意してください。<br>