趣味TECHオンライン | 趣味のモノづくりを応援するオンラインメディア

趣味のモノづくりを応援するオンラインメディア

M5stackでリモートでメッセージが伝えられるネコ型ロボット「ロボにゃん」を作ってみた


f:id:tokyo_ff:20210501181314j:plain

スマホで「お腹すいた~」とか「なにかフード食べたいニャン」とか、別の部屋から一方的に話して伝えるためだけのネコ型強権ロボです。

 

<投稿者:@haespo

twitter.com

STAND BY ME ドラえもん

STAND BY ME ドラえもん

  • メディア: Prime Video
 

 

ネコ型ロボット「ロボにゃん」

f:id:tokyo_ff:20210501181538j:plain

M5stackを使って簡易Webページを作り、WiFi経由でスマホから文字列を打つと、日本語でメッセージが表示され、発話も出来ます。ソフトウェアのIDEはArduinoを使用。ついでに要らない機能として、鼻を触るとニャーと鳴いたり、尻尾がサーボで動くようにしてあります。

 

作り方

M5Stackで流れる日本語表示 with WebSocket のセットアップ。

以下のリンク先の「SDカードへのフォントデータ書き込み」から、「HTML ヘッダファイルをSD カードへ書き込む」、arduinoIDEを再起動するまで、の手順を行います。

 

microSDカードへフォントファイルを保存したりArduinoでそれを読み込んで日本語表示を実現するためのセットアップが出来ました。それとWi-FiでWebSocket 通信を行うための準備もしました。

milktech.hatenablog.jp

みんなのM5Stack入門

みんなのM5Stack入門

  • 作者:下島健彦
  • 発売日: 2019/12/12
  • メディア: Kindle版
 

 

次にAquesTalkで日本語発話のセットアップ。

M5Stackには無線+マイコンモジュールのESP32が搭載されており、それに対応した日本語発話システムで「AquesTalk pico for ESP32 (AquesTalk-ESP)」がすぐ使えそうなので入れてみました。

blog-yama.a-quest.com


無償の評価版の場合、記事の下の方に書かれている通り、ナ行とマ行がすべてヌと発声される制限があるそうです・・・。

 

次にハードウェアのセットアップ。

全体の配線 こんな感じで接続します。

f:id:tokyo_ff:20210501181837j:plain

 

サーボを駆動するコードは以下のリンク先を使わせて頂きました。因みにPWMを出力する方法はanalogWrite()関数ではなく、細かく周波数を設定できるledcライブラリが使われています。

ogimotokin.hatenablog.com

 

Arduinoソースコード

github.com

勿論ですがルーター設定部分は変更が必要。

 

動作確認。
Arduino書き込み後、M5stackがリセットされ、サーボが少し動いて「WiFi Connecting...」が表示され、接続するとIPアドレスが表示されます

f:id:tokyo_ff:20210501182019j:plain


同じルーターにスマホ等を接続し、ブラウザのアドレス窓に上記IPアドレスを記載しEnterを押します。するとM5stackの画面表示が「WS connecting」の後「WebSocket Connected」に変化し操作できるようになります。

f:id:tokyo_ff:20210501182041j:plain

 

スマホに表示されている画面で、上側に日本語文章を入れて送信するとM5Stack画面に日本語表示されます。下側に発音をアルファベットで入力、送信すると発話します。「おはこんばんちわ」と発話させたかったら、「ohakonbanchiwa」と記載。するとM5stackのスピーカーからAquesTalkで合成された声が聞こえます。発話用入力部にスペースや改行などが入ると、バグったりリセットされる可能性があるため注意。

 

それから、タッチセンサーの金属部に触れ続けると、にゃぁと鳴き、尻尾が動きます。センサー感度は、M5stackをUSBで繋げているかで変わってきます。TS_THSRATIOの値を0.93から1.0に近づける事で調整可。

 

スピーカーは音量設定できないのでボリュームがあると良いですね。発話していない時にノイズ音がうるさい問題に対応するため、M5stackの中のスピーカアンプICのEN端子をコントロールするように改造してあります。

 

<投稿者:@haespo

twitter.com