人工知能を使ってみる ~Google API & docomo雑談会話 & Open JTalk~ いち
2015年は Azure の Speech to Text や Text to Speech を利用して,” お天気つぶやきらぴろんからのぉ~ お留守番らぴろん” をつくったけど(blogなし 後悔w),今回は Google のサービスや docomo のサービスを使って会話するロボットを作ってみたいと思います.
■ 用意したもの
- RasPi3 ModelB
- RasPi3 用の AC アダプター 5.1V/2.5A
- microSDHCカード 16GB class10
- HDMI ケーブル(モニタ出力用)
- イヤホン 3.5mm ミニジャックにさすやつ
- マイク SANWA SUPPLY MM-MCUSB16 USBマイクロホン 家にあった
- USBキーボード&マウス
じゃいつも通り microSD に Raspbian を入れましょう♪
# この作業は パソコン でやるよ
1. SDFormatter4 で microSD をふぉーまっと ^^*
2. Raspberry Pi の セットアップ ^^*
a. Raspberry公式サイト www.raspberrypi.org/downloads につないで
NOOBS をダウンロード.Download Zip をクリックすればいいよ♪
Miho がダウンロードしたのは NOOBS_v2_1_0.zip ^^#
b. ダウンロードした NOOBS_v2_1_0.zip を解凍して,
中身を microSD に.
# microSD を RasPi3 にセットして!
1. RasPi3 と モニタをつなぎます.USBキーボード&マウスもつなぎます.
usb電源ACアダプタもつなぎ,ACアダプタをコンセントに ぶすっ .
# ここからは Raspbian(OS)のインストールです ^^
1. 電源が入りしばらくするとなんやら画面が見えてきます
” Raspbian [RECOOMMENDED] ” と 見えるのでそれにチェックをいれます.
下の方の Language リストボックス で『日本語』を選ぶと
Keyboard が 『jp』になって,使っているキーボードが使いやすくなるかも ^^
でもこの設定はインストール後でも『Raspberry Pi の設定』ってメニュで
変えれるから困ったことに気付いてからでもへっちゃら ^^#
しばらくほっとくとインストールが完了するよ
# RasPi のデスクトップが起動したら WiFi の設定までしちゃいましょ♪
1. 画面右上に(ちょっとわすれた ^^;) 電波出してるよ!WiFi のアイコン か
パソコンの絵のアイコン があります.クリックしよう!
2. じぶんちのネットワークが見えてくるからそこに接続してね
WiFi のアイコンが 元気に電波発信! のアイコンになるはずです ^^
# システムのアップデートもしときましょ♪
1. パッケージリストの更新 apt-get install update をやっとこう(^^♪
注)apt-get unstall upgrade は要注意!
これは インストールされているパッケージの更新で
下手にやると今まで動いてたものが動かなくなるなどハマるw
# ターミナルの使い方をしっておきましょ(^^♪
1. 画面左うえに,真っ黒いウインドウのアイコンがあります
クリックするとこんな画面が出てきます
この画面に次にでてくる おまじない(^^♪ を入力して
いろんなものをインストールしていきます.
ターミナルを閉じるときは exit を入力してね!
ここからはあとあと使うための準備をしておきます ^^#
# 日本語フォント と 日本語対応ターミナル
0. ターミナルを起動します
1. 日本語の ゴシックフォント のインストール
sudo apt-get install fonts-vlgothic
2. 終わったら,再起動
reboot
3. 日本語入力ソフトウェアをインストール
sudo apt-get install uim uim-anthy
4. 終わったら,再起動
reboot
5. 日本語対応ターミナルのインストール
sudo apt-get install jfbterm
6. 終わったら,再起動
reboot
※ もしかしたら最後にまとめて reboot でいいかもしんない
7. ターミナルで 半角/全角 キー で日本語入力できるはず
とりあえずここまでが下準備 ^^# つぎは 音声入力 へと進みましょ♪
- Miho MEMO -
自分の環境の記録
参考文献:
自然会話ロボットを作ろう! Raspberry Pi と Arduino で作る人工知能
ISBN 978-4-7980-4863-5
TOPPERS on PSoC をぺたんこボードに ^^
PSoC Advent Calendar2016 12/8 空いてたところを埋めたった!
あっちむいてほいっ♪ ~ 魂吹き込み編 ~ からの枝分かれ ^^#
ここではもういっちょの ” お手軽ぺたんこボード ”
” CY8CKIT-059 PSoC5LP PROTOTYPING KIT "
にTOPPERSを載せちゃいましょ♪
☆ 脳みそを用意します!
あっちむいてほいっ♪ ~ 魂吹き込み編 ~ の ” 脳みそはこれ! ” を参照してね ^^#
そして ” 脳みそ注入!” の ①から③ まで進んでね ^^#
☆ 脳みそをいぢります!
現在(TOPPERSサイトからDLした素のまま)の プロジェクトは,
PSoC5LP(CY8C5868AXI-LP035)用になっています.
なので,今回の ぺたんこキット(CY8C5888LTI-LP097)用にいぢります.
① Device の選択
プロジェクト名を右クリック.Device Selector を選択します
” CY8C5888LTI-LP097 " を選択します
② Clock をいぢります
Workspace Explore の Design Widw Resources の Clocks を Wクリック.
Clock 画面の Edit Clock タブをクリック.
以下の画面がでてきます.
Before:
CY8C5888LTI-LP097 のプロジェクトのクロックを以下のように変更します
After:
XTAL -> チェックはずす!(これ一番のポイント)
IMO -> Osc : 3MHz ±1%
PLL -> Input : IMO(3MHz),Desired : 24MHz
Master Clock -> PLL_OUT(24MHz),Divider 1
ILO -> Route : 1kHz
Bus Clock -> Divider 1
※ 変更する理由はあとで書きまする ^-^
③ USBシリアル変換モジュールとつなぐ Rx/Tx の Pin 配線をします
Rx_1 -> P12[6]
Tx_1 -> P12[7]
④ Build して,書き込んで,シリアル出力してみよう!
やり方は,『あっちむいてほいっ♪ ~ 魂吹き込み編 ~』を見てね ^^#
ターミナルに task1-task3 の起動が確認されたら成功!!(^^♪
さて,
☆彡 なぜクロックをいぢったのか
結論は,TOPPERSサイトからDLした素のままのプロジェクトのクロックは,外部クロック供給モードになっている.
が!
CY8CKIT-059 PSoC5LP PROTOTYPING KIT には外部クロックは無い.
なので,外部クロック(XTAL)供給モードを無くし,内部クロックで動くように設定の変更をする(上記 Edit Clock 画面参照)
① CY8C5888LTI-LP097 のデータシートから 外部クロック(XTAL)が繋がるならどのピンなのかを確認してみよう!
CY8C5888LTI-LP097 の データシート 7ページ
http://www.cypress.com/file/45906/download
XTAL をつなげるとしたら P15[0],P15[1] ってことがわかる.
② 実際はどうなってる?!CY8CKIT-059 PSoC5LP PROTOTYPING KIT のスケマを見てみよう!
P15_0 にも P15_1 にも XTAL はつながってないね ^^
ってことは,CY8CKIT-059 PSoC5LP PROTOTYPING KIT は内部クロックで動いているね Congratulations!!★(*^-゚)⌒☆
③ TOPPERSサイトからDLした素のプロジェクトが対象にしたボードについても確認しとこう!!
対象ボードとしてるのは,CQ出版の付録ボードです.どんなボードなのかは,
あっちむいてほいっ♪ ~ 魂吹き込み編 ~ をみてね!
対象ボードは CY8CKIT-050
http://japan.cypress.com/documentation/development-kitsboards/cy8ckit-050-psoc-5lp-development-kit
このボードの回路図をみてみよう!
クリスタルみつかるかなぁー ^-^
あったぁー!! P15[0],P15[1] に クリスタル はつけん!!
このボードを元に作られたTOPPERSプロジェクトなので,XTAL が設定されていたわけですね ^-^
ぺたんこボードには外付けクリスタルないからね,だからクロックの変更が必要なのでした ^-^
というわけで,Device Selector でターゲットデバイスに変えたけど,クロック等は変更されないので自分で変更してあげてください #^^#
じゃぁね~ ばいばぁ~い
See you again!! (*^-')/~☆ Bye-Bye ♪
みほメモ:
クロックだけど、PSoC5だと
IMO=3MHz (±1%)
だけど、USB を有効にして
IMO=24Mzh (±0.25%)
にしたほうが精度がいいよね。
この場合PSoC Creater3.3までだとILOも100kHzにしてね!
みたいにでるけど、Creater4.0では1kHzでもOKみたいなかんじ。なんだろうな。
とにかく、クロック精度が高いほうがうれしいよね。
OSつかって処理速度もほしいなら、PLLを48Mhzとか60MHzとか、やればうれしくなる場合も多いはず。
省電力の場合はそれなりだけど。
あっちむいてほいっ♪ ~ 勝ったらミサイルぶち込め!編 ^^ ~
PSoC Advent Calendar2016 12/25 Merry Christmas!! 番外編
あっちむいてほいっ♪ ~ 一緒に遊ぼう編 ~ からの続き ^^#
仲良く遊んでいたのもつかの間.
あっちむいてほいっ♪ は,いつしか戦いにw
負けたあなたはらぴろんにミサイルをぶち込まれるのだ (๑•﹏•)
注)
- PSoC.Tx が 3.3vのなぞ分かったので書きます(書いた!)
- モーターの回路図不備有り変更します(図は更新でも説明をもう少し書き足す予定)
☆ミサイル実装に必要なもの
- ミサイル操作の主犯
+ RasberryPi(今回は Pi2を用意した)
- ミサイルとその仲間たち
+ 100均の引き金ロケットw
+ ミニモーター低速ギヤボックス(4速)
+ モータードライバIC(TA7291P)
+ 0.1uF フィルムコンデンサ
+ 10uF 電解コンデンサ
+ 配線ワイヤ&ブレッドボード
+ ロケットの引き金を引っ張る丈夫な糸
- PSoC.Tx と RasPi.Rx をつなげるために
+ 1kΩ 抵抗 3本
今回は,PSoCからRasPiを経由して,RasPiにつながったミサイルが発射するようにしたいとおもいます ^^#
まずはいくつか確認です!
☆彡 ミサイルとその仲間たち ^^
モータードライバIC周りを作ります!
今回はブレッドボードに実装
PasPi2 の 11番ピンの GPIO 17,13番ピンの GPIO 27,3.3v PWR,GND にそれぞれ配線します.
ランチャーとギヤボックス!
引き金引っ張る糸巻きには,LEGOブロックを使用 ^^ だから可愛い♡
ちな.つかったギヤボックスはこれ↓↓
今回このギヤボックス,「一番低速(だけどトルクは一番高い)」で組み上げてしまってる状態w
なぜなら,以前小学生と夏休みの工作で遮断機を作ってその時のモーターを引っぺがして使ったから(笑)
ちな,これがその当時作成の遮断機.〇〇市の理科作品展に選ばれたんだよね♪
そうそう.話それちゃったけど,
モーターから出てる赤い線と黒い線もブレッドボード上に刺しておいてね♪
☆彡PSoC.Tx と RasPi.Rx をつなぎましょう♪
ちょっとまったぁ!!
PSoC.Tx は 5v だよ!PasPi.Rx は 3v だよ!
どうしてそうなる?
それはね ^^*
ということで,PSoC.Tx が 5v じゃないか?!というのを先に確認します.
まず
① あっちむいてほいっ♪ プロジェクト(PSoC Creator)の TOpDesign.cysch を開きます.
Drive Level が Vddio になっていることに注目!!
② Design Wide Resources の System を開きます
VDDIO周りはすべて5vになっている.
” PSoC と Arduino ” と ” RasPi ” の関係を振り返ると↓↓
PSoC.Tx 5v と RasPi.Rx 3v を直につなぐのはまずいので,抵抗分圧回路をはさみましょう.
PSoC.Tx が Hレベルのとき,Vout は 3.31v になるよ ^^
ん?!
おかしいぞ.Vout は 2.15v だ...
Txピンの電圧は 3.3v なのか??
テスターで測ったらやっぱり 3.3v みたいw
↑↑ なんで 3.3v なの? わたしもこれについて現在調べ中...
すでに知ってる人はわたしに教えてくれるハズ(笑)
⇒ 文末に特別コーナーを用意しました
ということで,抵抗分圧回路は今回は必要なさそうだ.
抵抗分圧回路は挟まず,PSoC.Tx と RasPi2.Rx は直接配線しちゃいます.
今回使用したピンはそれぞれこれ!
PSoC.Tx には 2[5] を.
RasPi2.Rx は 10番ピンの UART0 Rx を.
RasPi2 側は Python で書きました.
参考にさせていただいたサイトは以下です.Thank you very much!!
http://saba-g.jp/wp/2016/01/15/post-1472/
http://www.instructables.com/id/Read-and-write-from-serial-port-with-Raspberry-Pi/
この動画を見てもわかるでしょ.忘れたころにミサイルぶち込み(笑)
なので,回転数をあげたギアボックスをこれから組み立てます ^^
土台もうまく完成したら動画も置き換え!
それまではすこし間抜けな動画でご勘弁(笑)
⇒ とりあえずこの低速ギヤボックスをもう1つ用意し,中でも一番高速で組んで試してみたところ,トルクが低いようでミサイルの引き金を引くことができなかったw
なのでいい方法見つかるまでこのまんま.
なんかいい方法知ってる人教えてちょうだい ^^#
つづきは,ESP8266とBluemixをもう少し使っていくことー #^^#
◆ PSoC.Tx が 3.3v のなぞ解明
神の声:
PSoC の IO電圧は Creator ではわからんで!
きちんと回路図から追わないと!
回路図からわかること:
USB端子から3.3v LD0 に入ってて,それから
Vddd/Vdda ⇒ VddIo なので 3.3v
たしかに3.3vである.
あっちむいてほいっ♪ ~ 一緒に遊ぼう編 ~
PSoC Advent Calendar2016 12/25 Merry Christmas!!
あっちむいてほいっ♪ ~ 魂吹き込み編 ~ からの続き ^^#
脳を生成し,魂は吹き込みました #^^#
ここからは ”あっちむいてほいっ♪” 仕様へと肉体の改造もやっちゃいましょう(笑)
☆あっちむいてほいっ って??
遊び方はこう.
2人の人がいて『あっちむいてっ』の掛け声で一人は首を上下左右に,もう一人は相手が向きそうな方向を指でさす.首の向きと指の方向が合えば,指をさした人の勝ち!!
あと,そうそう ”あっちむいてほいっ” って海外にはない遊びみたいだよ ^^
この遊びをらぴろんとやろう!という話.
今のらぴろんって...
無表情,無口,無関心,直立不動w
さぁ肉体改造して行こう♪
今回用意したハードウェアはこちら↓↓
これらを制御するプログラムは PSoC Creator で実装していきます.
☆無表情をどうにかして!
https://www.switch-science.com/catalog/1496/
☆無口をどうにかして!
http://gadget.renesas.com/ja/product/kemuri.html
http://akizukidenshi.com/catalog/g/gK-09873/
☆無関心をどうにかして!
https://www.switch-science.com/catalog/2085/
きわどい場所は気にしないっw
☆直立不動をどうにかして!
http://www.rapiro.com/ja/downloads/
☆時には人の手も借りますw
http://www.aitendo.com/product/11927
ちょっとしたデータをクラウドへ びゅん
☆肉体改造全体図
※ 今回のお話の対象は ”TOPPERS + PSoC” のとこだけ
☆肉体改造全体図(補足)
※ こんな感じで配置・配線はやっちゃいます
名前の付け方がいけてないのはムシね
※ リセットの処理もしておきましょう♪ お行儀よく ^^#
Component Catalog で logic と入力します.
以下のような 0 がついたコンポーネントを
reset に配線してね ^^
※ こちら ↓↓ が完成の図 ^^*
補足:
UART DS に「リセット入力は外部接続なしでフローティング状態のままにすることができます.リセット ラインになにも接続されていない場合,コンポーネントによって定数0が割り当てられます.」ってあるけど,明らかに『処理してね♡』ってことだから,きちんと明記しておきましょう!!
☆脳内全体図
今回はセマフォとデータキューを使ってみました.
通信間のデバッグなども PSoC Creator でできます ^^*
Break Point(梅干しみたいな印)を実行を一旦停止したいところに置いてステップ実行させてみてね ^^*
☆ちょっと余談 こんなこともできるんです!
PSoC Creator では C++ も使えます!
Arduinoの豊富なライブラリもつかいほーだい ^^#
ただ,C++ライブラリを直接 PSoC Creator で呼び出せないので,ラッパーを用意してあげてね.
も一個補足は,C++ライブラリなどは,PSoC Creator で
” 対象の関数を右クリック.Go To Declaration や Go To Definition ”
などで引っかからない時があるので,
” Find ” の ” Current Project ” を実行してあげたほうがいいかもです ^^*
☆らぴろん誕生
☆らぴろんとあっちむいてほいっ♪
☆ TOPPERS活用アイデア・アプリケーション開発コンテスト 金賞!
https://www.toppers.jp/contest.html
☆ PSoC Creator Top Page掲載 &
Cypress Developer Community サイトに掲載
☆ ARM Community サイトに掲載
うれしくて ↓↓↓ 笑
Merry Christmas!!
番外編:あっちむいてほいっ♪ ~ 勝ったらミサイルぶち込め編 (^^♪ ~
あっちむいてほいっ♪ ~ 魂吹き込み編 ~
PSoC Advent Calendar2016 12/18
☆あそび相手がほしい...
はんだづけ友達,どろーん友達,呑み友達,温泉友達,ショッピング友達,カフェ友達,Disny大好き友達...そこそこ相手はいるけれど,みんなして予定入っちゃってるときがある.
そんなとき ”ぼっち” になっちゃうの...
だれか みほ とあそんでくれない?
☆いたいた ^^ ちょうどいいやついた!
その名は ”らぴろん” #^^#
最近ガンダムみたいな進化を遂げた(外見だけ)
『ねぇ らぴろん,みほと一緒にあそばない?^^』
ん?でも らぴろん,元気なみほについてこれるかな??^^
そこで
☆らぴろんの身体検査
らぴろん は手足はそこそこ自由に動かせます.
でも... あたま... からっぽw
ドモドモ\( ̄▽ ̄*)(* ̄▽ ̄)/ドモドモ
そこで...
らぴろんのあたまん中改造計画w
らぴろんを”も少しおりこうさん”にしてあげましょう♪ ^^#
使うのはこれ!
”みんな大好きPSoC♡” &
”みんな大好きTOPPERS♡”
※ TOPPERSとは
組込み用のITRON仕様のちっちゃなRTOS
https://www.toppers.jp/project.html
脳みそ基板にはこれ!
PSoC5LP(CY8C5868AXI-LP035)を使います!
みんな簡単に手に入るよ!
http://shop.cqpub.co.jp/hanbai/books/48/48171.html
脳みそはこれ!
TOPPERS/ASPカーネル 簡易パッケージ
CY8CKIT-050(Cypress Semiconductor)簡易パッケージ
これまたみんな簡単に手に入るよ!
https://www.toppers.jp/asp-e-download.html
https://www.toppers.jp/download.cgi/asp_cy8ckit050_gcc_20140204.zip
脳みそ注入!
まず,
① PSoC Creator を準備して!
http://yamagoya.hatenablog.jp/entry/2016/12/02/000000
※ こにしさんのページを引用させていただきました ^^#
② DLしたTOPPERS/ASPカーネル簡易パッケージを
c:\PSoC5 以下に展開しよう!
※ 日本語フォルダ名はだいたいなにかを引き起こす...
③ PSoC Creator にインポート!
File -> Open -> c:\PSoC5\asp_1.9.0_3.0\asp_eval1.cywrk
④ ビルド!
Build -> Build asp_1.9.0_3.0
⑤ 書き込み!
ボードを接続
Debug -> Program
⑥ 脳みそ(サンプル)を動かしてみよう!
PSoC5LPのシリアル出力をPCで観測するために
*用意するもの!
USBシリアル変換モジュール
今回使用したものは FTDI社製 FT234X
*手順
1) PSoC Creator の Design Wide Resources - Pins で確認
Rx_1 が P3[7],Tx_1 が P3[6] に割り当たっています.
2) PSoC5LPと変換モジュールを接続して,ターミナルソフトを起動します
Rx_1:PSoC5LP.P3[7] と 変換モジュールの Tx
Tx_1:PSoC5LP.P3[6] と 変換モジュールの Rx
を接続して,PCでターミナルソフトを起動します.
※ ボーレートは 19200
くまさんがいると間違いなく成功します(嘘w
ターミナルソフトに何か出てきます.
もともと task1,2,3 全部動いてます.
c を1回入力すると task1,2,3 が順に回ります.いけた?(下図)
2 ,e と順番に入力すると,task2 は exitします.
ちな,コマンドは sample1.c をみてね ^^*
脳みそをもっと充実させて!!
タスクを追加してみよう!!
サンプルに task4 を追加してみよ (*・ω・)(*-ω-)(*・ω・)(*-ω-)ウンウン♪
① Task4 の静的生成準備
C:\PSoC5\asp_1.9.0_3.0\asp_eval1.cydsn\asp\OBJS の
sample1.cfg に追記
『task4 生成!』って task1-3 のまねっこで書いて ^^#
② OBJSフォルダ内の set_path.bat の編集
今回は PSoC Creator 4.0 を使っているからね
IF %1 == 4.0 path C:\Program Files(x86)\Cypress\PSoC Creator\4.0\PSoC Creator\import\gnu\arm\4.9.3\bin;%PATH%
の一文を追加します
みんなの PSoC Creator のインストールパスに合わせてね ^^#
③ コマンドプロンプトを開いて『set_path.bat 4.0』Enter を実行して!
念押しだけど,今回は PSoC Creator 4.0 だからね ^^*
④ つづけてコマンドプロンプトで
make_depend.bat .. sample1 cy8ckit050_gcc
Enter を実行して!
⑤ kernal_cfg.h,kernel_cfg.c,offset.h が新しく生成されましたか? ^-^
タイムスタンプで確認したり,kernel_cfg.c の中身を見たりしてみてね
task4 が追加されてるのがわかります
⑥ PSoC Creator を開いて,sample1.c の一部編集!
抜粋:
char message[4];
const char *graph[] = {"|", " +", " *", " ^^#_Miho"};
SVC_PERROR(act_tsk(TASK4));
case '4': case '3' とかと同じように追記
実行すると ^-^
ファイル名などを変えたときには
ex. OBJS フォルダで作業
sample1.cfg -> rapiro.cfg
sample1.c -> rapiro.c
sample1.h -> rapiro.h
PSoC Creator の Workspace Explore から sample1.c と sample1.h を削除して!
そして,rapiro.c と rapiro.h を追加しよう!
くれぐれも sample1.h の記載箇所を rapiro.h にすることなど忘れないでね!
そのあと,コマンドプロンプトから set_path.bat を実行!
続けて,
make_depend.bat .. rapiro cy8ckit050_gcc
を実行!
おわり ^^#
続きは
PSoC Advent Calendar2016 12/25 Merry Christmas!!
で会いましょう♪
Step1: 改造計画_準備編
Rapi には,腕やら足やら首やらを動かすために,肩のあたりに,Rapiro 基板(Arduino互換サーボモータ制御基板)が載っている.
これだけでも,十分愛くるしく動く Rapi を見ることはできます.
でも...こんなの持ってるんですもの ♪
じゃ~ん (^^♪ Pink のコントローラ!
使わないとダメでしょう.
Bluetooth には
Planex BT-Micro4
消費電力が 1/2 を用意しました.
そしてそのためには,RasPi が必要です.
RasPi には
Raspberry Pi Type B 512MB
を用意しました.
さてさて Rapi の 頭をぱっくりあけてww
ついでにカメラも付けちゃいます ^^*
今日はここまで.
明日からは,PinK の コントローラの出番もふえるはす!!
まとめ:用意するもの
* Rapiro デコらなくてもいい ^^;
* Rsapberry Pi Type B 512MB
* Bluetooth Planex BT-Micro4
* PS3 コントローラ DUALSHOCK3 WHITEもきれい ^^*
* LANケーブル:イントラ環境
次回をおたのしみに~ ♪
はだかの Rapi に...
誕生日に Rapi がうちにやってきた.
でもなんか物足りない.
やだー,このこ ”はだかんぼう” じゃない!!
そこで服を着せた.
りりしい (*^^)v
かっこいい (^^♪
まぁ.かわいい (#^.^#)
うしろだって!みえないところもおしゃれだよ (^_-)-☆
次はこの子に命を吹き込んであげましょう ♪