某所のハロウィンイベントを任された奴から、こんな事したら面白いと思わない?(公表して良いかわからんので、場所も内容も内緒w)って相談があったので、RaspberryPiにUSBカメラ付けて、Motionを使って動体検知してOpenJTalkで作ったwavファイルを再生したら面白いんじゃね?
という流れから、ついでにLEDも点灯したら?とかファン(扇風機)回して風を送ってみたらとか、CDROMのトレイを開かせて(ぉw)中に変なモノを入れとくとかイロイロとアイデアが出て来た。
USBカメラとMotion(FFMpeg)+OpenJTalkだけなら電子工作とか要らないんだけど、LEDを光らせたりファンを回したりするのはGPIOを使う必要がある。
という訳でとりあえずGPIOとはから始める(笑)<そこからか^^;
RaspberryPiだけどOSは普段から使い慣れてるCentOS7を利用
GPIOを使う手順は以下の通り(例:GPIO21を使う場合)
ブラッドボードを使ってGPIO21(40番ピン)とGround(39番ピン)をLEDに接続する。本当なら抵抗を入れた方がいいのだけど、LEDが3VでRaspberryPiのGPIOが3.3Vらしいので、今回はテストなので直結した。
※こんなセットが2,000円くらいで売ってるんだ(--;)マルツでブラッドボードと接続する線だけで800円くらいしたのに。。。むー
XCSOURCE ブラッドボードケーブル抵抗+コンデンサ+LED+ポテンショメータ Arduino Raspberry Pi 電子部品学習キット TE715
- 出版社/メーカー: XCSOURCE
- メディア:
- この商品を含むブログを見る
ここからはOS側の設定
# echo 21 > /sys/class/gpio/export
これでGPIO21を使う準備が完了
# echo out > /sys/class/gpio/gpio21/direction
これでGPIOをoutで使うと設定
# echo 1 > /sys/class/gpio/gpio21/value
1がHIGHで3.3Vが流れるのでLEDが点灯する。逆に0にすると消灯する。
デフォルトのValue値が0か1かは使用するGPIOによって違う(はず)
次にファンを回そうと思ったらパソコンのファンって基本的に12Vか5Vなので3.3Vではちゃんと回らない(会社に12Vのファンしかなかったから5Vは試せてないんだけどね・・・5Vだったら低速で回るんじゃないかな・・・)
ちなみに、RaspberryPiは2番ピンと4番ピンに5Vが流れてるので、こことGroundを繋いでやれば12Vのファンも低速で回る。
モーターを付けて回してやろうかとも思ったけど、それだとちゃんと回路を組まないとRaspberryPiが壊れる可能性があるのでまだ試してない。一応会社の備品なのでw
次に、音声を出そうとしたらハマった(--;)
alsa-utilsをインストールしてaplay -lとかしてもデバイスが見つからない。
ドライバがロードされてないからと思ってmodprobe snd_bcm2835を実行するとlsmodでは表示されるようになったがaplay -lでは相変わらず何もデバイスが表示されない(--;)
どうも、RaspberryPiというよりもCentOS7(カーネルのバージョンが4.4.x以上)でalsamixerとか使うには/boot/config.txtに以下の1行を書いておく必要がある。
dtparam=audio=on
もし、音声がかすれるようであれば以下の行も追加する
audio_pwm_mode=2
ファイルを保存して終了したらサーバをrebootする
後はMotionで動体検知した時に実行するBashスクリプトを作成する。
今回は
LEDを点灯→音声ファイルをランダムで再生→数秒間スリープ→LEDを消灯
ってスクリプトを作成
まぁ、実際のスクリプトは書かなくても大体想像できるだろうから省略(笑)
一応Motionがスクリプト実行中でも動体検知しちゃうのでスクリプトが実行中はPIDファイルを作成して多重実行は出来ないようにはしている。
ただ・・・ダイソーで買った100円スピーカーでは音量100%にしても耳に当てないと音が聞こえない(--;)
やっぱアンプが必要だよなぁ・・・って感じ < 今ここ
ここまで来るとちょっと別のセンサーとか付けて動かしてみたいとか思いだすw
で、Amazonで調べてみると赤外線の人感センサーが数百円で売ってる。
ちなみに、同じようなのがマルツ(リアル店舗)は800円くらする(--;)
シレっと社長にメールして「新しいサービスの検証」って謎の理由で購入をして貰った(笑
これがちゃんと動けばMotionとかFFMpegとかインストールしなくてもGPIOの入力値を監視するデーモンを作ってしまえば簡単に人感センサーとして使えるので便利かも。
さらに悪ノリ?してスピーカーの音量を上げるのにアンプモジュールも購入して貰ったwww
GPIOを使えば電源ボタンが無いRaspberryPiに電源ボタンを追加する事も可能だ(電源OFFしか出来ないけど^^;)
RaspberryPiを使って実際にサービス展開を考えるなら電源ボタンも付けたい所だなぁ~
ってな事を考えていると、市販のケースに綺麗に収まるオプション用のGPIO部の蓋が欲しくなってきたが、さすがにそれは売ってない。
こうなったら3Dプリンタを買って作るか?
3Dプリンター ダヴィンチ mini w (無線LAN対応 Wi-Fiモデル)
- 出版社/メーカー: XYZプリンティング
- 発売日: 2017/02/01
- メディア: Tools & Hardware
- この商品を含むブログを見る
これだと4万くらいでZenfon3の定価よりも安いんだよなぁ~(笑)
ソフトも無料提供されているらしいのでお試しには良い商品なんだけど、流石にこれを買ってくれと言っても通らないだろうなぁ^^;
自分で買うにしたら少し高い・・・10月30日誕生日なんだけどなぁ~(チラッ
って、こんな高価なモノはもとより、そもそもプレゼントくれるような人は居ないのだけど(--;)