RAPIRO(ラピロ)をWebサーバにする(Tomcat版)

node.js+Expressで作ったWebサーバから、SerialPortライブラリでラピロのArduino基盤を制御しようと試みましたが、なぜかうまくいかず。。。シリアルポートのOPENはできているし、送信でエラーを吐いている様子もないのだけれど、Arduino側が何の反応もしないし、Arduino側から何か受信することもない。うーん、悔しい。

もうちょっと解析したら何とかなるのかもしれませんが、ちょっと別のアプローチも試してみたいので、今回はラピロのWebサーバ化をTomcatを使ってやってみようと思います。node.js+Expressよりはだいぶ面倒ですが、ちょっと今後やりたいことがJavaベースじゃないとキツイっぽいので、ここでTomcatの準備をしておこうと思います。

続きを読む

RAPIRO(ラピロ)に音声合成で喋らせる

一口に喋らせるといっても、やり方はいろいろあると思います。音声合成LSIを使うとか、音声合成APIを使うとか、スピーカーもラピロに内蔵するか外付けするかとか。

ここではできるだけ簡単に実現できるようにするために、スピーカーは外付け、音声合成はWeb APIでやることにします。

スピーカーは、直接Raspberry Piのステレオジャックにミニプラグを挿してもよいのかもしれませんが、コード引き出すのが面倒なのと、後々マイクを使う可能性も考えて、USBオーディオ変換アダプタをかますことにします。

これは挿すだけで認識してくれますが、これ経由で音を出せるようにするにはちょっとだけ設定ファイルをいじる必要があります。以下が参考になります。

$ sudo vim /etc/modprobe.d/alsa-base.conf

で、次のように変更。

# options snd-usb-audio index=-2
options snd-usb-audio index=0

変更できたら、reboot。

$ cat /proc/asound/modules
0 snd_usb_audio
1 snd_bcm2835

と表示されれば準備OK。必要であれば、上記リンク先に書かれている、録音と再生のテストをしておきましょう。

続きを読む

RAPIRO(ラピロ)にRaspberry Pi B+を搭載する

前に無線通信を色々検証したときに、Raspberry Pi本体の問題かなーという懸念もあったので、これを機にラピロの頭脳(Raspberry Pi)をType BからType B+に置き換えました。

th_2014-11-02-rapiro-1

載せるだけでもそれなりに固定されます。激しく動かさないようなら、特に加工は不要です。USBコネクタ二つの入り口が塞がってしまいますが、奥行きのないドングルのようなデバイスなら、先に取り付けておけばそのまま頭を閉じることもできるので、有効利用できるかもしれません。

続きを読む

RAPIRO(ラピロ)で安定して無線通信する

前に、ラピロのRaspberry PiにArduinoボード経由で通電する際にサーボモータへの電源供給をOFFにする、という話を書きました。最初はこれでRaspberry Piが普通に動いてくれたので、あーこれで開発がラクになるなーと思っていましたが、ちょっと長めに無線LANでSSHログインしていると、反応が鈍かったり、接続が勝手に切れるということが頻発しました。Raspberry Pi側からディスプレイ出力してみると、勝手にカーネルパニックになってしまっていたりしました。

色々試してみた結果、無線LANの子機(ドングル)を外してみたら、勝手にカーネルパニックになる、ということはなくなりました。やっぱり無線LANドングルは消費電力が大きすぎて、Raspberry Piの動作が不安定になってしまうのかもしれません。

しかし解せないのは、無線LANドングルをRapberry Piに直挿ししたときだけでなく、セルフパワーUSBハブをかまして接続したときでも同様の現象が発生してしまう、ということ。セルフパワーなので、電力量的には問題ないはずなのですが。自分は2種類の無線LANドングルを持っていますが、どっちの場合でも発生してしまったので、「無線LANドングルを使うこと自体がNG」ということになってしまっています。うーん、困った。

別に有線LANにすれば解決する話ですが、自分の場合ルータが別の部屋にあるので、そこからケーブルをビローンと引っ張ってくるのは、取り回し的にかなり厳しいです。

ということで、現状の苦肉の回避策。

続きを読む

RAPIRO(ラピロ)をWebサーバにする

ラピロとコミュニケーションをとりたいと考えたとき、やり方はいろいろあると思います。

  1. ラピロに何かセンサを繋げて、それに対して人がアクションをとってそれをセンシングさせる
  2. ラピロにマイクを繋げて、音声認識させる
  3. スマートフォン経由でラピロと対話

1.と2.は直接ラピロとコミュニケーションをとることができますが、それ相応にハードルが上がります。3.はスマホを介するので間接的なコミュニケーションになりますが、一番簡単そうなので、まずはこれからやってみることにします。

スマートフォン経由でラピロと対話するにしても、これまたやり方は色々あると思います。AndroidアプリやiOSアプリをゴリゴリと書くのアリかもしれませんが、個人的には、ラピロをWebサーバにして、HTTPでアクセスできるようにするのが一番簡単なような気がします。これなら、ブラウザが動く環境なら、AndroidだろうがiPhoneだろうがPCだろうが、どれを通してもラピロと通信することができるので。

ということで、ラピロのRaspberry PiにWebサーバを実装することにします。これまたApacheやらlighttpdやら色々選択肢はあるのかもしれませんが、個人的に実装が簡単そうに思えるnode.js + Expressフレームワークで実装してみようと思います。

続きを読む