ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2026年7月26日日曜日

発掘したDigisparkを使ってみる〜古いiMacで使えるか試す

前回の続きです。自室のマイコンボードたちを整理していて、10年くらい前に思いつきで購入していた「Digispark(←GitHub)」という小さなArduino互換機(ATtiny85が載っている)を発掘してしまってLチカ実験をはじめました。これまでは、Linux Mintで動かしている自作PCで動作確認をしてきましたが、うまく動かすことができませんでした。今回は、古いiMacを使うことにします。
#ATtiny85は、旧Atmel(現在はmicrochip社が買収)が開発・製造していたマイコンです。

プログラムに使うArduino IDEは、v2.3.10を使います。以前と同様にdixhomさんの「Digispark(ATTiny85) Arduino開発環境にてLチカ [2024年版]」を参考にして、Arduino IDEの設定をしていきます。Arduino IDEを起動して、「ファイル」メニューから「基本設定…」を開きます。「設定」タグの「追加のボードマネージャのURL:」以下に、

http://drazzy.com/package_drazzy.com_index.json

と入力して、「OK」ボタンをクリックします。ボードマネージャ(窓の左に並んだアイコンをクリック)を開いて「ATTinyCore」を検索します。別のものも出てきますが、「ATTinyCore by Spence Konde」のバージョンを選ぶプルダウンメニューから「1.4.1」を選んでから「インストール」ボタンをクリックします。バージョンの新しいものは、(メンテナンス中なのか?)選んでもエラーが出てインストールができません。これで、無事にインストールが完了しました。

準備ができたら、Arduino IDEの「ツール」メニューから「ボード:」→「ATTinyCore」→「ATtiny85」(Micronucleus/Digispark)」を選択します。次に「ポート:」を選択しようと思ったときに違和感を覚えました。Digisparkをつないだ状態でポートを選択しようとしているのに、Digisparkが認識されていない(「…Bluetooth…」しか選択できない)感じがしました。仕方がないので、「ポート:」には何も選択しないまま、Lチカ実験を進めることにしました。Lチカプログラムは、先程紹介したdixhomさんのものを参考にしました。一度Digisparkを抜いて、「→(コンパイル&書き込み)」ボタンをクリックして、「…60 seconds)」と表示されたところで再びDigisparkを挿し込みます。すると、Linux Mintのときと同じように「書き込み完了」のメッセージが出るのですが、やはり書き込まれている感じがしません。

更にネットで情報を探してみると、「CH34x」のドライバが必要というような情報をちらほら見つけたので、若干眉唾な感じはしたのですがやってみることにします。中国WCHのサイトから、macOS用のCH34xドライバをダウンロードしてインストールします。zipファイルを展開してから、フォルダ内のpkgファイルをダブルクリックしてインストール作業を行いました。

念のためにiMacを再起動して、Arduino IDEを起動してDigisparkを挿し込みます。同じ手順で「ボード:」の設定を「ATtiny85」(Micronucleus/Digispark)」にして、「ポート:」を選択しようとしましたが、USB接続のものは何も表示されません。やはりダメなのかと半分諦めながら、「ポート:」には何も設定せずにLチカプログラムを開きました。一度Digisparkを抜いて、「→(コンパイル&書き込み)」ボタンをクリックして、「…60 seconds)」と表示されたところで再びDigisparkを挿し込みます。すると、これまでと違っていくつかのメッセージが並んだ最後に「Thank you!」まで表示されて、プログラムが書き込まれました。Lチカもタイミングをずらしたプログラムにして何度かやってみましたが、この方法で使えることがわかりました。

実のところ、なぜこれでできるようになるのかということについては、私自身もはっきりとしたことは言えません。そもそも、Digistumpが活動を停止していて公式Webサイトも閉鎖されています。情報が失われているため、今から使いはじめるのは全くおすすめできません。この記事を参考にする場合も、自己責任でお願いします。とは言え、これだけ小さなボードで用途は限られるにしても、コスパもよいので何に使えるか考えてみたいと思います。
#今でも流通しているDigisparkのクローンの中には、粗悪品もあるようなのでご注意を。

2026年7月17日金曜日

発掘したDigisparkを使ってみる

このところArduinoやその互換機を使った動作実験を行うことが多くなっています。そんな中、実験中のものが散乱して来てしまったので、ちょっと整理しておこうと思い立って片付けをはじめました。すると、10年くらい前に思いつきで購入していた「Digispark(←GitHub)」という小さなArduino互換機(ATtiny85が載っている)を発掘してしまったので、片付けが一段落したところでちょっと使ってみることにします。
#ATtiny85は、旧Atmel(現在はmicrochip社が買収)が開発・製造していたマイコンです。

今回は、Linux Mintで動かしている自作PCで動作確認をすることにします。プログラミングには、Arduino IDE v2.3.10を使うことにします。

Arduino IDEでの設定は、Asai Toshiyaさんの「Digispark (ATtiny85) 事始め」を参考にしました。Arduino IDEを起動して、「ファイル」メニューから「基本設定…」を開きます。「設定」タグの「追加のボードマネージャのURL:」以下に、

http://digistump.com/package_digistump_index.json
※後に判明しますが、「404 not Found Error」になります。

と入力しました。既に入力されているURLがある場合には、URLを入力するテキストフィールドの右にあるボタン(複数のURLを入力する窓を開くためのボタン)をクリックすると、2つ以上のURLを入力する(複数のURLを入力する場合は、1つずつ改行して1行に1つ入力する)ことができます。入力が終わって「OK」ボタンをクリックすると、残念なことに「404 Not Found」エラーが出てしまいました。どうやら、Digisparkの開発製造元であるDigistumpが、活動を停止してしまっていて、Webサイトを含めた様々な情報が失われてしまっているようでした。

せっかく始めたのでこのまま諦めるのわけには行かないと考えて、更に新しい情報がないか探してみたところ、dixhomさんの「Digispark(ATTiny85) Arduino開発環境にてLチカ [2024年版]」という記事を見つけました。この中で、Arduino IDEの「基本設定…」に入力する「追加のボードマネージャのURL:」が紹介されていました。URLは、以下のとおりです。

http://drazzy.com/package_drazzy.com_index.json

これを入力し直して、「OK」ボタンをクリックしました。すると、エラーが出なくなったので、ボードマネージャ(窓の左に並んだアイコンをクリック)を開いて「ATTinyCore」を検索します。別のものも出てきますが、「ATTinyCore by Spence Konde」の「インストール」ボタンをクリックしてインストールを試みました。しかし、エラーが出てインストールが止まってしまします。古いバージョンのものならインストールできるかもしれないと考えて、バージョンを選ぶプルダウンメニューから「1.4.1」を選んで「インストール」ボタンをクリックしました。すると、無事にインストールが完了しました。

「ツール」メニューから「ボード:」→「ATTinyCore」→「ATtiny85」(Micronucleus/Digispark)」を選択します。「ポート:」は、唯一表示される「/dev/ttyS0」を選択しておきましたが、これでよいのかわかりません。とりあえず、このまま動作実験を進めることにして、Asai Toshiyaさんの「Digispark (ATtiny85) のオンボード LED を点滅させる」を参考にしてLチカ実験をしてみました。モデルによって、「1」ではなく「0」を使うようですが、はじめは「1」のままでやってみます。一度Digisparkを抜いて、「→(コンパイル&書き込み)」ボタンをクリックしたら、「…60 seconds)」と表示されたところで挿し直します。すると、「書き込み完了」のメッセージが表示されました。しかし、どうもうまく書き込めていない雰囲気だったので、Lチカのタイミングをわかりやすく変更したプログラムにして、もう一度コンパイルと書き込みをやってみました。Digisparkの抜き挿しもして、「書き込み完了」のメッセージも出るのですが、やはりプログラムの変更は反映されません。

Arduino IDEは、1.8.19でもやってみましたが、結果は同じでした。プログラミング環境の問題なのか、ボード自体の問題なのか、それ以外に別の問題があるのか結論を出すのが難しい状況になっています。やっぱりDigistumpからの情報がないのは、どうしても敷居が高くなるのだろうと思いながら、諦めきれないので別の方法も探してみたいと思います。試行錯誤は続きます。

2026年7月9日木曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜自作シールドを本家版のArduino UNOで使ってみる

以前の続きです。これまで、株式会社アクエストが開発している「音声合成LSI(「ATP3011(←データシートPDF)」を使って音声を出すために、Arduino用自作シールドを作成してみたのですが、Arduino UNO R3(互換機)との通信には成功している感じはするのですが、音声が出せずにつまずいている状態です。Arduino互換機の「Seeeduino XIAOSeeed Studio)を使ってATP3011で音声を出して、一つの基板にSeeeduino XIAOとATP3011を載せた音声ボードを作るところまではできているので、このやり方や考え方が通用しないということに苦しめられています。
#この音声合成LSIの詳細は、公式Webサイトの「音声合成LSI「AquesTalk pico LSI」」をご覧ください。

今回の実験用に本家版のArduino UNO R3とArduino UNO R4 minima、その互換機のControl Board V5Freenove)を使うことにします。Arduinoの互換機については、これまでにも様々なものを購入して使ってきました。多くの場合、本家のものと比べても遜色なく使えたので、あまり意識して使い分けていませんでした。本家版のArduino UNOでやってみて、結果が大きく変わるほどの違いがあるのかやってみないとわかりませんが、動かない原因を究明するためにやってみます。

自作シールドで使っているArduino用ユニバーサルシールド基板は、サンハヤトの「UB-ARD03」です。VccとGNDは、ユニバーサルシールド基板の左(GND)と右(Vcc)の各1列に接続されているので、電源の取り回しが楽にできるような設計になっています。また、misawa @ELIXIRさんの「1000円で作る日本語音声合成装置」を参考にして、回路を組んでArduino IDEのプログラムを作りました。もう一つ、小さなブレッドボードを載せた自作シールドも使ってみます。

音声出力は、YAZAWATVR35WH(アンプ内蔵スピーカー)と普段使いのXINYI Sini Audio(XY-C50LYouTubeの動画)にDAISOの300円スピーカーを改造したスピーカーをつないだ環境でも確認しています。Arduino IDEは、macOS版v2.3.10を古いiMacで動かしてコンパイルと書き込み作業を行いました。動作確認の結果は以下のとおりです。

〈Arduino UNO R3〉

自作シールドでは、互換機でやったときの状況と同様に、数値を読み上げているはずのタイミングで定期的にノイズが発生している(通信はできている)のですが、肝心な「音声」としての出力ができませんでした。ブレッドボードシールドでも同じような結果になったので、公式のデータシートで示されている「基本回路」を参考にして回路を組み直してもやってみましたが、アンプ手前で音量が落ちますが、結果は全く同じでした。

〈Arduino UNO R4 minima〉

自作シールドでは、R3のときと同様に、数値を読み上げているはずのタイミングで定期的にノイズが発生している(通信はできている)のですが、肝心な「音声」としての出力ができませんでした。ブレッドボードシールドでもUNO R3のときと全く同じで、回路を組み直しても定期的なノイズしか聴こえませんでした。

〈Freenove control board V5 (Rev4) MINI〉

自作シールドでは、残念ながらこれまでの2つと同様に、数値を読み上げているはずのタイミングで定期的にノイズが発生している(通信はできている)のですが、肝心な「音声」としての出力ができませんでした。ブレッドボードシールドでもやってみましたが、やはりこれまでの2つと同じで、定期的なノイズしか聴こえませんでした。

困ったもので、お手上げ状態でした。ここまで来ると、もう一度基本に立ち戻って、1からやり直してみるのが良さそうな気がします。サンハヤトのユニバーサルシールド基板に原因があるのかもしれませんし、ブレッドボードでやってもうまくいかないのならもっと根本的な原因があるのかもしれません。状況を整理してから、再チャレンジしてみたいと思います。

※過去記事は、「音声合成LSI(ATP3011とATP3012)を使ってみる」(←リンク)からご覧ください。

2026年7月1日水曜日

UIAPduino Pro Microを使ってみる

私の活動範囲の中で、ちょっと話題になっている「UIAPduino Pro Micro」マイコンボードを購入したので、試用してみることにします。私が購入したのは、「CH32V003(中国WCH社製32bit/RISC-Vマイコン)」を載せたv1.4のボードで、Switch Scienceさんで販売されていたものを購入しました。Arduino互換マイコンボードである「Pro Micro(←有名なSparkFun社製)」をかなりリーズナブルにした製品で、UIAPさんが開発・製造している製品です。購入する前から、「macOSで動作させるには、煩雑な作業が必要である」ことを仄聞していたので、今回は、Linux Mintで動かしている自作PCで動作確認をすることにします。
#公式サイトでも、「Macでは、動作しますが煩雑です。」と書かれています。

今回購入したUIAPduino Pro Microにはピンヘッダが付いていなかったので、今後の活用を考えてピンヘッダのはんだ付けをしておきました。この状態で、先ずはLチカ実験を優先することにして、Arduino IDEでプログラムを書き込むための準備をしていきます。
#今回は、公式サイト以外に創造技術実習さんの「UIAPduino(Lチカ)」を参考にしました。

Arduino IDE(2.3.6)を起動して、「ファイル」メニューから「基本設定…」をクリックします。すると、基本設定の窓が開くので、「設定」タグの「追加のボードマネージャのURL:」以下に、

https://github.com/YuukiUmeta-UIAP/board_manager_files/raw/main/package_uiap.jp_index.json

と入力します。既に入力されているURLがある場合には、URLを入力するテキストフィールドの右にあるボタン(複数のURLを入力する窓を開くためのボタン)をクリックすると、2つ以上のURLを入力する(複数のURLを入力する場合は、1つずつ改行して1行に1つ入力する)ことができます。入力が終わって「OK」ボタンをクリックすると、ボードマネージャ(窓の左に並んだアイコンをクリック)で「UIAPduino by Yuuki」を検索してインストールすることができるようになります。インストールが終わったら、一度Arduino IDEを終了して、「ターミナル(今回は、「GNOME端末」を使用)」を開いて以下のコマンドを1行ずつ実行します。

sudo wget -O /etc/udev/rules.d/99-minichlink-uiap.rules https://raw.githubusercontent.com/YuukiUmeta-UIAP/ch32fun/3bfa603f11d493710f2a811b5a2dfad905d9425c/minichlink/99-minichlink-uiap.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

これで準備が整ったので、UIAPduinoをUSBケーブルで自作PCにつなぎます。この時、ボード上の「RST(リセット)」ボタンを押しながらつないで、「PWR(パワー)」LEDが点灯したところでボタンを離します。次に、Arduino IDEを起動して、「ツール」メニューから「ボード:」→「UIAPduino」→「Pro Micro CH32V003」を選択します。再び「ツール」メニューから、今度は「ポート:」→「/dev/ttyS0」を選択(他の選択肢がなかった)しておきました。これで接続できているはずです。
#UIAPduinoには、USB接続のためのICなどは載っておらず、CH32V003でソフトウエア的にUSB接続を実現しているようです。

Arduino IDEでの「Lチカ」プログラム作成は、先程紹介した「UIAPduino(Lチカ)」を参考にして作業をしました。(「digitalWrite」の「W」は大文字です)プログラムを書き終えたら、一度保存しておきます。「✓(コンパイル)」ボタンをクリックして、プログラムに誤りがないことを確認してから「→(コンパイル&書き込み)」ボタンをクリックすると、無事に書き込みまで完了しました。「RST」ボタンを押さないと動き出さないところが少々面倒ですが、コンパイルと書き込みが終わったところで「RST」ボタンを押すと、ボード上のLEDが点滅しはじめてLチカ動作実験に成功しました。途中でいろいろとつまずくことはありましたが、udevルールの追加と再読み込みの作業が必須だということがポイントのようです。これでまた一つ使えるマイコンボードが増えたので、この安さと小ささを活かした活用方法を考えていきたいと思います。

2026年6月7日日曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜Arduino(互換機を含む)用のシールドを試作する

前回の続きです。これまで、株式会社アクエストが開発している「音声合成LSI(「ATP3011(←データシートPDF)」と「ATP3012(←データシートPDF)」)」を試用してきました。前回は、ATP3011からも音声を出すことができて、仮称「ATP301x音声ボード」まで作ることができました。(ATP3012系で音声が出ない問題は解決していませんが…)この勢いの乗って、今回は「Arduino ATP301x音声シールド」を作っていきたいと思います。
#この音声合成LSIの詳細は、公式Webサイトの「音声合成LSI「AquesTalk pico LSI」」をご覧ください。

前回までに、Arduino互換機の「Seeeduino XIAOSeeed Studio)」を使ってATP3011で音声を出して、一つの基板にSeeeduino XIAOとATP3011を載せた音声ボードを作るところまでできました。この知見を活かして、せっかくなら各種Arduinoに載せられるようなシールドを作ってしまおうと考えました。

Arduinoのシールドについては、フィジカル・コンピューティングを始めた初期の頃からいろいろとやっていたのですが、このところすっかりご無沙汰状態でした。シールドを載せるArduinoは、Arduino UNO R3(互換機)を選びました。そもそも、前回から参考にしているmisawa @ELIXIRさんの「1000円で作る日本語音声合成装置」には、Arudino UNOでの使用例が示されています。この回路をシールドにするだけなので、それほど難しいことはないと思って作業を始めました。

自宅に在庫があったArduino用ユニバーサルシールド基板は、サンハヤトの「UB-ARD03」でした。Arduinoの独特なピン配置を一般的な2.54mmピッチに変換しながら、ユニバーサル基板部分には様々な電子部品を載せられるようになっています。ただし、ピンの変換をした内側の1列は、それぞれVCCとGNDになっているので、純粋にユニバーサル基板として使えるところは少し狭くなっています。しかも、ゼロプレッシャーICソケットを載せるので、使えるところは限られてしまいます。表裏を何度も確認しながら、狭いところに配線を取り回してどうにか回路を組むことができました。

できあがった自作シールドをArduino UNOに載せて動作確認をしてみましたが、うまく動いてくれません。はじめは、RX/TXの配線あたりに原因があるのではないかと考えて、被覆付きのケーブルを使って最短距離でつないでみましたが、出力されているはずの「音声」を聞き取れるようにはなりませんでした。テスターをあてて導通を確認したり、デジタル顕微鏡ではんだブリッジやハンダ不良がないか確認をしてみました。ところどころで導通が不安定に感じるところはありましたが、概ね導通に問題はなく、原因を特定することができませんでした。

半分ヤケ○ソになりながら、かつてブレッドボードを載せたArduinoシールドがあったことを思い出して、ユニバーサルシールド基板に小さなブレッドボードを載せてやってみることにしました。先に作った自作シールドのときと同じように、Arduino UNOとATP3011との間で通信が行われているであろう雰囲気(定期的にパルスのようなノイズが出る)は感じられるのですが、残念ながら音声を出すことができませんでした。

ATP3011のデータシートには、もう少し複雑な回路例が示されているので、こちらを参考にしてチャレンジしてみるのもよいかもしれません。そもそも今回の動作確認では、本家版のArduino UNO R3ではなくその互換機を使っていますが、本家版のArduino UNO R3だったらどうなるのか、Arduino UNO R4でやってみたら…と試行錯誤は続きそうです。

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

2026年6月1日月曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜Seeeduino XIAO(Arduino互換機)でコントロールしてみる

以前の続きです。株式会社アクエストが開発している「音声合成LSI(「ATP3011(←データシートPDF)」と「ATP3012」(←データシートPDF)」)」を試用しているのですが、ATP3011からは音声を出すことができていませんでした。今回は、「ATP3011を使って音声を出す」ことを目標にして、動作実験を進めていきたいと思います。
#この音声合成LSIの詳細は、公式Webサイトの「音声合成LSI「AquesTalk pico LSI」」をご覧ください。

これまでは、Arduino IDEなどを使ったシリアル通信で音声を出す方法で動作実験をしてきましたが、Arduinoの互換機や自作互換マイコンボードなどにATP3011やATP3012を載せ替えて動作実験をすると、ATP3012系のLSIでは音声が出せるものの、ATP3011系のLSIでは音声が出せていませんでした。別の方法として、Arduino(互換機含む)にプログラムして、これらの音声合成LSIをつないでコントロールする方法があるので、今回はそちらで試してみることにします。
#Arduinoのプログラム方法は、misawa @ELIXIRさんの「1000円で作る日本語音声合成装置」を参考にしました。

今回選んだArudino互換機は、Seeed Studioの「Seeeduino XIAO」です。自宅に在庫があったのと、小さいので回路設計が簡単にできて動作実験環境が楽に構築できると思ったからでした。Seeeduino XIAOの設定等については、公式サイトにガイドがありましたので参考にしてください。

Arduino IDE(2.3.8)を起動して、「ファイル」メニューから「基本設定…」をクリックします。すると、基本設定の窓が開くので、「設定」タグの「追加のボードマネージャのURL:」以下に、

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

と入力します。既に入力されているURLがある場合には、URLを入力するテキストフィールドの右にあるボタン(複数のURLを入力する窓を開くためのボタン)をクリックすると、2つ以上のURL(1行に1つ)を入力することができるようになります。入力が終わって「OK」ボタンをクリックすると、ボードマネージャで「Seeed SAMD Boards」を検索してインストールすることができました。(作業時のバージョンは、1.8.5でした)インストールが終わったら、「ツール」メニューから「ボード:」→「Seeeduino SAMD Board」→「Seeeduino XIAO」を選択します。
#Arduino IDEの動作環境は、いつものMacBook Proを使用しています。

ここでSeeeduino XIAOをUSB-CケーブルでMacBook Proにつなぎます。すると、「ツール」メニューの「ポート:」から、「/dev.cu.usbmodem******(Seeeduino XIAO)」を選ぶことができるようになるので、これを選んで準備完了です。動作確認のため、「ファイル」メニューから「スケッチ例」→「01.Basics」→「Blink」を開いて「→(コンパイル&書き込み)」ボタンをクリックすると、問題なくコンパイルと書き込みが完了してLチカ動作確認ができました。

次に、先程紹介した、「1000円で…」のWebページで紹介されていたサンプルスケッチを参考にして、Arduino IDEでプログラムをしていきます。変更したところは、RXとTXのピンを「2」と「3」に設定しました。そもそもSeeeduino XIAOのRX/TXの入出力ピンは、「6」と「7」に割り振られています。Arduino UNOの場合は、「0」と「1」に割り振られていて、サンプルスケッチでは、「12」と「13」にRXとTXを設定していました。サンプルスケッチでRX/TXの入出力ピンを避けていることを考慮して、Seeeduino XIAOで他の役割をあまり与えられていない「2」と「3」に設定しました。(「6」と「7」に設定しても、問題はありませんでした)プログラムを書き終えたら「→(コンパイル&書き込み)」ボタンをクリックしてプログラムを書き込むと、アンプ内蔵スピーカーから音声が出ました。

今回は、一連の動作実験をブレッドボード上で行っていましたが、この環境を残しておきたいと考えて、ユニバーサル基板とピンソケット、ゼロプレッシャーICソケットなどを使って、仮称「ATP301x音声ボード」を作ってみました。

切り替えスイッチを付けてATP3011とATP3012の両方に対応できるようにしようと思いましたが、今度はATP3012の方が動いてくれませんでした。orz(しばらくは、試行錯誤が続くかも…)今回作った自作ボードは、スピーカーの中に組み込んでも使える大きさだし、教材としても使えてしまうのではないかと妄想がふくらみます。(PCB設計にも興味が向いてしまうところですが…)

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

2026年5月1日金曜日

micro:bitのAボタンとBボタンを大きくする試み

特別支援学級で、「micro:bitで楽器作り」の授業をやったことをきっかけに、合理的な配慮の一環として、小さなAボタンとBボタンではうまく操作できない人のために、大きなAボタンとBボタンにするにはどうしたらよいかと考えていました。そもそも、micro:bitのAボタンとBボタンは、一般的なタクティルスイッチがそのまま載っているだけなので、小さくて押しにくいという課題があります。ある程度使い慣れてくれば使えないとまでは言えないレベルではあるのですが、手先の動かしが苦手な人にとっては、それだけでハードルが高くなってしまいます。micro:bitが教育用途で広く使われることを想定して開発されていることを考えれば、汎用性のある一般的な電子部品で作ることにより、コスト削減につながっているであろうことは容易に想像がつきますが、使いやすさとコストのトレード・オフな関係は、許容しなければならないことも多いので、使う側でどうにかできないものかと考えてみました。

すぐに思いついた方法として、micro:bitの基板から、AボタンとBボタンのタクティルスイッチを取り外して、使いやすいスイッチに載せ替えてしまえばよいのではないかと思いました。しかしそうなると、配慮が必要な状態が判明するたびに、micro:bitそのものを改造する必要が生じてしまいます。改造micro:bitを作り続けるのは、どう考えても合理的かつ効率的とは思えません。

そこで、micro:bit自体はそのままで、アタッチメントのようなものを取り付けて、必要な機能を付加するようなことはできないかと考えました。micro:bitには、さまざまな拡張モジュールやブレイクアウトボードと呼ばれるものが開発・販売されていますが、こうしたものを参考にしながらAボタンとBボタンだけを大きなものにするような拡張モジュールを作ることを考えて、試作してみることにしました。今回準備したパーツは、以下のとおりです。

〈使用パーツリスト〉

  • micro:bit用カードエッジコネクタ
  • ユニバーサル基板(ブレッドボードを模したもの)
  • 大きなタクティルスイッチ*2
  • 整流ダイオード*2(1N4002)

まずは、micro:bitのAボタンとBボタンは、どこの端子につながっているのかを確かめます。micro:bitのピンアウトの情報を確認すると、AボタンはP5に、BボタンはP11につながっていることがわかりました。あとは、これらの端子を大きなタクティルスイッチとつなぐようにして、反対側をGNDに落とすようにすれば大きなボタンで操作ができるようになるはずです。簡易的につないで動作確認をしてみたところ、問題なく操作することがわかりました。あとは、モジュール化するだけです。
#「Edge Connector & micro:bit pinout」では、新旧micro:bitのピンアウトが確認できます。

今回使ったカードエッジコネクタのピン配置は、ユニバーサル基板よりもピッチが狭い(半分の幅になっている)ので、そのままではユニバーサル基板に取り付けられません。できれば、カードエッジコネクタのピンを間引いて、うまくユニバーサル基板にはめてしまいたいところです。そこで、micro:bitの各ピンとカードエッジコネクタの各ピンがどのように対応しているのかを確認してみました。micro:bitのピンを見ると、広いピン(「0」「1」「2」「3V」「GND」)1つ分の幅は、狭いピン4つ分の幅と同じになっていて、数えていくとmicro:bitのP5のピンとP11のピンにつながるカードエッジコネクタのピンは、交互に残しながらカードエッジコネクタのピンを間引く(つまり、ユニバーサル基板のピッチに合うようにする)ことで、両方とも使える状態にすることができがそうだということがわかりました。


※ブレッドボードユニバーサル基板を裏表逆に使っているのは、回路としてどのようにつながっているのかわかりやすくしたかったためです。

地道な作業ではありましたが、どうにか加工を終えてユニバーサル基板にカードエッジコネクタを載せることができました。横幅はうまくユニバーサル基板のピッチ似合わせることができましたが、縦の幅は少し狭かったので、無理やり広げて挿し込みました。配線も済ませて動作確認をしてみると、無事にAボタンとBボタンとして機能してくれました。これで、大きなAボタンとBボタンが必要になったときには、この拡張モジュールを使えばよいことになります。作り方も簡単だし、安価な部品しか使っていないので、材料さえ揃えられれば誰にでも作れると思います。(本音としては、カードエッジコネクタ付きのユニバーサル基板があるとありがたいところですが…)
#よろしければ、このBlogのmicro:bitに関する過去記事もご覧ください。

2026年3月1日日曜日

M5Stamp PICOを使ってみる

これまで、このBlogでもたびたびM5Stack関係のことを話題にしてきましたが、今回は、「M5Stamp PICO」を入手したので、その使用感などについてまとめておきたいと思います。今回試用するM5Stamp PICOは、自分で購入したのではなく、CQ出版さんからいただいたものです。(案件ではありません。念の為)こんな活動をしていると、お世話になることの多いCQ出版さんが刊行している「トラ技Jr.」の懸賞付きアンケートに答えていたのですが、当選の報とともにSwitch Scienceさんご提供の「M5Stamp PICO DIY kit」が送られてきたのでした。
#CQ出版さんからは、以前にもTHERMOSのマグカップ(「トランジスタ技術」のロゴ入り)もいただいているし、別の懸賞にも当たったことがあったように記憶しているので、大変お世話になっております。m(_ _)m

「M5Stamp PICO DIY Kit」は、はじめに組み立て作業をする必要があります。このKitには、ピンヘッダとピンソケットが付属していましたが、ピンソケットの方をはんだ付けすることにしました。付属していた六角レンチを使ってカバーを取り外し、ピンソケットをはんだ付けをしてからカバーをもとに戻しました。やることはこれだけ。M5Stamp PICOは、USBシリアル変換が内蔵されていないので、外付けする必要があります。付属していた小さなUSBシリアル変換ボードを接続して、プログラムを書き込むという使い方が一般的だと思います。

ここまで準備ができたので、M5Stamp PICOのプログラム方法について確認します。M5Stackシリーズの公式Webサイトでは、UiFlow 1UiFlow 2Arduino IDEの3つのプログラミングツールが紹介されています。UiFlow 1/UiFlow 2の使用感についても興味があるので、やってみたい気持ちは多々あるのですが、今回も環境が整っていて使い慣れているArduino IDEで試用するところからはじめてみたいと思います。
#動作確認には、今回もMacBook Proを使います。

公式Webサイトの「クイックスタート」で紹介されている「Arduino IDE」→「Stamp-Pico Arduino プログラムのコンパイルとアップロード」を参考にしながら動作確認作業を進めます。Arduino IDEのバージョンは、2.3.7を使います。ボードマネージャには、「esp32」(2.0.18)がインストール済みなので、「ツール」メニューから、「ボード:」→「esp32」→「M5Stamp-Pico」を選択します。次に、M5Stamp PICO+USBシリアル変換ボードをMacBook ProにUSB-Cケーブルで接続すると、「ポート:」から「/dev/cu.usbserial-***********」が選択できるようになるので、これを選択すれば準備完了です。
#ボードマネージャに「esp32」をインストールしていない場合は、先にインストールしておく必要があります。

先程の「クイックスタート」→「Arduino IDE」のページで紹介されているサンプルプログラムを使って動作確認をしてみます。説明を読んでいくと、このプログラムを動かすためには「FastLED」ライブラリーが必要と書かれていたので、Arduino IDEの「ライブラリーマネージャー」から「FastLED」(3.10.3)ライブラリーをインストールしました。その上で、サンプルプログラムをコピー(「コピー(マーク)」をクリックすると簡単にコピーが可能)してArduino IDEに貼り付けて、「→(コンパイル&書き込み)」ボタンをクリックしてコンパイルと書き込み作業をします。しばらく待つと、書き込みが終了してM5Stamp PICOのRGB LEDが点灯して、プログラムどおりに色が変わっていくことが確認できました。

M5Stamp PICOにはバッテリーが付属していないので、USBシリアル変換ボードを使わないで動作させたい場合には、Groveポート(白)から給電する方法が現実的ではないかと思います。Google先生で検索してもあまりフィットする情報が得られないので、Groveポートに対応したコネクタを使って、5Vを供給するバッテリーをつないで自作してしまうのがよいのかもしれません。バッテリー絡みの自作は、発火などのリスクもあるので、ちょっと勉強してからの方が良いかもしれません。

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」を使ってみる」

2026年1月24日土曜日

macOSで「ESP32」を使ってみる〜ESP32 DevKitV1を使えるようにする

以前の続きです。Wi-FiやBluetoothに対応したマイコンとして有名なESPRESSIF Systems社の「ESP32」シリーズを使ってみるという話です。前回は、私が持っている「ESP32」シリーズが載っているのマイコンボードを整理してみましたが、今回は、実際に使えるように環境を整えていきたいと思います。プログラミング環境としては、MacBook ProArduino IDE 2.3.7を動かして使うことにします。

まず大前提として、ESP32を載せたマイコンボードを使うには、USBからシリアルへ変換するIC(「CP210x」や「CH340」が使われていることが多いようです)のドライバが必要です。普通に使っていれば(自動的に?)インストールされているようですが、もしうまく接続できない場合には、USBシリアル変換ICのドライバが上手くインストールされていないのかもしれません。「CP210x」は、Silicon Laboratories社の製品で、「CP210x USB to UART Bridge VCP Drivers」→「Download and Install VCP Drivers」から必要なドライバをダウンロードして使うことができます。また、「CH340」は、Nanjing Qinheng Microelectronics社の製品で、「CH341SER.ZIP」から必要なドライバをダウンロードして使ってください。
#マイコンボードに載っているUSBシリアル変換ICは、ボードごとに違うことがあるので、ご自身でのご確認をお願いします。

手始めに、前回紹介したESP32搭載のマイコンボードの中から、「ESP32 DevKitV1(以下「DevKitV1」と略記)」を使えるようにしていきます。いわゆる「Lチカ」まで動作確認して、うまく行ったらWi-FiやBluetoothを使った動作確認までやっていきたいと思います。Arduino IDEには、「esp32」ボードマネージャがインストール済みです。
#ボードマネージャのインストール方法は、拙Blogの過去記事を参照してください。

DevKitV1をmicroUSBケーブルでMacBook ProにつないでからArduino IDEを起動します。「ツール」メニューから「ボード:」→「esp32」→「ESP32 Dev Module」をクリックして選択します。USBシリアルポートの方は、同じく「ツール」メニューから「ポート:」を選択したいところなのですが、DevKitV1を接続すると「/dev/cu.usbserial-xxxx」と「/dev/cu.SLAB_USBtoUART」の2つのポートが出現するので、どちらを選択したらよいかわかりません。そこで、USBシリアル変換チップの刻印を確認しました。すると「CP210」と刻印されていたので、「/dev/cu.SLAB_USBtoUART」の方を選ぶことにしました。
Google先生に尋ねたところ、古い記事ですが、「ArduinoIDE インストールして ESP32 使って LED 光らせるまで」と「macOSでESP32-dev-moduleを実験する。」の2つのページを見つけたので、部分的に使えそうなところを参考にしながら動作確認をしていきました。

接続が終わったら、「Blink」ができるかやってみます。「ファイル」メニューから「スケッチ例」→「01.Basics」→「Blink」とたどってLチカプログラムを開きます。そのまま「→(コンパイル&書き込み)」ボタンをクリックしても、コンパイルに失敗をしてしまってうまく動きません。そこで、先程紹介したWebサイトの情報から、プログラム内の「LED_BUILTIN」と記述されているところを、すべて「2」に変更してコンパイル&書き込みをやってみました。すると無事にコンパイルが通って書き込みが完了しました。プログラムの通りオンボードのLEDが点滅を繰り返して、Lチカ動作の確認をすることができました。

この勢い(?)で、ワイヤレスでコントロールするにはどうしたらよいか調べてみます。ESP32は、Wi-FiとBluetoothが使えます。どちらを使うかは、目的に応じて決めればよいだろうと思いますが、動作確認をするにあたって、それぞれの使い方を確認しておいた方がよいだろうと思って、できるだけわかりやすく簡単にできる方法がないか調べてみました。Wi-Fiの場合は、ESP32で簡易なWebサーバを作って、LANなどを介して別の端末からアクセスするという方法が簡単そうです。Bluetoothの場合は、ESP32にBluetoothの設定をプログラムして、Bluetoothに対応した別の端末からBLEアプリを使ってアクセスする方法がよさそうです。やり方を調べながら動作確認の参考になりそうなサイトもいくつか見つけたので、参考にしながら試してみようと思います。…続く。

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

2026年1月3日土曜日

macOSで「ESP32」を使ってみる〜まずは情報の整理から

よんどころない事情により、「ESP32」を使ってフィジカル・コンピューティングに取り組んでみることになりました。「そんなことは、今までもやっていただろう?」というのは、ごもっともな話。このBlogでも度々話題にしてきたM5StackシリーズのCore Basicにも、ArduinoUNO R4 WiFiにもESP32が載っています。

ESP32は、中国のESPRESSIF Systems社が開発製造している無線通信(Wi-FiやBluetooth)に対応したマイコンで、小型のマイコンボードやマイコンモジュールのようなデバイスで使われることが多いようです。安価であることとArduino IDEでもプログラミングができることで、フィジカル・コンピューティングデバイスとして手軽に使えるメリットがあります。

ちょっとだけ歴史(?)をたどると、ESP32を使うようになる以前に「ESP-WROOM-02(ESP8266←Wi-Fiのみ対応でBluetoothは非対応)」の頃から購入して、いろいろと試してきました。このBlogでもMKZ4ワイルドミニ四駆を動かしたときにも使いました。

ESP32のプログラミングをはじめるにあたって、自宅にある「ESP32シリーズ…データシート(←PDF)」のマイコンを載せたマイコンボードで、Arduino(互換機を含む)やM5Stack以外のものを整理してみました。以下、左側に「ボード名(シルク印刷などを頼りにした)」を示して、右側に調べてわかった情報についてまとめておきます。

ESP32-DevKitV1
(公式のDevKitsの中にはない)
Amazonで購入
Aideepen
ESP32 CP2102 Wireless WiFi Bluetooth Development Board Micro USB Power Module Dual Core ESP 32 ESP 32S ESP 32 Similar ESP8266
※サイト内の検索窓で「ESP32」を検索して見つけました。シルク印刷の「DEVKITV1」では出てきません。
【刻印】ESP-WROOM-32…データシートは見つけられませんでした。
ESP32-CAM
(同名のボードが複数販売されている)
※Amazonで購入
DM社(詳細不明)
Ai-Thinker社製品の模造品か。Ai社なら技適は取得済み(刻印なしなので使用注意)
【刻印】ESP32-S…データシート(←PDF)
→技適「ESP32-S
Maixduino
(マイコンボード+小型液晶パネル)
※Amazonで購入
Sipeed
MaixDuino Development Board
【刻印】ESP32-WROOM-32データシート(←PDF)
XIAO ESP32-S3
(切手サイズのマイコンボード)
マルツで購入
Seeed Studio
Seeed Studio XIAO ESP32S3 シリーズの入門ガイド
【刻印】ESP32-S3データシート(←PDF)
XIAO ESP32-C3
(切手サイズのマイコンボード)
※マルツで購入
Seeed Studio社
Seeed Studio XIAO ESP32C3の使用開始
【刻印】ESP32-C3データシート(←PDF)
XIAO ESP32-C6
(切手サイズのマイコンボード)
※マルツで購入
Seeed Studio社
Seeed Studio XIAO ESP32C6の使用開始
【刻印】ESP32-C6データシート(←PDF)

私が所有しているESP32系のマイコンボードを整理すると、こんな感じになりました。長くなってきたので続きは次回以降にしますが、今後は動作環境を整えて動作確認などをしていきたいと思います。

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

2025年11月24日月曜日

M5Stackを使ってみる〜UART接続のUnit-MIDIでドラムマシーンを動かす

以前の続きです。M5StackCORE BASIC V2.7にPORT.C(UART)を追加する「M5StackBasicLite@akita11さん設計・製作)」というベースボードをつないで(はさんで)「UNIT-MIDI(以下「MIDI」)」を動かすことができるか動作確認をしました。「MIDI」には、仏dream社のSAM2695が内蔵されていて、GitHubのサイト内にあった、「M5-SAM2695」のページからダウンロードした「piano.ino(使用時は、ファイル名を「piano_midi.ino」に変更)」を使って、Behringerの「Pro VS MINI」を鳴らすことに成功しました。

今回は、同じ「MIDI」を使って、ドラムマシーン(BehringerのRD-6)を鳴らすことができるかやってみたいと思います。GitHubの「M5-SAM2695」サイトから「drum.ino」をダウンロードして、名前を「durm_midi.ino」に変更しておきます。(理由は、冒頭にリンクした記事を参照してください)これをLinux Mint上のArduino IDE(2.3.6)で開いて、コードを確認します。すると、「piano_midi.ino」のときと同じように「M5_SAM2695.h」を使うようなので、前回使ったものと同じファイルを「drum_midi.ino」を入れているフォルダ内にコピーしておきました。この状態で、Core BasicをUSB-Cケーブルでつないで「ボード」と「ポート」の設定を「M5Stack-Core-ESP32」に合わせてから「→(コンパイル&書き込み)」ボタンをクリックすると、無事にプログラムが書き込まれました。
#例によってYAZAWATVR35WH(アンプ内蔵スピーカー)につないでdrumのプログラムがインストールされていることを確認しました。

この状態で、RD-6とCore BasicをMIDIケーブルでつないでドラムマシーンとして鳴るか確認します。つないだだけでCore Basicを起動すると、「MIDI」には通電するもののRD-6をコントロールすることができませんでした。MIDIのチャンネルが合っていない可能性があるので、RD-6側のMIDI設定を確認することにします。「FUNCTION」 ボタンを押しながら、「PATTERN GROUP」 ボタンを押すと、MIDIチャンネルの設定が変更できるようになります。デフォルトでは、MIDI INもMIDI OUT/THRUもチャンネル「1」になっています。「PATTERN GROUP」 の「Ⅰ」でMIDI OUT/THRUのチャンネルを、「Ⅱ」でMIDI INのチャンネルを設定することができます。「FUNCTION」 ボタンを押しながら、「PATTERN GROUP」 ボタンを2回押すと「Ⅱ(MIDI IN)」の設定ができるようになるので、「10」ボタンを押してチャンネル「10」に変更します。

再びMIDIケーブルで「MIDI」とRD-6をつないでCore Basicの電源を入れると、RD-6が鳴ってくれました。\(^o^)/注意点としては、「MIDI」の「I/O BYPASS」と「SEPARATE」のスイッチを「SEPARATE」側にしておく必要があります。続けて、TRS MIDIケーブルでも鳴るのかやってみましたが、こちらも問題なくRD-6を鳴らすことができました。「piano_midi.ino」でも同じことが言えるかもしれませんが、ループ再生するようなメロディやリズムをプログラムしたものをCore Basicに入れて、電子楽器をループで鳴らしておいて、そこに生の演奏を重ねるような使い方もできるかなと思いました。

余談ではありますが、今回使ったBehringerのRD-6やTD-3、このBlogでも度々登場しているRolandのPC-300(MIDiキーボード)など、電子楽器(中でもエフェクターが多いかな?)に使われるACアダプターが、「センターマイナス」が多いのが気になっていました。一般的には、「センタープラス」のものが多い気がしますが、同じBehringerでもSWING(CV/Gate&MIDIキーボード)は「センタープラス」ですし、KORGのvolcaシリーズも「センタープラス」です。手近なところで、RolandのSC-55mkII(←取説のPDF)とKORGのX5DR(←取説のダウンロードサイト)は「センターマイナス」で、メーカーでも統一されているとは限りません。理由を調べていて、「エフェクター電源はなぜセンターマイナス仕様なのか」という記事を見つけました。ご参考まで。

M5Stackを使ってみる

2025年11月8日土曜日

M5Stackを使ってみる〜CORE BASICでUART接続のUnit-MIDIを使ってみる

以前の続きです。前回では、M5StackのM5Stack CORE BASIC V2.7にPORT.C(UART)を追加する「M5StackBasicLite@akita11さん設計・製作)」というベースボードを使って、「UNIT-SYNTH(以下「SYNTH」)」を動かすことに成功しました。今回は、「UNIT-MIDI(以下「MIDI」)」が使えるか動作確認をしていきたいと思います。

「SYNTH」も「MIDI」も同じく仏dream社のSAM2695を内蔵したシンセサイザーユニットで、Arduino IDEのサンプルコード(「drum」と「piano」)も同じのものが使えるようです。Arduino IDEのコード(プログラム)をコンパイルして書き込むのは、いつものLinux Mintで動かしている自作PCを使います。

前回の動作確認で「drum」のプログラムを入れていたので、「MIDI」につなぎ替えて「MIDI」のAUDIO出力から音が出るか確認します。(「SYNTH」にはスピーカーが内蔵されていますが、「MIDI」には付いていません)これも定番になっていますが、YAZAWATVR35WH(アンプ内蔵スピーカー)につないで音が出ることを確認できました。少し歪んで聞こえたので、プリアンプ(ヘッドホンアンプ)をはさむと良いかもしれないと思いました。音を出すことに成功したので、この状態で何も手を加えずにBehringerRD-6(アナログドラムマシーン)にMIDIケーブルでつないで音が出るかやってみました。当然かも知れませんが、何の反応もありませんでした。

そもそも、これまで使っていた「drum」や「piano」のコードには、MIDIの設定らしき項目がなく、Unit-MIDIでMIDIをコントロールできるサンプルコードはないものかと探したところ、GitHubのサイト内に、「M5-SAM2695」のページを見つけました。この中に入っているサンプルコードを使えば、M5Stack Core Basicから「MIDI」を動かせるのではないかと考えて、ダウンロードしてみました。以下備忘を兼ねて、ダウンロードしたサンプルコードをリスト形式で記載しておきます。

※これ以外に、「M5-SAM2695/src/」内の「M5_SAM2695.h」が必要なようです。

この「drum.ino」と「piano.ino」は、「SYNTH」の動作確認で使った「drum.ino」「piano.ino」と同じ名前になっていますが、コードの中身が違います。フォルダ名も同じなので、その違いに気づきにくいかもしれませんが、コードの中身をよく見ると「MIDI」用の設定が追加されていることがわかりました。紛らわしいので、それぞれ「drum_midi.ino」「piano_midi.ino」と名前を変更して使うことにしました。

先程は、「drum.ino」のコードを使って動作確認を試みましたが、今度は「piano_midi.ino」のコードを使って動作確認をしてみることにします。「piano_midi.ino」を開いてコンパイルしようとすると、「M5_SAM2695.h」が見つからないと言われてコンパイルに失敗するので、「src」の中に入っていた「M5_SAM2695.h」をダウンロードして、「piano_midi.ino」ファイルと同じフォルダ内にコピーしてから「→(コンパイル&書き込み)」をクリックしてみました。すると、エラーを出さずにコンパイルが成功して、Core Basicへの書き込みもできました。
#Core BasicとArduino IDEとの接続の設定(「ボード」と「ポート」)は、前回までの記事を参考にしてください。

この状態で、Unit-MIDIにアンプ内蔵スピーカーをつなぐと、プログラムしたとおりに音が鳴ったので、SAM2695を動かすことに成功していることがわかりました。次は、MIDIのコントロールができるかを確認します。前回紹介した、Behringerの「Pro VS MINI」を使って、MIDI信号が正しく出てきているのか確認してみました。Unit-MIDIのMIDI OUTとPro VS MINIのMIDI INをMIDIケーブルでつないでから、Core Basicの電源を入れると、Pro VS MINIが鳴り始めました。これで、無事にMIDIのコントロールができることがわかりました。プログラミングの手間を考えると、1曲丸ごとプログラムしてシーケンサーのように使うという使い方は実用的ではないように思いますが、「本物の電子楽器(語彙不足…)を鳴らせる」ことに、様々な可能性を感じます。

M5Stackを使ってみる

2025年10月10日金曜日

M5Stackを使ってみる〜CORE BASICでもUARTを使えるようにする

以前の続きです。前回は、Linux Mintで動かしている自作PCを使ってM5StackCORE BASIC V2.7の動作確認をしました。Unit CardKB v1.1を使えるようにすることまではできましたが、UNIT-SYNTH(「SYNTH」と略記)には対応していないことがわかってどうすればよいか調べてみました。

すると、Switch Scienceさんのサイトで、Core BasicやM5Stick-Cに「PORT.C(UART)」などを追加できる道具が販売されているのを見つけました。Core Basic用に「M5StackBasicLite」というベースボードが、M5Stick-C用に「ExtPort for StickC」という拡張ボードが販売されていました。これこそ、まさに求めていたものだと思ってすぐに購入しました。今回は、これらを使ってSYNTHの動作確認をしていくことにします。

M5StackBasicLiteについては、GitHubサポートページがありました。使い方は見たらわかるレベルだったので、Core BasicからBOTTOM(バッテリーモジュール)を慎重に外してM5StackBasicLiteを接続してみました。この状態でもUSB-Cケーブルからの給電で使えるようなのですが、BOTTOMもつながりそうだったのでサンドイッチのようにM5StackBasicLiteをはさんでつないでみました。隙間ができてしまって、見た目はちょっと不格好になってしまいますが、使用には問題がなさそうです。
#「M5StackBasicLite」は、Switch Scienceで受託販売されているもので、基板に「@akita11」とシルク印刷されていました。Switch Scienceのページにもありますが、秋田純一さんの受託販売商品のようです。

BOTTOMのスイッチを「0(OFF)」にしてからCore BasicをUSB-CケーブルでPCにつなぎます。動作確認には、今回もLinux Mintで動かしている自作PCを使います。Arduino IDE(2.3.6)を起動して、「ツール」メニューからボードとポートを選択します。(詳細は、過去記事をご覧ください)前回やった手順通りに、「ファイル」メニューから「スケッチ例」→「(カスタムライブラリのスケッチ例)M5UnitSynth」→「piano」を選択して開きます。「→(コンパイル&書き込み)」ボタンをクリックして様子を見ていると、コンパイルとUploadが無事に終わってSYNTHから音が出ました。
#SYNTHをつなぐタイミングは、プログラムをUploadする前でも後でも良いようです。

試しに、「drum」の方でも動作確認してみましたが、問題なく音が出て、思ったより良い音で鳴ってくれました。自作PCから外して、BOTTOMのスイッチを「1(ON)」にしてからCore Basicの電源ボタンを押すとSYNTHから音が出たので、PCから独立した状態にしても使えることがわかりました。これは面白い。ちょっとプログラムを改造すれば、Core Basicのスイッチやセンサー類を利用したり、外付けのセンサー類をつないだりすることで、楽器のようなものを作ることも可能なのではないかと思いました。

この勢い(?)で、M5Stick-Cでも動作確認をしてみることにして、前出の「ExtPort for StickC」を使ってみます。ExtPort for StickCについては、同じくGitHubにサポートページが用意されていて、こちらも@akita11(秋田純一)さんの受託販売商品です。Stick-CのピンソケットにExtPort for StickCを挿して使うのですが、こちらはCore Basicより簡単に取り付けられます。

Stick-CをUSB-Cケーブルで自作PCつないでから、Arduino IDEを起動してボードを「M5Stick-C」に、ポートを「/dev/ttyACM0」にします。この状態で「piano」をコンパイルしてUploadしてみましたが、プログラム自体の書き込みには成功するものの、SYNTHから音は出ませんでした。残念。このサンプルプログラム自体に「@Hardwares: M5Core +Unit Synth」とあるので、単純にStick-Cはサポート対象外なのかもしれません。

M5Stackを使ってみる

2025年9月15日月曜日

M5Stackを使ってみる〜とりあえずLinuxで使えるか試す

以前の続きです。前回は、MacBook Proを使ってM5StackCORE BASIC V2.7の動作確認をしました。macOSでは、Upload時にエラーが出てうまく動かすことができませんでした。今回は、Linux Mintで動かしている自作PCを使って動作確認をしていきたいと思います。

自宅のMintには、Linux版Arduino IDE(2.3.6)をインストールしています。これを起動して、MacBook Proでやったときと同じように、ボードマネージャで「esp32(2.0.17)」を、ライブラリマネージャーで「M5Stack(0.4.6)」をインストールしておきます。
#「esp32」は、2.x系のものを使わないとダメみたいなので。

M5StackをUSBケーブルでPCにつないだ上で、「ツール」メニューから「ボード:」の項目を選択して、「esp32」→「M5Stack-core-ESP32」を選択し、さらに「ポート:」の項目を選択して、「/dev/cu.usbserial-…(LilyGo T-Display)」を選択します。(「LilyGo T-Display」というのがあるらしい←何故これでよいのかはわからないけど…)次に、「ファイル」メニューから、「スケッチ例」→「(カスタムライブラリのスケッチ例)M5Stack」→「Unit」→「CardKB」とたどってプログラムを開きます。

この状態でちょっと試しにと「→(コンパイル&書き込み)」ボタンをクリックしてみました。すると、何の問題もなくコンパイルとUploadが完了してしまいました。もしやと思ってGroveポートにCardKBをつなぐと、キーボードとして使うことができました。Cardであることにこだわった製品なだけに、タクティルスイッチが薄くて押し難かったり、挙動が不安定だったりして必ずしも使いやすいとは言えませんが、使えることだけはわかりました。M5StackのGitHubサイトにあった、Arduino IDEのサンプルプログラムでも試してみましたが、こちらも問題なくコンパイルと書き込みができて使えることがわかりました。

MacBook Pro(macOS)ではできなかったのに、Linux Mintでは意外にあっさりとCardKBが使えたので、その他のユニット類についてもMintで動作確認をしてみようと考えました。さしあたってUNIT-SYNTH(仏dream社のSAM2695を内蔵したシンセサイザーユニット(「SYNTH」と略記))で音が出せるかやってみようと思いました。先に結論から言うと、そもそも今回使っているCORE BASIC V2.7のGroveポートはI2C(「PORT.A」と言うらしい)にしか対応しておらず、「PORT.C(UART)」対応のSYNTHユニットは使えないことがわかりました。orz
#「M5Stack Groveポート A-B-C」を参考にしました。

前回の記事で、すでにフラグが立っていたことに気づいて悶絶してしまいましたが、Groveポートの「色の違い」に違和感を覚えなかった自分にも問題がないとは言えません。ちなみにですが、「PORT.A(I2C)」は赤、「PORT.B(I/O=GPIO」は黒、「PORT.C(UART)」は水色となっています。M5Stick-CやCardKBのGroveポートの色は白ですが、これはそもそものGroveポートの色が白だったためではないかと推察しています。

一応、Arduino IDEで作業した手順だけは記録しておきます。CardKBを動かした状態からなので、既にArduino IDEとCore Basicはつながっている状態からの手順と考えてください。

  1. ライブラリマネージャーから「M5UnitSynth(1.0.1)」ライブラリーをインストールする。
  2. 「ファイル」メニューから「スケッチ例」→「(カスタムライブラリのスケッチ例)M5UnitSynth」→「piano」を選択して開く。
    ※見つからない場合は、M5Stackの「UNIT-SYNTH」公式サイトで公開されている、サンプルプログラム(「drum」と「piano」)を使ってください。
  3. 「→(コンパイル&書き込み)」ボタンをクリックして、実行プログラムをUploadする。
  4. Core BasicにSYNTHをつなぐ。

ここまでの作業でUploadには成功するものの、SYNTHユニットから音が出ることはありませんでした。他に使えるようにする方法がないか調べてみたいと思います。

M5Stackを使ってみる

2025年8月22日金曜日

M5Stackを使ってみる〜6年以上前からの再挑戦

既にだいぶ前のことになってしまいましたが、M5StackCORE BASICの初期のバージョンを購入して時計のようなものを作ってみるところまではやっていました。その後、バッテリーを内蔵しているBOTTOMを取り外そうとしたときにピンコネクタが固くてなかなか外せず、無理やり外して筐体のプラスチックにヒビが入ってしまいました。Σ(゚Д゚;それ以来、使う気にならず長らく放置してしまっていました。
#この失敗は、割と多いらしい。

当時一緒に買った「ウォッチバンド(Watch)」も本体を壊してしまったので使い道がなくて放置。その後、M5Stick-Cのウォッチバンド付きを買って気を取り直そうと試みましたが、はじめの失敗から立ち直れず、また壊してしまうかもしれないという気持ちと、他にもやりたいことが増えてしまったということで結果的に放置状態が続いてしまいました。

とは言え、全く興味を失っていた訳ではなく、「いつか使ってみよう。」と思いながら、少し前(いつだったか忘れてしまったけれど…)にCORE BASIC V2.7が販売されているのを見つけたのでもう一度買い直し、目に止まった周辺機器(Unit類など)も買い揃えていっていつでも再挑戦できる状態になっていました。手元にあるUnit類は、以下の通りです。

  • Unit CardKB v1.1…タクトスイッチが並んだカードサイズのキーボード(「CardKB」と略記)
  • DSOアダプタ…M5Stackをオシロスコープとして使えるようにするアダプタ(「DSO」と略記)
  • Unit-Synth…仏dream社のSAM2695を内蔵したシンセサイザーユニット(「Synth」と略記)
  • Unit-MIDI…同じくSAM2695内蔵のMIDI音源ユニット(「MIDI」と略記)

最近のM5Stackのプログラミングは、UIFlowUIFlow2を使うことが推奨されているようで、micro:bitなどと同様に、Webアプリケーションでプログラミングをするようです。ドキュメントも充実していて、「Basicファームウェアの書き込みとプログラムのプッシュ(UIFlow)」やタイトルは同じですが「Basicファームウェアの書き込みとプログラムのプッシュ((UIFlow2)」を参考にすれば、それほど難しくはないと思います。いずれにしても「M5 Burner」をインストールしてM5Stackのファームウェアを書き換えなければならないので、それさえクリアできれば後は快適に使えると思います。(希望的観測)

と言っておきながら、今回は以前にも紹介したことがあるArduino IDEを使って4つのUnit類の動作確認をしていきたいと思います。動作確認は、いつものMacBook Proを使います。順番はどうでも良いのですが、気持ち的に購入順で一番上のCarKBからにします。

インストール済みのArduino IDE(バージョンは「2.3.6」)を起動して、「ファイル」メニューから、「スケッチ例」→「(カスタムライブラリのスケッチ例)M5Stack」→「Unit」→「CardKB」とたどってプログラムを開きます。「ボードマネージャ」から「esp32(バージョンは「3.3.0」)」を検索してインストールして、「ライブラリマネージャー」から「M5Stack」と「Arduino GroveI2C Ultrasonic」ライブラリを検索して、インストールしておきます。(ライブラリの方は、必須ではないかもしれません)

この状態で、先ほど開いたプログラムがコンパイルできるかやってみました。「ツール」メニューから「ボード:」の項目を「esp32」→「M5Core」にします。「✓(検証=コンパイルする)」ボタンをクリックしてコンパイルが通るかやってみましたが、エラーを吐いて止まってしまいます。(ライブラリ内の「pngle.c」が求める「rom/miniz.h」が見つからないと言われます)

ダメ元でGoogle先生に訊いたところ、「Fix for rom/miniz.h Compilation Error in M5Stack Arduino Sketch」というページを教えてくれました。どうやら、「esp32」をダウングレードせよという話のようです。先程インストールした「esp32」を削除して、「esp32」のバージョン「2.0.17」をインストールしました。(2.x系でインストールできる最新バージョンがこれだったので)この状態で、「ツール」メニューから「ボード:」の項目を選択して、「esp32」→「M5Stack-core-ESP32」を選択し、「✓(検証)」ボタンをクリックしてコンパイルすると、無事にコンパイルが通りました。

次に、M5StackをUSBケーブルでつないで「ツール」メニューから「ポート:」の項目を選択して、接続したM5Stack(/dev/cu.usbserial-…(LilyGo T-Display))を選択します。「LilyGo T-Display」とは何者?何故ここに?と思いましたが、このままスルーすることにして「→(書き込み=コンパイルして書き込む)」ボタンをクリックしました。コンパイルまではうまくいくようになったのですが、書き込みでエラーが発生してUploadには失敗してしまいました。

プログラムが悪いのかもしれないと思い、ネットで探していると、M5StackのGitHubにArduino IDEのサンプルプログラムがあったので使わせていただくことにしました。
しかるのちさんの「M5Stack:小型キーボードユニット CardKB」を参考にしました。

このプログラムを使っても、Uploadできない問題は解決しませんでした。なかなか手ごわい。他のものを試す前にLinuxで動くかどうかやってみようと思います。長くなってきたので、続きはまたの機会ということで。

M5Stackを使ってみる

2025年8月1日金曜日

Pd(Pure data)でシンセサイザープログラミング~Linux Mintでも動くのだろうか

以前の続きです。これまでは、主にMacBook Proを使ってPd(Pure data)の動作確認作業をしていましたが、調子に乗ってLinux Mintで動かしている自作PCにもインストールして、音が出るかやってみることにしました。
#拙BlogのPd関連記事

「ソフトウエアマネージャ」からFlatpakパッケージのPd(バージョンは「0.55-2」でした)をインストールしました。動作確認をするために、Pdを起動してMacBook Proのときと同じプログラムを作って実行してみましたが、残念ながら音が出ませんでした。Pdに限らずLinux版の音楽関係アプリでは、インストールされている音楽関係システムやその設定によって音を出すのに手間がかかることが多々あります。今回のようにプログラムの作り方に間違いがなくても、Pdからの「音を出す」という命令を受け取って音を出すシステムとうまくつながっていない(うまく受け取れていない)のではないかと考えられます。ちょっとがっかり…。orz

気を取り直して、ソフトウエアマネージャでFlatpak版を削除してから通常版(バージョンは、ちょっと古い「0.52.1+ds0-1」でした)をインストールしてみました。Linuxあるあるですが、最新版よりもちょっと古いバージョンの方が動作する可能性が高いからです。通常版のPdを開くと、すべて英語表記のPdが起動しました。言語設定のやり方がわからなかった(できない可能性も…)ので、そのまま使ってみました。プログラム自体は、同じようにやってみましたが、残念ながらこれもダメでした。

ダメ元で、ソフトウエアマネージャでPd-extended(バージョンは「0.44.0」でした←サポート終了につき使用は非推奨です)を入れ直して動くかどうかやってみましたが、これもやはり音は出ませんでした。若干絶望的な状況になってきました。

仕方がないので、はじめにインストールしたバージョン「0.55-2」を入れ直して「オーディオオン(DSPオン)」にしてから、「オーディオとMIDIをテストする」の窓を開くと様々なテストをする道具が出てきます。これを使って音が出ないかどうかやってみましたが、ログ窓の方に「オーディオ I/O エラー」と出ては消える状態になってしまいます。

原因は、Pdが求める「音を出すシステム」と自作PCのLinux Mintで設定されている「音を出すシステム」が合っていないということらしいです。これらのON/OFF設定を合わせれば、音が鳴るんじゃないかと思うのですが、これが一筋縄ではいかないのがLinuxというものです。

自作PCのLinux Mintでは「PulseAudio」をメインで使っています。この環境でScratch 1.4LMMSを使うと問題なく音が出ます。(但し、Scratch 1.4は、Windowsで使っているときのように音色の変更はできません)

Pdでは、「ALSA」を使うことが求められているようです。自作PCのLinux MintにもALSAの主要なパッケージはインストール済みです。これを、Pdを起動する際に、明示的にALSAを使うよう設定する必要があるのだろうと思います。以前、どこかで似たような作業をした記憶があるのですが、どうやるんだったか…思い出せるかやってみたいと思います。

ついでに、Raspberry Pi 5Raspberry Pi OSRaspberry Pi Imager)でも確認してみました。「Add / Remove Software」から、「puredata 0.53.1+ds-2+deb12u1」やALSAをインストールして動作確認をしてみましたが、この環境でも音が出ませんでした。

ということで、私が使っているLinux系のOS環境では、Pdを動かすことができませんでした。きっとやり方があって、何かが音を出すことを邪魔しているのだろうと思います。問題は、Pdを使えるようにすることで、別のものが使えなくなるのであれば、使用頻度の高くないPdを使うことを優先するのは得策ではないということです。(実験・検証はしたいけど、普段使いの環境を壊すのも嫌だし…)

2025年7月5日土曜日

Pd(Pure data)でシンセサイザープログラミング~部品について整理してみる

前回の続きです。Pd(Pure data)という音楽に特化したプログラミング環境を使ってシンセサイザーを作っているのですが、なかなかクセの強いソフトなので一度整理しておきたいと思います。Pdでプログラミングをする際に最もよく使われるのが「配置」メニュー内の部品たち。この部品たちの役割がわかってくるとPdのプログラミングがスムーズになっていくと思います。そんな訳で、この部品たちの役割などについて整理していきたいと思います。
#今回は、Pure Data Japanの「オブジェクトの種類」を参考にしてまとめました。

オブジェクト
オブジェクト名()を入力し、様々な機能を実現する部品。
メッセージ
数値データや文字列データなど、出力するものを入れておく部品。
ナンバー
数値データを入れておく部品。実行モードでは、マウス操作で数値を変更できる。
シンボル
文字列データを入れておく部品。
コメント
コメントを入力しておく部品。日本語的には、「メモ」と言った方がわかりやすいかもしれない。
Bang(バン)
クリックでスイッチONのデータを出力する。モーメンタリースイッチのような挙動。
Toggle(トグル)
クリックでスイッチON/OFFのデータを出力する。オルタネートスイッチのような挙動。
ナンバー2
「ナンバー」部品と似ているが、プロパティの設定項目が違うので、扱える数値の幅が広い感じ。
垂直スライダ
スライダスイッチ(垂直方向)。「ナンバー」部品などの数値を操作的に変化させることができる部品。
水平スライダ
スライダスイッチ(水平方向)。挙動は「垂直スライダ」部品と同じ。
垂直ラジオボタン
ラジオボタン(垂直方向)で値を変更するスイッチ。プロパティでボタンの個数や挙動を変更できる。
水平ラジオボタン
ラジオボタン(水平方向)。挙動は「垂直ラジオボタン」部品と同じ。
VUメータ
見た目通りの「VUメータ」部品。
キャンバス
プロパティを見るとグラフ表示ができそうな部品であることがわかる。詳細はわからず…。

_noteで見つけた「puredataのオブジェクト一覧」やこじ研(小嶋研究室)さんの「Pure Data小辞典」には、さらに細かいコマンドなどの情報がありました。モジュラーシンセのように様々なモジュールを作って、それをつないで本格的なシンセサイザーを作ることができたら面白いと思いました。それに、外部からMIDIキーボードなどでコントロールするところまでできたらやってみたいと思います。

「Pd(Pure data)でシンセサイザープログラミング」