ナノクロ


2025 3 8 ATP3011AU 32pin TQFP版到着

 注文していたATP3011AU 32pin TQFP版が到着した。見た目、小さい。しかし、NanoC6のチップと比べると大きい。

 基板にテープで張り付けて動かないようにする。あとは無心に半田付け。金色の所に半田が綺麗に乗ってくれて作業がしやすい。

 これを必要な部分だけに切り取って電池ケースの裏に張り付ける。

 こんな具合に動作した。しかし、声が小さすぎるので試行錯誤した結果、ボタン電池を諦め、小さめのリポバッテリーに小さなアンプも挟んで小型スピーカを作動させることにした。完成形はこれ。私の初号機の場合、このように配線はカオス... 2号機は多少洗練されるだろうけど、2号機の計画はない(^^;) 代わりにWAV版ナノクロちゃんは考案中。


2025 3 4 ボタン電池で動作

 背中にLR44ボタン電池を3個背負うことにして、動作することができた。

 今後の予定としては、ATP3011の小さい版を10個購入(1個売りは不可)したので、GPIO4からデータを送ってアンプで増幅し小型スピーカでAquesTalk pico LSIで喋らせるということです。

 AquesTalkESP32はCPUがRISC-Vのものには対応していないため、ソフトウェアでは鳴らないのでAquesTalk pico LSIを使うわけです。ところが、そのうちの28pin DIP版は長さが5cmほどあるので、小型化のためには32pin TQFP版となるわけですね。DIP版は1個買いが可能ですが、TQFP版は10個単位です(^^;)


2025 3 3 NanoC6でM5Avatar&AquesTalk

 M5AvatarのLipSyncが動作しないので、luisllamasbinaburoさん&shikarunochiさんのESP32_Facesを導入することに。しかし、このサイズの小さいOLEDにFacesが収まるようにするのに試行錯誤の連続。

 ESP32_Facesには18種類ほどの表情があるのだが、どれがどの表情か分かっていない(^^;) 画面がひっくり返っているかもしれないけれど、できたようだ(^^) 可愛いな、育てよう(^^)/

 私の環境では、試行錯誤の結果、下記のような値でほぼ中央に表示することができた。

★ino

  1. #define WIDTH 64 -> 32
  2. #define HEIGHT 128 -> 128
  3. #define SCREEN_WIDTH 128
  4. #define SCREEN_HEIGHT 64
  5. #define OLED_RESET 4 -> -1
  6. #define EYE 40 -> 30
  7. Wire.begin(21, 25); -> (1, 2)

★Face.h

  1. uint16_t EyeInterDistance = 4; ->0 これはあまり影響ないかもしれない

★EyePresets.h
 それぞれの表情で、主に以下の4つを好みに小さくする

  1. .Height = 40, -> 15
  2. .Width = 40, -> 15
  3. .Radius_Top = 12, -> 4
  4. .Radius_Bottom = 8, -> 4

★EyeBlink.h
 好みで決める値

  1. int32_t BlinkWidth = 40;
  2. int32_t BlinkHeight = 2;


2025 2 28 NanoC6でM5Avatar&AquesTalk

 マルチタスクにしてATP3011への言葉送りと発声をloop外に出した。顔の動きと滑らかな発声を実現。といってもlipSyncはできないんだよね(^^;) マイクで拾ってlipsyncできるかな? そのためにはもう一つGPIOピンが必要か


2025 2 26 NanoC6から外部端子を出す

 0.16mmのポリウレタン銅線が届いた。しかし、GPIO4に配線予定が、拙い私の技術では達成できず、GPIO4と5に団子状態でくっついてしまった。念のためSoftwareSerial GroveA(2,4);でやってみるとイェ〜イと叫んだ! 予想通り、GroveA(2,5);でもイェ〜イと叫んでくれた。


2025 2 23 ATP3011を鳴らす

 NanoC6に外部端子を加える材料が届く前に色々試す。声を出したいのでATP3011をソフトウェアシリアルでGroveAから操作する。M5Coreで使っていたものにコードつないでみた。声出たねぇ〜 イェーィ(^^)/ ATP3011のTQFP32版だと小さくていいんだけど(^^;)...

 NanoC6からGPIO15,2,22のピンに配線して取り出し、どれか1本でもATP3011を鳴らすことができれば先に進む(^^) ATP3011TQFP32版だと、10個売りで¥16,500だけど、そんなに要らんよね(^^;)

 外部へ出す端子としては黄色部分のピンが狙い目。作業スペースもあるので。


2025 2 19 NanoC6の内部

 ざっとM5StackNanoC6の内部を見たところ、図に示したGPIOピンが使われていないような... I2SのMAX98357とつないで音を出せるのだろうか?やってみる実験(^^;) 内部のチップはおよそ5mm四方なので、半田付けできるかが微妙だ...


2025 2 19 画面の性能

 M5STACK社のUnit OLEDのサンプルプログラム。2つのM5UnitOLEDをM5UnitGLASS2に変更。display.init(1,2)、setRotation(0)、lgfxJapanMinchoP_16、setTextSize(1)の変更だけでこの通り。すごい柔軟性だな〜(^^) 感動! setRotation(2)のままだと右側上動だった。


2025 2 18 顔表示画面2

 アリエクさんから小さなOLED液晶が届いたので取り付けに入る。

  1. 初めに黒いプラを取る
  2. 液晶のピンを除去
  3. 基板ホールをきれいに
  4. Groveソケットに取り付けておいた銅線をホールに通して、位置調整しながら半田付け固定。
  5. 液晶位置はNanoボタンと反対側になった


 この構成でテキストを表示しようと思ったら、表示されなかった。Avatarは出るのに(^^;) 試行錯誤の結果、このOLEDの原点が(32,32)ということが判明(^^) 小さくした液晶は画面の1/4なんて、昔見たことがあるような...あれか。

drawRect(32,32,64,32,WHITE);


2025 2 15 顔表示画面

 配線で型がつけられるように、今回はGroveケーブルではなく細めの銅線を使用。
 Groveケーブルからピンを取る。カッター刃でカシメ部をこじ開けてコードのビニール皮膜を抜き取り導線を切り取る。

  1. 銅線を挿入
  2. 細半田で半田付け
  3. L字型に折曲
  4. 挿入
  5. 1306に半田付けした柔らか導線を銅線に半田付け
 完成(^^)/。黄色部分はグルースティックで閉じてしまう。


2025 2 13 画面を小さくする

 小さいOLEDがあったので取り付けてみた。なかなかいいサイズだが、Groveコネクタ部分が左右にあって横幅が大きい。

 そこで、このM5Stack用 0.42インチ Mini OLEDユニットを開腹。白いコネクタ部をはがしてみると、左側の4ピン外側に配線はなさそうだが、右側4ピンの外側には2ピンに配線がありそうだ。影響が出そうだが、この2ピンの配線は断ち切る。後でわかったことだが、この結果右側のGroveは使用不可になった。


2025 2 13 M5NanoC6をゲット!

 M5StackNanoC6をゲットした。かなり小型のマイコンだ。これを使ってスタックチャンの小型化を目指す。まずはssd1306制御。文字なら表示完了。エラー続きだったM5Unifiedも最新の0.2.3にしたらすんなりコンパイルしてくれたが、画面は出てこない。結局、Adafruit_GFX.hとAdafruit_SSD1306.hを使うと下のとおり表示できた。

 色々と彷徨った挙句、結局たなかまさゆきさんのLang-shipでの「M5Stack NanoC6購入」を熟読。「Arduino core for the ESP32のバージョン3以降をインストール」で決まり! でけた(^^)/ たなかさんいつも感謝です。M5Stack-Avatarまで表示できた(^^)/