先日の予告通り、早速人感センサーを組み込みました。
今回は共立電子で購入したKP-IR412を使用しました。5Vの電源とGNDとmbedの入力ピンにつなぐだけ、特に追加の部品は不要でしたので、簡単に人感センサーを組み込むことができました。mbedのプログラムとしては、割り込みを使って入力ピンが変化したら、BLEの通知でデータをHubotに送る、という感じです。下記の写真の右下の丸いデバイスが人感センサーです。ちなみに、この写真には写っていませんが、リモコン信号を出した時に人感センサーが反応したら困るので、リモコンデータ送信用のLED3個を別の小さい基板に半田付けしてメインボードから離れた場所(ロボットの頭部)に設置しています。
mbedのソフトとしては下記のような感じでInterruptInというクラスを使って人感センサーから入力した信号の変化を検出して割り込みをかけています。
InterruptIn jsin(P0_16); //人感センサー
/* 人が動いた */
void human_moved()
{
switchOn();
wait(1);
atp.speak("ugoita.");
switchOff();
}
/* 人が止まった */
void human_stopped()
{
switchOn();
wait(1);
atp.speak("tomatta.");
switchOff();
}
void init_jinkan_sensor()
{
jsin.mode(PullNone);
jsin.rise(&human_moved);
jsin.fall(&human_stopped);
}
今後は人感センサーで人の動きを検出したら、何かを喋らせるようなことをしたいと思います。できれば機械学習のアルゴリズムを使ってみたい・・・。
