2026年2月21日土曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜Arduino UNO互換機を改造してみる

前回の続きです。株式会社アクエストが開発している「音声合成LSI(「ATP3011(←データシートPDF)」と「ATP3012」(←データシートPDF)」)」を、秋月電子通商で購入して試用しています。簡単な使い方は、公式Webサイトの「音声合成LSI「AquesTalk pico LSI」」で確認することができますが、いろいろと試用しているうちに一筋縄ではいかないことが判明してきて、試行錯誤と悪戦苦闘の真っ最中です。

前回は、音声合成LSIの抜き挿しが簡単にできるように、セロプレッシャーICソケットを利用した「Arduino互換機」を自作したところまで書きました。このArduino互換機は、「Diavolino」を参考にして作っていて、設計としてはArduino ProDuemilanoveなどに近いものとなっています。このArduino互換自作マイコンボードは、USB-TTLシリアル変換ケーブルをつないでMacやPCと接続しています。ATP3012系の音声合成LSIでは問題なく使えたのですが、ATP3011系ではうまく動いてくれませんでした。そこで、かなり力技ではありますが、Arduino UNO R3の互換機を購入して、基板上のICソケットを取り外して、ゼロプレッシャーICソケットに載せ替えてしまおうと考えました。

幸い、UNO R3の互換機ならかなりお安く出回っているので、実験に使っても心(懐?)の痛みが少なくて済みます。ATmega328P-PU(28ピンDIP形状)を載せたものであれば、ATP3011やATP3012を載せ替えて使うことができるはずです。Amazonでお安く手に入れたUNO R3互換マイコンボードからATmega328Pを外して、ICソケットもハンダ吸取り機で外します。そこに、ゼロプレッシャーICソケットを載せられればよいのですが、他の部品と干渉するため、ピンソケットを取り付けて高くしてからゼロプレッシャーICソケットを挿し込んでみます。実際には、この方法にたどり着くまでいろいろと試行錯誤の末ではありましたが、どうにか使えそうな状態にすることができました。

この状態で、もとのUNO R3互換機に載っていたATmega328を取り付けてArduinoとして動くかどうかやってみました。Arduino IDEで「ボード:」を「Arduino UNO」に、「ポート:」を「/dev/cu.usbmodem…」に設定をしてから、Lチカプログラムを「コンパイル&書き込み」で流し込んだところ、無事に動いてくれました。これで、ICソケットの代わりにゼロプレッシャーICソケットを換装しても、Arduino UNOとして問題なく動くということが確認ができました。次に、ATP3012系の音声合成LSIを載せて動作確認をすると、問題なく動くことがわかりました。満を持して、ATP3011系の音声合成LSIが動くかどうかやってみましたが、こちらはどうやってもコントロールすることができませんでした。

若干ヤケ○ソ気味になって、もう一つ買っておいたUNO R3互換機のICソケットに直接ATP3011を挿してコントロールできるかやってみましたが、それでもうまく動かないことが判明しました。結局、ATP3011系は、どうしてもコントロールすることができませんでした。以前にやったときは、ATP3012系の「ロボットのような音声」が出たのですっかり満足してしまい、他のものも同じ方法で音声が出るとばかり思い込んでいたのが甘かったようです。

いろいろと調べているうちに、うまく行かない原因を紹介するページもみつけたのですが、私が遭遇しているバターンとはちょっと違う気がしていて、どうしたものかと頭を悩ませているところです。ATP3012系のときとATP3011系のときの大きな違いは、Arduino IDEで「ボード:」と「ポート:」を設定したあと、「シリアルモニタ」を使える状態にして、ATP3011に何かメッセージを送ろうとすると、意味不明な(文字化けした)文字列が返ってくることです。macOS付属の「ターミナル」を使って「screen」コマンドでの接続も試みてみましたが、これもうまくいきませんでした。根本的に、別のアプローチを考えないといけないのかもしれません。orz

「音声合成LSI(ATP3011とATP3012)を使ってみる」

2026年2月11日水曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜USBシリアル変換モジュール+自作マイコンボードで動かす

以前にこのBlogで紹介した音声合成LSIを使った動作実験の続きです。株式会社アクエストが開発している音声合成LSIの「AquesTalk pico LSI」(「ATP3011(←データシートPDF)」と「ATP3012(←データシートPDF)」)を使ってみる実験をしています。前回までの動作実験から得られた知見をもとに、この音声合成LSI用のマイコンボードを自作してみようと試行錯誤していましたが、なかなかうまく行かずに時間がかかってしまっていました。

当初は、ユニバーサル基板に電子部品を配置して、回路を設計して自作マイコンボードを組み上げてみようと思って取り組み始めたのですが、どうにもうまくいきません。回路に誤りがあるのか、ハンダ付けに不良があるのか、ゼロプレッシャーICソケットを使ったのがいけなかったのか、いろいろと試行錯誤したもののうまくいく見通しが立ちませんでした。そこで、秋月電子通商の「AE-ATmega基板」を使ってみようと思い立ちました。そもそも、ユニバーサル基板で自作マイコンボードを作ろうと思ったのは、ゼロプレッシャーICソケット(28Pで600mil)を使おうと思っていたので、これがAE-ATmega基板には載らないことが1番の理由でした。ゼロプレッシャーICソケットには、28Pで300milのスリムなものもあるので、これを買い直して使ってみることにしたのでした。AE-ATmega基板と28PゼロプレッシャーICソケット(300mil)以外に用意したパーツのリストは以下の通りです。

〈パーツリスト〉

  • DF06M(ブリッジダイオード)
  • L7805CV(三端子レギュレータ)
  • 電解コンデンサ(100μF25V)*2
  • 積層セラミックコンデンサ(0.1μF)*4
  • セラミックコンデンサ(22pF)*2
  • 水晶振動子(16MHz)
  • タクトスイッチ
  • 抵抗(1kΩ)茶黒赤金
  • 抵抗(10kΩ)茶黒橙金*2
  • LED(何かの基板から外してストックしていたありあわせ)*2
  • スライドスイッチ
  • DCジャック

幸い、ゼロプレッシャーICソケット以外は、すべて自宅に在庫があったのでさくっと組み上げることができました。AE-ATmega基板を使った電子工作は久しぶりでしたが、出来上がりのイメージとしては、以前に紹介した「Diavolino」の回路設計を参考にして、部分的に模倣しながら作っていきました。USB-TTL変換ケーブルを使うArduinoだと、「LilyPad Arduino Main Board」や「LilyPad Arduino Simple」、SparkFunで製造販売されている「Arduino Pro」もありますが、作りやすさ、わかりやすさという意味から、Diavolinoが一番だと思っています。
#AE-ATmega基盤を使った電子工作については、拙Blogの過去記事を御覧ください。

部品への干渉を防ぐために、ICソケットを取り付けるところに、ピンソケットを取り付けてゼロプレッシャーICソケットを載せています。はじめは、普通のICソケットを取り付けた上からクランプを使って力ずくでゼロプレッシャーICソケットを押し込んでみたのですが、ピンが曲がってしまったり本体が歪んでしまったりして実用には適さないと判断しました。これを使って、以前の動作実験の手順を参考にしながら動作確認をしてみましたが、ATP3012系では載せるLSIを交換しても全く問題なく動いてくれました。ATP3011系は、シリアル通信がうまく通っていない感じでエラーを吐いている感じでした。

いろいろと設定を変えて試してみましたがATP3011系ではうまくいきません。そもそもATP3011系は、水晶発振子を必要としないので、回路上で切り替えられたらうまくいくのかもしれません。今回作った自作マイコンボードは、ATP3012系専用ということになってしまいそうです。水晶発振子を付けないでマイコンボードを自作するという手もあるかもしれませんが、今回作った自作マイコンボードは、Arduinoのブートローダを書き込んだATmega168328を載せたらそのままArduino互換機としても使えるというメリットがあります。水晶発振子を使わないでArduino互換機を作ることも可能ですが、それだと精度に問題が生じることがあるようです。何かよい方法がないか考えてみたいと思います。

余談ではありますが、今回使用したUSB-TTLシリアル変換ケーブルが、Amazonで購入したもので、手頃なお値段だったためかピン配列が全くデタラメで、自力で確認しながら並べ直して使いました。そのため、一般的(?)なUSB-TTLシリアル変換ケーブルのカラー(配色・配列ともに)とは違う感じになっていると思います。
#自力でピンアサインを確認するのは、かなり骨の折れる作業でした。orz

「音声合成LSI(ATP3011とATP3012)を使ってみる」

2026年2月4日水曜日

macOSで「ESP32」を使ってみる〜ESP32 DevKitV1にWi-Fiからアクセスしてみる

前回の続きです。Wi-FiやBluetoothに対応したESPRESSIF Systems社のマイコン「ESP32」シリーズを使ってみるという話です。前回は、「ESP32 DevKitV1(以下「DevKitV1」と略記)」を使って、Lチカ動作確認を行いました。今回は、無線でのコントロールをやってみたいと思います。プログラミング環境としては、これまでと同じくMacBook ProArduino IDE 2.3.7を動かして使うことにします。

Wi-FiとBluetoothのどちらを先にやるかを考えながらネットで情報を集めていたところ、carterさんの工作室というサイトに「ESP32で『LチカWebサーバ』を作る」というページを見つけました。Wi-Fi経由でのLチカができるWebサーバをDevKitV1にプログラムしておいて、これをWi-Fiを使ってLAN接続して、別の端末からWebブラウザでアクセスするようなイメージです。これならば簡単にできるのではないかと考えて、これを参考にしてWi-Fiでの動作実験をやっていくことにしました。
#他に「ESP32で『LED点滅サーバ』を作る」や「ESP32で『なんちゃってWebサーバ』を作る」というページもありました。手順を追ってやってみたい場合は、参考にされるとよいと思います。

プログラムのポイントとなるのは、Wi-FiでLANに入る設定の仕方とWebブラウザでレスポンスを受け取って、どのように処理するのかといったところではないかと思います。参考にしたプログラムでは、「wifisecret.h」という.hファイルを作っておいて、その中に「SSID(「_SSID」の行)」と「パスワード(「_PASS」の行)」の設定を書き込んでいます。実際には、自分が使っているLAN環境に合わせて設定を書き込む必要があります。その上で、LANに入るためには「IPアドレス」が必要になるのですが、それをメインプログラム内の「IPAddress …」以下の3行で設定しています。一般的には例として示されている設定のままでも大丈夫ではないかと思いますが、こちらも自分が使っているLAN環境に合わせて変更する必要があるかもしれません。
#「リスンポート」は、23番ではなく80番(listenPort=80)で正しいと思います。

次に、別の端末からWebブラウザでアクセスした際に、レスポンスがどのように処理されるのかということですが、Arduino IDEでのプログラムは、「C++」が使われているので、さまざまなWebブラウザで利用されているような「スクリプト言語」などを介さずに、直接「/on」や「/off」を返してLEDをコントロールするような仕組みになっているようです。ここまでで、プログラムの仕組みが読み取れたので、実際にコンパイル&書き込みをやってみます。「ボード:」を「ESP32 Dev Module」に、「ポート:」を「/dev/cu.SLAB_USBtoUART」に設定してから「→(コンパイル&書き込み)」をクリックしました。終わったところで、DevKitV1側には見た目上の変化はありません。MacBook ProでWebブラウザを開いて「http:」でIPアドレスを開くと、しばらく待たされたあと、無事にWebページが表示されてLEDのON/OFFができるようになりました。

※LEDは、何かから外してストックしていたありあわせのものです。(^^;;;

気持ちがよくなって、Wi-FiだけならESP8266(ESP12)系でも動くのではないかと考えて、自宅に在庫があったOSOYOOの「NodeMCU v1.0」でもやってみました。設定などの違いについては、「ArduinoIDEを使ったNodeMCUの入門編」に詳しく書かれていたので、簡単に置き換えることができました。変更したところは以下のとおりです。
#ボードマネージャで、「esp8266」をインストールしておく必要があります。

〈Arduino IDE設定〉

  • 「ボード:」…「esp8266」→「NodeMCU 1.0(ESP-12E Module)」
  • 「ポート:」…「/dev/cu.usbserial-xxxxx」

〈プログラム変更〉

  • 「#include "WiFi.h”」→「#include "ESP8266WiFi.h"」
  • 「#define LED_PIN 12」→「#define LED_PIN 8」

コンパイル中に若干エラーは出たものの、最後までコンパイルされて書き込みも終了しました。しかし、Webブラウザーでアクセスを試みると、「ページを開けません。」とメッセージが出てしまいました。Wi-Fi側のLEDが点滅しているので、つながっているかどうかは別にして、Wi-Fi自体は動いている雰囲気には見えます。今回は、ここまでで手詰まりな感じです。
Qiita@kudo453さんの「WIFI Lチカ ESP8266 NodeMCU1.0(ESP-12E)」というページを見つけました。時間をみつけてやってみたいと思います。

「macOSで「ESP32」を使ってみる」