2017年7月5日水曜日

Rasoberry Pi juliusとopen Jtalkを試してみる

I2C接続顔モジュールの形がほぼ定まってきたので,
なんとかしてRasPiと会話したい.

いろいろ調べた結果,音声認識にJulius,音声合成にopen Jtalkを
使用している例が多かったので,今回はこれらを導入したいと思います.

カメラ・マイクはLOGICOOL ウェブカム HD画質 120万画素 C270
スピーカーは外部電源の取れるものをイヤフォンジャックから出力しています.

・Julius
導入は参考サイトが多くあるので省略します.
ただ一点だけjuliusインストール時に./configureが実行できませんでした.
どうやらautomakeを使うらしい.
以下を実行すると無事makeできました.
$aclocal && libtoolize --force && automake --add-missing && autoreconf

ちょっと試してみます
$cd julius-kits/dictation-kit-v4.3.1-linux

$ALSADEV="plughw:0,0" ~/julius-4.4.2/julius/julius -C ~/julius-kits/dictation-kit-v4.4/main.jconf -C ~/julius-kits/dictation-kit-v4.4/am-gmm.jconf -nostrip


撮影環境が悪くて動画がブレブレです笑
精度がかなり高くて驚きました.

・Open Jtalk
こちらも導入は省略.
適当なテキストファイルを用意しました.

voice.txt
ハロー ラズベリーパイ オープンジェイトーク デモ

ついでにインストールした女性(mei)の声でwavファイルに変換します.
$open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow test.wav voice.txt

aplayコマンドで再生します.
$aplay -Dhw:1,0 test.wav



思ったより自然な声です.
個人的にはもっと落ち着いた声がいいななんて.

次回からこれらを用いて具体的なソフトの製作をしたいと思います.

参考にさせていただいたサイト
http://qiita.com/t_oginogin/items/f0ba9d2eb622c05558f4
http://www.pentacreation.com/blog/2016/12/161223.html
http://qiita.com/lutecia16v/items/8d220885082e40ace252



2017年7月3日月曜日

ESP-WROOM-02 お遊び基盤を作ってみた

ちょっと小ネタを少々.

値段あわせで買ったESP-WROOM-02ですが,
お遊びボードを作ってみました.



小さく収まりました.レギュレータが付いており,
12Vまでの入力に対応.こうしてみると自由に使えるピンは少ないですね.



いろいろ繋げてもコンパクトです.
暇なときに遊びたいと思います.

ジャイロセンサ MPU6500を使ってみる

お久しぶりです.
今回は自分がイマイチ使用したことのないジャイロセンサを使ってみます.
使用したのはMPU6500を搭載したコレ amazonで280エンでした。
3軸加速度,3軸角速度の6軸をI2CまたはSPI通信で取得できます.



LPC1114を使ってちょっとZ軸のみ角度を出してみたいと思います.
回路はこんな感じ.今回はSPIで通信しました.


フィルタ等は特に無しですが,ジャイロ側でいろいろ設定できるらしい
ので設定をいろいろ変えて検証します.
データシートからジャイロの設定はレジスタアドレス0x1b(27)で設定
できるっぽい.よって以下の条件で検証してみました.
レジスタ値0x00  ->  レンジ最小
レジスタ値0x98  ->  レンジ最大
レジスタ値0x99  ->  レンジ最大&フィルタ最大?
ローパスフィルタの記述がイマイチ不明ですが,
まあ仮に理解したとしてもいざ実践では実験からうまくいく設定を
見つけるしかないと思われるので,デフォルトと最大値?でどのように
変わるか検証します.
一応データシートの記述部分



静止時の生データ。
意外とレジスタ値0x98が一番良かったです.
サンプリングが早すぎる?と値がブレるのかな?



角度を算出し0-90度で数回動かしました.



一応レジスタ値0x98,0x99が良く取れてます.
まあ実験環境がアレなのであまり信用できませんが.
とりあえずレンジは広げたほうが良さげ?


一応値を取得して角度の算出までできました.
レジスタ値に関しては搭載する機器によって別途検証する必要が
ありそうです.
とりあえず買っただけなんでいつか使います笑

使用したmbedプログラム

2017年6月17日土曜日

I2C接続顔モジュール製作 回路編

I2C顔モジュールの回路と内部ソフトウェアがほぼ確定したので
まとめておこうと思います.

・まず回路





前回のとおりArduinoは不安定だったため,LPC1114を使用しました.
サーボが二つあるので電源は別電源をとるようにしています.
以外にもジャンパを少なく仕上げられました.結構自信作です.
以下回路図です.



・ソフトウェア
LEDドライバはソフトウェアI2C,モジュールへの指示は
ハードI2Cで行います.
ソフトI2Cライブラリはこちらです
さらにシリアル通信でも指示を送ることができます.

また,サーボは割り込みを用いて
少しゆっくり動くようにしました.
プロトコルは前回と同じで,
サーボ動作 -> ’s’+パン角[deg]+チルト角[deg]
LED表示右 -> ’r’+8byte 
LED表示左 -> ’l’+8byte
です.これはI2C,シリアル共通.

以下mbedコードです.
https://drive.google.com/open?id=0B4sMYcSdF0SFVDRvdlJ0WXJzdmM

ただバグが残り,サーボをOFFにする方法が不明です.
無駄な電力を消費するので動いていないときは切りたいのですが・・・






2017年6月13日火曜日

I2C接続顔モジュール製作 Rasoberry Piから接続

前回の記事からさらに作りこみました.
一回の記事に乗せきれないので数回に分けたいと思います.
今回はとりあえず動いた報告から.



概観です.正面から見るとなんとなくきれいにまとまってる
ようには見えます.この記事で製作したケースの上に載せると
いい感じです.ちなみにカメラはまだ起動させていません.



裏から見るとスパゲティ配線となっております.
ここら辺は今後作りこみたいと思います.



制御基盤を作り変えました.
前回はATmega328PUを使用しましたが,3.3Vでの動作は
少し不安定だったためLPC1114を使用しました.
動作は非常に安定しています.詳細は別記事で.




I2Cを用いてRaspBerryPiと接続.ちょっとがんばって
WEBサーバー経由で操作できるようにしてみました.
サーバ構築やHTMLなどは専門外なので見た目はよくないです.
この辺も今後作りこみたいところ.

2017年6月4日日曜日

Raspberry Piケースを自作してみた

私はRaspberry PIを初代B+と3b+を所持しておりますが,
ケースはひとつも持っていませんでした.
適当な箱に入れていたわけですが,今回ちゃんとしたケースに
入れてあげることにしました.

買うのもアレなので100均グッズで自作してみました.

使ったのはコイツ


ダイソーで買ったタッパーです.サイズがいい感じで加工しやすそうです.
その他高めのM3のスペーサ,低頭ねじ.
使用したツールはハンドドリル,カッター,ドライバーなど.



位置を決め一箇所だけハンドドリルで穴を開けます.
3b+はM3ではないようですが気合でいれました.
一度はめてみてから再度穴の位置を合わせます.
この位置あわせはかなり重要です.






3箇所とめましたが,ガタつくので結局4点止めにしました.


USBやディスプレイ端子の位置を合わせ,印をつけます.
ちょっと大きめにしないとコネクタによっては入らなくなります.

 

がんばってくりぬきます.自分はカッターを使用しましたが,
かなり時間がかかりました.何かいい方法はあるんでしょうか.
一箇所力んで失敗してしまいました・・・



一応完成です.





ついでに初代B+用も作りました.



お手軽ですが,結構気に入ってます.


2017年5月31日水曜日

ESP-WROOM-02を触ってみる

スイッチサイエンスでモータドライバを購入する際,値段合わせで
ESP-WROOM-02を購入してみたのを思い出し,早速テストしてみる
ことにしました.

ESP-WROOM-02は安価なWiFiモジュールです.ArduinoIDEに対応
しているので簡単にネットワークに接続することが可能です.
センサ値をワイヤレスで取得したり,スマホからWiFi経由で操縦できる
ロボットなど結構遊べそう.

購入したのはこちら.開発ボードではなくピッチ変換基盤ですので
外部で回路を構成してやる必要があります.



とりあえず動作させる回路は
3V3   ->  3.3V
GND  ->  GND
EN    ->  10k  ->  3.3V
IO15 ->  10k  ->  GND
IO2   ->  10k  ->  3.3V
IO0   ->  10k-  >  3.3V(boot) or GND(書き込み)
RST   ->  10k-  >  3.3V
TXD   ->  シリアルのRXD
RXD   ->  シリアルのTXD

このほかに後述するLチカのためにIO4にLEDを追加しました.
ちなみに3.3Vは外部からACアダアプタを用いて供給しています.



ArduinoIDEのシリアルモニタで接続します.
"CRおよびLF","115200"を選択します.
以下のように表示されました.

AT+GMR

AT version:0.52.0.0(Jan  7 2016 18:44:24)
SDK version:1.5.1(e67da894)
compile time:Jan  7 2016 19:03:11
OK

接続は成功のようです.少しATコマンドで遊びつつ,今度は
Lチカをやってみます.(ATコマンドはコチラを参考にしました.)

ArduinoIDEボードマネージャーにESP8266ボードをインストールします.
かなり情報があるのでここでは省略します.
自分の環境ではインストールに非常に時間がかかりました.
スケッチの例->ESP8266->BlinkをちょっといじりIO4から出力にします.

#define LED_BUILTIN 4

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); 
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(2000); 
}

IO0をGNDに接続,電源の抜き差しでリセットをかけます.
後は普通にArduinoに書き込むようにします.
ちょっと違った表示が出ましたが,[100%]となり無事書き込めました.
IO0を3.3Vに,もう一度リセットをかけます.

できました!!


特に引っかかることなくLチカできました.
ESP-WROOM-02については空いた時間で遊びつつ,
アイデアが浮かんだらなんか製作したいと思います.
その前にまずはファームの戻し方をメモしなければ.


参考サイト
https://www.mgo-tec.com/esp8266-board-install01-html
http://nonnoise.github.io/ESP-WROOM-02/ATcommand.html
https://tpedia.tech.gr.jp/20160111434/