AIスタックチャンミニマルProto化版とtoioの素敵な関係

© CC BY 4+ visibility210
© CC BY 4+
visibility210

AIスタックチャンミニマルを改造してtoioと合体させてみました。
M5Stackとジョイスティックを使って、toioを動かすことができます!!

link https://scrapbox.io/M5S/AI%EF%BD%BD%EF%BE%80%EF%BD%AF%EF%BD%B8%EF%BE%81%EF%BD%AC%EF%BE%9D%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%AB%E3%81%A7%E9%81%8A%E3%81%B6!!
動画
開発素材
システム構成
system image

今回構成したシステムの図は以上のようになります。

デバイス(詳細はストーリーをご確認ください)

  • Atom Echo
  • SSD1306
  • Proto kit
  • Atom Mate for toio
  • toio

サービス

ストーリー

はじめに

みなさん、スタックチャン(Stack-chan)してますか? わたしは、AIスタックチャンとお話しているとほっこりします。

今回、一番小さくてお安いスタックチャンであるAIスタックチャンミニマルを改造して遊んでいるので、そのことについて報告したいと思います。

以下、製品の価格を紹介する場合は、スイッチサイエンスの2024/11/30調べのものですので、参考にしてください。

AIスタックチャンミニマルとは?

AIスタックチャン - ミニマル(AI Stack-chan Minimal)@UtaAoyaさんが開発されているAIスタックチャンの仲間です。 AIスタックチャンミニマルは、AIが使えるスタックチャンの中で、誰でも簡単に導入できるように、できるだけ安い価格で実現できるようにしたシステムです。

主要な構成は以下のようになります。

むとうの改造点

この素敵なAIスタックチャンをむとうが若干改造してみました。

Proto基板への組み込み

M5Stackには、ATOMICプロトキット(¥605)というAtomシリーズで自分の回路を作成するためのキットが売られています。 このキットは、Atomを接続できるだけではなく、LEGO穴も提供されています。

https://twitter.com/610t/status/1860839252101304328

toio(スイッチサイエンス,¥7,128)は小型のロボットで、専用マットを使うと、位置や向きをきっちりと決めたりすることができます。 その他に、フルカラーLEDが光り、音も出せるようになっています。

toioをAtomシリーズから用いるための製品として、 Atom Mate for toio(¥5,060) があります。 これについているLEGO穴はATOMICプロトキットと同じ間隔のため、副作用としてProto版と接続できるようになりました。 このため、AIスタックチャンがtoioと合体できるのです!!

Atom Mate for toioにはバッテリーがついており、Grove端子経由でAtom Echoに給電することが可能です。 これで、電源問題も解決ですね!! 手元では、Atom Mate for toioのバッテリーを使うと、90 mAh版では30分程度、160 mAh版では1時間程度、利用することができました。

https://twitter.com/610t/status/1861521531731616243

Joystickを使ってtoioを操縦する

はじめにごめんなさいなのですが、ここで紹介する構成では、Atom Echoからtoioを操作しているわけではありません。他のM5Stackシリーズからtoioを操縦するという構成になっています。

https://www.youtube.com/watch?v=-lgxvZjHF7A

M5StackToioは、M5Stackを使ってtoioを操作するためのライブラリです。 このライブラリのexampleとして、Joystickでtoioを動かすプログラムが提供されています。

https://twitter.com/610t/status/1861934900271833134

むとうはこのプログラムを変更して、M5Stack Faces用ジョイスティックパネル(¥1,023;EoL)を使えるようにしました

(2024/12/16追記) また、M5Stack用 I2Cジョイスティックユニット RGB LED付き (STM32G030)(¥836)にも対応しています。

これら3つのジョイスティックのうちで、いずれか一つが繋がっていると、そのジョイスティックを使うようになっています。 これらの優先順位は以下のようになっています。

  • Faces Joystick
  • Joystick2 unit
  • Joystick unit

https://twitter.com/610t/status/1862033915336437960

これで、M5Stackからtoioが操縦できるようになり、AIでの応答をさせながらスタックチャンをお散歩させることができます!!

(2024/12/11追記) Joystick以外にも、M5Stackシリーズの中には加速度センサー(IMU)が付いたものがあるため、これで操縦することも可能です。 この例は、M5StackToioとわたくしのおまけとして紹介していますので、興味のある方はご覧ください。

https://twitter.com/610t/status/1866006985378062660

(2024/12/11追記):さらに、UIFlowから加速度センサーを使って操縦することも可能です。以下のコードを参照してください。

M5AtomシリーズからtoioをIMUで操作する

Webインタフェースでの質問と応答の表示

Webインタフェースでの表示

AIスタックチャンミニマルでは、音声での質問のほかにもWebインタフェース(テキストで会話)を使って質問の入力が可能です。 普段はスタックチャンの答えをちゃんと聞いているのですが、時にはボーッとしていて返事を聞き逃してその内容が気になることがあります。

そこで、質問と答えの内容をこのWebインタフェースに表示して残しておけるようにしてみました。

自動質問スクリプト作成

だんだん、自分で質問を入力するのがめんどくさくなってきたので、自動で質問をし続けるスクリプトを作成してみました。

以下のようなコマンドで、ユーザー610tのPostを取得することができます。 <bearer>部分は、自分のBearer IDを使ってください。

$ curl --request GET  --url 'https://api.x.com/2/tweets/search/recent?query=from:610t' --header 'authorization: Bearer <bearer>' > tweet.json

以下のようなコードで、ランダムにPostを選んでスタックチャンに尋ねることができます。192.168.11.126部分はあなたのスタックチャンのIPアドレスに置き換えてください。

# coding: utf-8
import random
import json
import requests
import time

IP = '192.168.11.126'
POST_URL = 'http://'+IP+'/text_chat_set'
HEADER = {'Content-Type': 'text/plain;charset=UTF-8'}

file = open('tweet.json','r')
tweet = json.load(file)
num = len(tweet['data'])
while True:
  pos = random.randrange(num)
  msg = tweet['data'][pos]['text']
  print('msg:{}'.format(msg))
  try:
    requests.post(POST_URL, headers=HEADER, data=msg)
  except requests.exceptions.RequestException:
    print("Maybe Response Error.")
  time.sleep(60)

TODO

Joystick対応

M5StickC(Joystick Hat)への対応

ただ、提供されている例のJoystickでtoioを動かすプログラムは、M5Stack Core(Basic)シリーズのみの対応となっているので、大幅な改修が必要です。

具体的には以下の点で改修が必要です。

  • 画面の表示を調整する。
  • ボタンを3ボタンから2ボタンで操作できるようにする。

その上で、M5StickC Joystick Hat(¥1,485)にも対応したいと考えています。

Webインタフェース関連

自動質問スクリプト作成での複数ファイルからのデータ読み込み

(2024/12/16追記) XのAPIは、無料枠では月間100postまでしか取得できません。 そこで、何回かに分けて取得したPostをファイルに保存して、全てを読み込んで使うことで、質問のバラエティーを増やします。

このスクリプトも作成して、現在テスト中です。

謝辞

以下のプロジェクトを利用させていただいています。 ありがとうございました。

このプロジェクトについて

M5Stack Japan Creativity Contest 2025

M5Stack Japan Creativity Contest 2025(ProtoPedia)があれば、応募したいなぁ…

ヒーローズリーグ2025

ヒーローズリーグ2025も、あったら出そうかなぁ。

メンバー
  • user
    むとうたけし @610t

関連リンク

同じニオイがする作品
  • event ドッキング!アトムチャン マーク2(DK-AtomChan Mark Ⅱ)
  • event サービス終了になった LINE CLOVA 達に第二の人生を歩ませる
  • event ドッキング!Atom-Chan
  • event 音を奏でて toio を動かす!(p5.js・ml5.js・p5.toio を用いたバージョン)

Proto lovers ♥
user

イベントまとめ

コンテストまとめ

作品を登録しよう

モノづくりしている人に、つくった作品を見てもらえ、リアクションがもらえるかも?

close

目次


Proto lovers ♥
user