スマホで「お腹すいた~」とか「なにかフード食べたいニャン」とか、別の部屋から一方的に話して伝えるためだけのネコ型強権ロボです。
<投稿者:@haespo>
ネコ型ロボット「ロボにゃん」
M5stackを使って簡易Webページを作り、WiFi経由でスマホから文字列を打つと、日本語でメッセージが表示され、発話も出来ます。ソフトウェアのIDEはArduinoを使用。ついでに要らない機能として、鼻を触るとニャーと鳴いたり、尻尾がサーボで動くようにしてあります。
作り方
M5Stackで流れる日本語表示 with WebSocket のセットアップ。
以下のリンク先の「SDカードへのフォントデータ書き込み」から、「HTML ヘッダファイルをSD カードへ書き込む」、arduinoIDEを再起動するまで、の手順を行います。
microSDカードへフォントファイルを保存したりArduinoでそれを読み込んで日本語表示を実現するためのセットアップが出来ました。それとWi-FiでWebSocket 通信を行うための準備もしました。
次にAquesTalkで日本語発話のセットアップ。
M5Stackには無線+マイコンモジュールのESP32が搭載されており、それに対応した日本語発話システムで「AquesTalk pico for ESP32 (AquesTalk-ESP)」がすぐ使えそうなので入れてみました。
無償の評価版の場合、記事の下の方に書かれている通り、ナ行とマ行がすべてヌと発声される制限があるそうです・・・。
次にハードウェアのセットアップ。
全体の配線 こんな感じで接続します。
サーボを駆動するコードは以下のリンク先を使わせて頂きました。因みにPWMを出力する方法はanalogWrite()関数ではなく、細かく周波数を設定できるledcライブラリが使われています。
Arduinoソースコード
勿論ですがルーター設定部分は変更が必要。
動作確認。
Arduino書き込み後、M5stackがリセットされ、サーボが少し動いて「WiFi Connecting...」が表示され、接続するとIPアドレスが表示されます
同じルーターにスマホ等を接続し、ブラウザのアドレス窓に上記IPアドレスを記載しEnterを押します。するとM5stackの画面表示が「WS connecting」の後「WebSocket Connected」に変化し操作できるようになります。
スマホに表示されている画面で、上側に日本語文章を入れて送信するとM5Stack画面に日本語表示されます。下側に発音をアルファベットで入力、送信すると発話します。「おはこんばんちわ」と発話させたかったら、「ohakonbanchiwa」と記載。するとM5stackのスピーカーからAquesTalkで合成された声が聞こえます。発話用入力部にスペースや改行などが入ると、バグったりリセットされる可能性があるため注意。
それから、タッチセンサーの金属部に触れ続けると、にゃぁと鳴き、尻尾が動きます。センサー感度は、M5stackをUSBで繋げているかで変わってきます。TS_THSRATIOの値を0.93から1.0に近づける事で調整可。
スピーカーは音量設定できないのでボリュームがあると良いですね。発話していない時にノイズ音がうるさい問題に対応するため、M5stackの中のスピーカアンプICのEN端子をコントロールするように改造してあります。
<投稿者:@haespo>