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で動くかどうかやってみようと思います。長くなってきたので、続きはまたの機会ということで。 

2025年8月12日火曜日

GAOMONのS620(ペンタブレット)を使ってみる

その昔(教員になったばかりの頃)、Wacomのペンタブレットを使っていた記憶があるのですが、ちょっと奮発して買ったように思います。(型番等はすっかり忘れてしまっています)当時は、Macで絵を描いたり画面に表示したものにマークをしたりするなど、結構な頻度で使っていたと思いますが、それが壊れたか何かで使えなくなって、そのうちタッチパネルが当たり前になってきて需要が減ってしまってからは、ペンタブレットを使わない生活が長く続いていました。

そんな中、家族からの問い合わせがあり、ペンタブレットを使いたいとのことだったので、ちょっと探してみることにしました。イマドキは、iPadなどのタブレットPCもあるし、タッチパネル式のモニタもあるので、ペンタブレットの需要が高いとは思えません。Amazonで探してみると、液晶タイプのペンタブレットもあってそこそこのお値段がします。簡単には手が出ないので、今回は純粋にペンタブレットを探すことにしました。そんな中で見つけたペンタブレットがGAOMONの「S620」でした。

大きさは、6.5 inch*4 inchのもので、4つのショートカットキー(スイッチ)が付いています。ドライバーソフトは、公式のダウンロードサイトからダウンロードすることができます。(Windowsだけでなく、MacやLinuxにも対応ということで、メーカーのやる気(?)を感じます)これをダウンロードしてMacBook Proにインストールし、使い勝手を検証していきます。

ダウンロードしたドライバーソフトをインストール(アプリケーションフォルダにコピー)して、「GaomonTablet」アプリをダブルクリックで起動すると、「デバイス(ペンタブレット)が検出されません」と言われます。そこで、ペンタブレットをUSBケーブルでつなぐと、macOS自体がキーボードとして認識しようとして設定を促されます。これをキャンセルして、GaomonTabletアプリがペンタブレットを認識したので設定を進めていきます。私の環境では以下の項目について設定しました。

〈システム設定〉

  • 「プライバシーとセキュリティ」→「アクセシビリティ」
  • 「プライバシーとセキュリティ」→「画面収録とシステムオーディオ録音」

〈GaomonTabletアプリ〉

  • 「ショートカットキー」…パッドの上に並んでいる4つのキー(スイッチ)について、役割等を割り当てることができます。
  • 「作業領域」…画面上の作業領域を決めることができます。

一度設定をしてしまえば、GaomonTabletアプリを起動していなくても、設定したとおりにS620をペンタブレットとして使うことができます。絵を描くだけでなく、マウスのように使うことも可能だし、DTMソフトを使った音楽作成にも活用することができますし、動画編集やPd(Pure data)の操作などにも使えそうな気がします。

動作確認のためにGIMPGarageBandでの操作感を確認してみました。作業したいところにダイレクトに移動可能なところがペンタブレットのよさ(タッチパネルと共通する)だと思います。一方で、モニタ画面全体が、それよりも小さいペンタブレットの作業領域と同等に扱われるため、操作性がよいことばかりではありません。モニタ画面上の位置とペンタブレット上の位置が完全に対応しているので、マウスとの操作感の違いに戸惑うことはあると思います。これについては、GaomonTabletアプリの設定で、「マウスモード」にすればマウスのように使うことができますし、作業領域を設定するとペンタブレットで作業できる範囲を変更することができます。

次に、自作PCで動かしているLinux Mintでも使えるかやってみました。同じくダウンロードサイトからドライバーソフト(debパッケージ)をダウンロードして、ダブルクリックでパッケージインストーラーを起動してインストールします。インストールが終わったら、「Lm」メニューから「GaoMonTablet」を起動します。macOSのときは、はじめから日本語表示になっていましたが、Linux版は英語表示がデフォルトのようで、自分で日本語に設定を変更しました。(「歯車」の設定メニューから変更できます)MacBook Proで設定した内容は、S620本体には記録されていないようで、ショートカットキーの割当などもLinux版のデフォルトになっていました。設定を引き継ぎたい場合は、設定メニュー内の「バックアップ」メニューから「設定エクスポート」で設定を書き出して、「設定インポート」で読み込めば別のPCでも設定が引き継げます。

GIMPとPd(Pure data)で操作感を確認してみましたが、macOSのときと同じように使うことができました。少しだけ違うのは、ドライバーソフトを起動しておかないとペンタブレットが動作しないことです。これは、macOS版のGaomonTabletを初めて起動した際に、ドライバーのようなものが自動的にインストールされるため、GaomonTabletを起動しなくても使えるようになるのだと思います。Linux版のGaoMonTabletの場合は、初回起動時に特に動きがなく、ドライバーソフトを起動しているときだけ使えるようになるというような仕様になっているのではないかと思います。

2025年8月8日金曜日

FAMIC on USBの動作環境を検証する

以前の続きです。「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)を使ってみています。このFAMIC on USBにはUSB-C端子が載っていて、USBケーブルでPCとつないで使います。USB-Cが使えるUSBケーブルには様々なバリエーションがあって、自宅にも様々なUSBケーブルがあります。ケーブル自体に規格が明記されているものもあれば、何も書かれていないもの(こちらの方が多い)もあって、どんなUSBケーブルなら使えるのか検証をする必要があると感じました。

ということで、USBケーブルの規格を確認するために、「USBコネクタケーブルチェッカー(←Amazonの商品ページ」を使うことにします。このチェッカーは、USBケーブルのコネクタの結線状態を確認するもので、各種USB規格への対応状況を確認することができます。コネクタの形状や色だけでは判断できない場合や挙動がおかしいUSBケーブルがあった場合には、これを使って状態をチェックすることができます。

検証には、MacBook Proを使います。これには、普段から8 in 1のUSB-Cハブを挿して使っています。詳細は不明ではありますが、vigoole(←Amazonのストアサイト)と書かれていて(メーカー名?…ブランド名?…)、型番は「SC202」となっています。これを使ってMacBook ProのUSB-CポートをUSB 3.0ポート*2、USB 2.0ポート*1、4K HDMIポート*1、RJ45 Ethernet LANポート*1、100W PD充電ポート*1、SDカードリーダー/Micro SD/TFカードリーダー*各1に変換しています。今回は、このUSB-Cハブを使って動作するか確認するとともに、MacBook Proに直接つないで動作するかも確認したいと思います。

〈USB-Cハブ使用〉

  • USB-A(3.0)ポートからFAMIC on USB
    • USB-A(3.0)←→USB-Cケーブル…OK(前回の動作実験環境)
    • USB-A(2.0)←→USB-Cケーブル…OK
  • USB-A(2.0)ポートからFAMIC on USB
    • USB-A(3.0)←→USB-Cケーブル…OK
    • USB-A(2.0)←→USB-Cケーブル…OK

※このUSB-CハブのUSB-Cポートは、充電用なのでデータ通信等には使用できません

〈MacBook Pro直挿し〉

  • USB-Cポート
    • 両USB-C(SS USB10…3.1)ケーブル…OK
    • 両USB-C(2.0)ケーブル…OK

検証は、macOS版のGoogle chromeを使用して、「(FAMIC on USB)MML Playground」にアクセスしています。いずれの規格でも、使えることがわかりました。検証する中で、不具合があるUSBケーブルが数本見つかったので、いさぎよく処分しました。ケーブル類をためてしまいがちな生活をしているので、片付けられたのもよかったです。(^^;;;

〈参考〉
新たなるUSBケーブルチェッカーをレビューする

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月25日金曜日

本棚に入るドールハウスを作ってみる〜準備から作り始めた手応え

以前から、「箱庭的な世界観」には強い魅力を感じていて、それこそ「ジオラマ」は大好物な部類に入ります。しかしながら、作ったところで飾るところもないし、大好きな城のプラモデルすら組み立てられずに「大切に保管」されている有り様。作っても邪魔な大きさにならず、それでいて作り上げた満足感と出来上がったあとの実用性を兼ね備えたようなものがあればと思っていたところ、ドンピシャなものを見つけてしまいました。「Book Nook(ブックヌック)」というらしいのですが、「本棚に入るドールハウス」として一部で話題になっていたようで、Amazonで見つけて衝動買いをしてしまいました。
#「Book Nook」が一般名詞なのか商品名なのかはイマイチよくわかっていません。

これを見たとき、直感的に「フィジカル・コンピューティングに使えるのではないか。」と思いました。この本棚ドールハウスにはLEDを仕込むことができて、本棚に入れて暗くなっても中を見ることができます。ということは、Raspberry Pi Pico系のものやArduino系、micro:bitなどのマイコンボードを仕込めばもっといろいろな表現ができるのではないか、音を鳴らしてみたり、中の物を動かしてみたりと、フィジカル・コンピューティングを含む電子工作の素材や改造ベースとして使えるのではないかと思ったのでした。

とは言え、初めてのチャレンジでもあり、写真や文章だけでは情報が足りず、実物で確かめてみようと考えてAmazonでセールをしていたものをいくつか購入してみました。そのうちの1つで一番シンプルそうなもの(「Bakery Shop」風のもの)を選んで作る準備を始めました。今回購入したものは中国製で、中国から日本の代理店のようなところが輸入して販売しているようです。日本語の案内書のようなものは付属していましたが、肝心の説明書は全て中国語表記だったので、写真を見ながら想像力を働かせてどうにか組み立て作業を進めることにしました。

まずは道具の用意から。細かな作業をするためにピンセットやデザインナイフ、スチール定規、ハサミ、工作マット、木工用ボンドなどの道具を用意していきました。

シンプルとは言え、やはり小さなものを組み立てていくので、精度にはそれなりにこだわらないといけないと思います。よく考えたら、自宅にあるハサミは精密な作業に向いているものがなく、紙工作用のハサミを購入するところから始めました。今回購入したのは長谷川刃物RMF-170KDSB-100です。

さて、準備ができたので作業を開始します。説明書に従って、手始めにデクスチャーシートを木製(MDF材を含む)に貼り付けます。セメダイン社の木工用速乾ボンドを使用しました。スポンジ刷毛を使って(少々の水分を含ませて)木材側にボンドを薄く塗ってテクスチャーシートを貼り、おもしを乗せて圧をかけて接着します。テクスチャーシートとのズレは0.2~0.3mm程度でしたが、組み立てる前にハサミで切った方が良さそうでした。

次に、細かな部品の中で、フェルト生地を使って部品を作る作業をやってみました。説明書には、型紙を使ってフェルトを切り取り、別に切り取ったテクスチャーを貼り付けるような手順が書かれていました。そこで、私が考えた手順は以下の通りです。

  1. 型紙に両面テープを貼り付けて、フェルト生地に仮付けする。(「はがせる両面テープ」を使用)
  2. 型紙に沿ってフェルト生地を切り取る。
  3. 型紙をはがしてフェルト生地にテクスチャーをボンドで貼り付ける。(工作マットで上下から挟んでおもしを乗せて圧着する)

はがせる両面テープでも長時間放置するとはがれにくくなるので、切り取った後は、貼り付けた型紙をできるだけ早くはがした方がよいと思います。

実は、はじめからテクスチャーを貼り付けて切る方法でもやってみたのですが、型紙よりもテクスチャーの方が余白が広く、その分フェルト生地を多く消費してしまうという問題がありました。試しに、いくつかの部品を型紙を使わずにやってみました。やってみて思いましたが、テクスチャーの紙は型紙の紙より硬いので、フェルトに貼り付けた状態だと切りにくいという問題があるのかもしれません。

この後も様々な部品を作っていきましたが、説明書のとおりに作っていくだけなので取り立てて難しいことはなく、ひたすら地味な作業をこつこつと行っていく感じです。正直なところ、完成図を見てちょっと変更したいところもあるので、どのあたりから改造を始めるか(一度全て完成させてからとか、飾りつけを省いて大枠を作ってしまってからとか…)考え中です。続きは後日ということにします。

2025年7月18日金曜日

FAMIC on USBという音楽系ガジェット(小さなマイコンボード)を試してみる

電子工作をやっている方にはおなじみかもしれませんが、マルツ(マルツエレック株式会社)のオンラインショップ(←店舗の方にもよく行きました)で、「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)の取り扱いが始まったとの情報があり、使いそびれていたポイントが少し残っていたのもあって迷わず購入してしまいました。今回購入したのは、FAMIC on USB本体とデータを記録させるためのFAMIC WRITERがセットになっているもので、PRIORISという会社が開発したもののようです。

MMLについては、数年前にも当Blogで紹介したことがありました。IchigoJamを楽器のようにするプログラムを作って、キーボードで演奏したときに使ったのがMMLでした。今回は、FAMIC on USBを動かすための「(FAMIC on USB)MML Playground」を使って、ブラウザー(「Google chrome」を使用)からFAMIC on USBを操作します。MMLがよくわからなくても「MML Command Reference」が使えるので、あてにならない自分の記憶とネットの情報を探しながら使ってみることにしました。そもそも、MMLについては公式な規格が存在しないようで、MMLで動かせることを謳っていても、実装具合が微妙に違うことがあるようです。かっちりした規格があった方が安心してプログラムを作れると思う反面、ゆるさも魅力の一つではある(何なら自分でもいろいろなものに実装可能だということにもなるので)かなとも思います。

さて、本題に戻ります。FAMIC on USBに電池駆動のアンプ付きステレオスピーカー(YAZAWATVR35WH)をつないで音出し実験をしてみたいと思います。chromeブラウザーを動かすのは、愛用のMacBook Proです。公式サイトには、Linuxにも対応しているようなことが書かれていましたので、自作PCLinux Mintからでも制御できると思います。PCなどと接続するためのUSBケーブルは付属していませんでしたが、FAMIC on USB側のUSBコネクタの形状は、USB-Cで接続できる形状になっています。自宅にはUSB-A←→USB-Cケーブルがいくつかありますが、電源供給用のものやUSB2.0までしか対応していないものなどもあって、どのケーブルなら使えるかわかりませんでした。とりあえず、USB3.0対応のUSBケーブルを使うことにして、動作確認をやってみることにしました。

今回は、FAMIC WRITERも同時に購入しているので、こちらも載せて一緒に動作確認していきたいと思います。ガイドとしてオフィシャルWebサイトで紹介されているYouTube動画を参考にしながら作業を進めていきました。プログラムを始める前に、FAMIC on USBにFAMIC WRITERを載せます。ピンを曲げないように気をつけて、しっかりと奥まで挿し込みました。次に、先ほど紹介したアンプ付きスピーカーを接続して電源をONにしておきます。あとはMacBook ProとUSBケーブルで接続すれば聞き覚えのある音(名前から想像して…)が鳴って接続されたことがわかりました。

接続した状態からchromeブラウザーを開いて、「MML Playground」にアクセスします。「Ch. 1」のところに「CDEFGAB>C」と入力して、ウィンドウの下方にある「▷(再生)」ボタンをクリックします。すると、MacBook Proにつないでいるスピーカーから音が出ました。ここで、音声出力の設定を「FAMIC WRITER」に切り替えます。(この後は、MML PlaygroundでプログラムしてFAMIC on USBに書き込んだもの以外の音を出すことはできないので要注意です)ウィンドウの上方にある「FAMIC WRITE」ボタンをクリックすると、この設定がFAMIC on USBに書き込まれて、その後は電源さえあれば設定された通りの曲が流れるようになります。

プログラムした曲を別のファイルで保存しておきたい場合は、「Download」ボタンをクリックするとjsonファイルで保存することができます。これは、「Upload」ボタンをクリックして読み込むことも可能です。また、「Examples」ボタンをクリックすると、いくつかのサンプルプログラムが選べるようになっていて、MMLの書き方を学ぶこともできるようになっています。FAMIC on USBを持っていななくてもMML Playgroundでプログラムすることはできる(その場合は、PCなどのスピーカーからも音が出せる)ので、作り込んで鳴り方を確認することができます。

活用のアイデアとしては、この環境で音楽を作ってFAMIC on USBに流し込んだら、電源とアンプ−スピーカーだけで音が出るので、「呼び込みくん」のようなものをオリジナルで作ることもできます。他のマイコンボードとも組み合わせると、更に活用の幅が広がるのではないかとも思いました。

2025年7月12日土曜日

カブトムシ飼育環境を転用してミニトマトを育ててみる

このBlogで長い間紹介してきたカブトムシ飼育でしたが、最後の報告が約2年ほど前で、去年の秋には最後の1頭が亡くなっておしまいになっていました。残ったのは、クヌギマットと腐葉土。これを何かに使えないかと思ったまま約1年が経とうとしています。そんな中、家庭菜園的なものをやってみてはどうかと思いたち、道具の準備を始めました。

もともと、「野菜のベランダ栽培」もこのBlogで紹介していた通り、職場のベランダで野菜の栽培をしていました。(趣味ではなく、「食農教育」の一環としてですよ。念の為)このときは、土を使って栽培をしていましたが、今手元にあるのはクヌギマットと腐葉土だけ。近所のホームセンターであれこれ考えながら、この環境で育てられそうなものとして選んだのが「ミニトマト」でした。

KAGOMEが製造している、「トマトの土」があって、この主成分が「ヤシガラ」と言われるものだったので、「ヤシガラでできるならクヌギでもできるんじゃない?」と思ったのでした。(深い根拠はありません)とは言え、本当にうまくできるかわからなかったので、(弱気にも)このトマトの土も購入して、一緒に使ってみることにしました。

寄せ植えができるくらいの広めの植木鉢とスタンドを用意して、その中にクヌギマットと腐葉土、そしてトマトの土を混ぜた栽培土を作り、その中にミニトマトの苗を3株植えました。ベランダ栽培の大きな問題は、ベランダ床の熱さです。特に夏場のベランダ床は熱くなりやすく、植物が熱にやられないように工夫する必要があります。そのため、植木鉢をスタンドに載せて、ベランダ床の熱が直接伝わらないようにしました。

植えたあとにしっかり水やりをして(雨も降ったけれど)、1日経ったら結構しっかりと根が張ってきた感じでした。これがうまくいくようなら、このクヌギ&腐葉土をベースにして別の野菜栽培にも挑戦していきたいと思っています。野菜ごとに必要な培養土の条件が微妙に違ったり、同じ土で連作しない方が良かったり、寄せ植えに向いていない組み合わせがあったりして考えなければならないことはたくさんあるのですが、それも含めて楽しみながらやっていきたいと思っています。

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)でシンセサイザープログラミング」

2025年6月21日土曜日

Pd(Pure data)でシンセサイザープログラミング~シンセサイザーっぽいものを作ってみる

前回の続きです。Pd(Pure data)という音楽に特化したプログラミング環境を使ってシンセサイザーのようなものを作ってみたいと思います。前回同様、今回もレシピ本「Pd Recipe Book」を参考にしています。前回は、サイン波の音を出すプログラムを作ってみましたが、モジュラーシンセサイザーをいじっているような感覚でプログラムすることがわかってきました。モジュラー自体も(お金をかけずに)簡単に作ることができるため、夢のようなプログラミング環境ではあるのですが…。(万人向けではないことだけは確かでしょうね。(^^;;;)

前回作ったサイン波を出すプログラムを拡張して、「osc~」から出てくるサイン波を加工することを目指します。「Pd Recipe Book」で紹介されていたものを再現していきながら、配置された部品の意味や役割を確認しながら作業を行いました。作業としては、部品を選んで配置して、部品の中に文字列や数値を入力して役割を決めて、機能するように線でつなぐといった手順になります。部品の種類や中に入力した内容によって、つなげられるものとつなげられないものがあるようで、部品にマウスを近づけて「○」が表示されると線を引き出す(ドラッグ)ことができて、同じく「○」が表示されるところ離す(ドロップ)と線でつながります。とは言え、つなげられるから意味のあるつながり方になっているかと思いきやそんな単純な話ではなく、モジュラーシンセサイザーでも同じですが、思ったように音を変化させることができないつなぎ方もできてしまうところがあります。

そんな感じでなかなか一筋縄ではいかないところがあるものの、攻略する面白さ(これを面白いと思える人にとっての…)はのめり込ませるだけの魅力が十分にあると思いました。ということで、レシピ本を参考にして作ってみました。

動かし方が独特なので、はじめはどうすれば音が出るのか戸惑うかもしれません。「Pitch」とラベリング(任意なので名前は何でもよい)した「ナンバー」部品をクリックして、画面上側にドラッグしていくと数値が上がっていきます。それに伴って、音が出ます。直接数値を入力して、Enterキーを押しても音が出ます。マウスを操作している間は、音が変化しながら鳴り続けますが、マウスを止めたりEnterを押して音を出したりした場合は、一定時間で音が止まります。「*~」につながっている「ナンバー」部品は、音が出ている状態と止まっている状態を表しています。音を鳴らし始めると自動的に「1」になり、しばらくすると「0」に戻ります。(リレーのような動きをします)他の「ナンバー」部品の数値を変更した場合も、「Pitch」をクリックしてしてからでないと音が出ません。このあたりの「暗黙のルール」がもう少しわかりやすいとユーザーが増える気がしますが…。

ということで、少しずつ部品の役割(挙動)がわかってきました。「ナンバー」部品は、編集モードをやめて実行モードにしても数値を変更することが可能です。(「オブジェクト」部品の中に入力した数値は、編集モードでなければ変更することはできません)つなぎ方によっては、他の数値の変更と連動して自動的に「ナンバー」部品の数値が変わることもあります。今回のシンセサイザーっぽいプログラムでは使いませんでしたが、「リスト」部品も数値などを格納することができると思われるので、もう少し詳しく調べてみたいと思っています。

「ナンバー」部品の数値を変更する方法として、マウスを使って上下にドラッグする以外に、「垂直スライダ」部品や「水平スライダ」部品を使って、スライダの出力側と「Pitch」の「ナンバー」部品の入力側をつなぐと、スライダを動かすことで数値を変更できることがわかりました。少しだけシンセサイザーを操作している感じに近くなってきました。この場合、スライダのバー(「つまみ」のようなところ)をクリックすると音が出ます。このスライダのバーを「垂直…」なら上下に、「水平…」なら左右にマウスで移動すると音が変化します。これは絶対沼るやつです。

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

2025年6月14日土曜日

Pd(Pure data)でシンセサイザープログラミング~はじめの一歩

だいぶ以前から気になっていたのですが、Pd(Pure data)という音楽に特化したプログラミング環境があります。ブロックプログラミングとテキストプログラミングとの中間な感じのプログラミング方式が採用されていて、一見すると色気もなくて何をどうすればよいかよくわからないと思われてしまいそうなのですが、使ってみると楽器そのものを組立てているような面白さにハマる人が多いようで、意を決してそんな世界に足を踏み入れてみることにしました。

とは言え、MacBook ProにPd-extended(すでに開発終了)をインストールしたのは記憶にないくらい前のこと。興味をもったままPd-extendedをインストールして、ほぼ何もしないまま放置して、しばらくしてまた思い出して、レシピ本「Pd Recipe Book」を購入してまたしばらく放置して…を繰り返していたので、お気付きの通り何も進んでいませんでした。

まずは自分の情報をアップデートするところから始めます。そもそもPdの開発は、Pure data (Pd) Vanillaと、それにライブラリなどをパッケージしたPd-extendedとで別々に開発・メンテナンスされていたようなのですが、現在は、もともとのPd Vanillaに統合されているようです。今回は、Pdのダウンロードサイトから最新版をダウンロードしてインストール作業(展開して出てきたアプリをアプリケーションフォルダにコピー)をするところから始めました。

Pdを起動すると、ログ窓が表示されます。作業を進めていくと、このログ窓にPdの動作ログなどが表示されます。

「ログ」の後ろの数字は、表示する内容がどの設定なのかを表す番号になっていて、「2」は「通常」のログ表示ということのようです。すべてのログを見たい場合には、「4」にします。表示する文字数の節約という意味では意図はわからなくもないのですが、ユーザーフレンドリーであるかどうかという点では微妙な感じがします。このあとの作業でも感じたことですが、使いながら意味を考えたり、本やWebサイトで調べて「省略されている文字」の意味を理解したりしながら作業することが多くて、「一見さんお断り」な雰囲気を感じてしまいます。
#音楽(音)や電子楽器の知識はあった方が良いかもしれません。

気を取り直して作業を進めていきます。今回は、先ほど紹介した「Pd Recipe Book」以外にも、「Pure Dataについて調べてみた」を参考にして作業を進めます。Pdの「ファイル」メニューから「新規」(⌘N)をクリックしてキャンバス窓を開きます。ここに様々な部品を「配置」メニューから選んで配置していきます。部品には、文字列や数値を入力できるものやマウスで操作するものなどがあります。新しくキャンバス窓を開くと「編集モード」になっているので、そのまま「配置」メニューから部品を選択してキャンバス窓に置くことができます。プログラムの動作確認をするときには、「編集」メニューから「編集モード」(⌘E)のチェックを外して実行モードで動作させます。(簡単なものであれば「編集モード」のままでも確認できることはあります)さらに部品を追加したい場合は、そのまま「配置」メニューから部品を選ぶとキャンバス窓が「編集モード」に変わってくれます。
#ログ窓とキャンバス窓は、どれか一つしか選べない仕様になっているため、その窓がアクティブか非アクティブかによって使えるメニューの内容が変わります。

つまずきどころは、部品に入力する文字が「小文字縛り」だったこと。シンセサイザー周辺の表記は「OSC(オシレータ)」とか「ENV(エンベロープ)」などと大文字で書かれるイメージがあったため、大文字で入力するものとばかり思っていました。Pdでは、すべて小文字でなければならないということで、初歩の初歩である「osc~」から「dac~」につないで音を出すところでつまずいてしまいました。orz(よく見れば、本でもWebサイトでもすべて小文字だったのだけど、「osc」って偶然にも大文字と小文字の区別がつきにくいのよね…)とりあえず、サイン波の音を出すことはできました。

「440」というのは、お察しの通り「440 Hz(A4)」の音という意味です。(このBlogでもたびたび登場しています)この数値を変えると、様々な音程のサイン波を出すことができます。これをベースにシンセサイザーっぽいものを作っていきたいと思います。続きは次回以降ということで。

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

2025年6月4日水曜日

ワイルドミニ四駆をiPhoneからリモートで動かす(MKZ4をiPhoneからコントロールする)

前回の続きです。秋月電子通商で購入した「MKZ4」という、タミヤワイルドミニ四駆iPhoneなどのスマホから無線で動かせるように改造するキットを使ってみるという話の3回目(最終)です。前回までで組立作業が完了して、今回はWi-Fiを利用してiPhoneからコントロールできるかやってみます。
#MKZ4は、メーカーサイトでも売り切れています。

メーカー公式YouTubeチャンネルで公開されている「スマホで操作する改造ミニ四駆製作キット「MKZ4」 [Cerevo]」を参考にしながら作業を進めました。手順をテキストで表すと以下にようになります。
#MKZ4のCN3(L字ピンヘッダ)のショートピンがB側になっていることを確認してから作業をしてください。

  1. MKZ4の電池ボックスに単4電池を3本入れてスイッチをONにする(MKZ4のLEDが点灯する)
  2. iPhoneの「設定」を開き、「Wi-Fi」の接続先に出てくる「MKZ4」をタップしてMKZ4と接続する
  3. Webブラウザーを開きアドレスバー(URLなどを入力する欄)に「192.168.4.1」と入力してMKZ4にアクセスする
  4. 「CONNECTED」という青緑色の画面が出たら準備OK
    #推奨されるWebブラウザーは「ユーザーガイド」のページに掲載されています。
  5. 青緑色の画面をスワイプしてワイルドミニ四駆を動かす

マニュアルの文書は、PDFファイルで公開されていますので、こちらも参考にしながら作業を進めました。前進は画面下方から上方にスワイプし、後進は画面上方から下方にスワイプするといった操作をします。ステアリングは、左右のスワイプで左右に傾けることができます。前後進は問題なく動作しましたが、ステアリングの動きがおかしくて、ステアリングを動かそうとするとどちら向きに動かしても右側に傾いてしまいます。動作中にMKZ4のLEDが点いたり消えたりするので、はんだ付けが不十分なところがあるのかもしれません。もう少し調整作業が必要なことがわかりましたが、とりあえず動作することだけは確認できました。
#事情により、USBでPC等に接続できるデジタル顕微鏡を職場の職員に貸し出しているので、返却されたら調整作業をやっていきたいと思います。

「ワイルドミニ四駆をiPhoneからリモートで動かす」

2025年5月23日金曜日

ワイルドミニ四駆をiPhoneからリモートで動かす(MKZ4の設定と組み上げまで)

前回の続きです。秋月電子通商で購入した「MKZ4」という、タミヤワイルドミニ四駆iPhoneなどのスマホから無線で動かせるように改造するキットを使ってみるという話です。フィジカル・コンピューティングの教材ネタとして購入したものの、いろいろとつまずいてしまって完成までに時間がかかっています。
#MKZ4は、メーカーサイトでも売り切れています。

前回は、メーカーサイトの説明書を読みながらMKZ4のはんだ付け作業を行ってきました。今回は、基板上にはんだ付けした「ESP-WROOM-02(ESP8266EX)」モジュールにプログラムを流し込んでいきます。使用するツールは、Arduino IDEです。Arduino IDEでESP-WROOM-02のプログラミングをする場合は、マイコンボードに合わせた設定を行わなければなりません。すでにArduino IDEをESP8266のプログラムに対応させているのであれば、以下の作業は必要ありません。はじめてArduino IDEでESP8266を使う場合には、以下の作業を行ってください。(Arduino IDEが起動している状態からの作業になります)

  1. 「Arduino IDE」メニューから「Preference(基本設定)…」を選択して設定画面を表示させる
  2. 「追加のボードマネージャのURL」欄に
    「https://arduino.esp8266.com/stable/package_esp8266com_index.json」
    と入力して「OK」ボタンを押す
  3. 「ツール」メニューから「ボード:… >」→「ボードマネージャ」とたどり、検索窓に「esp8266」と打ち込むとESP8266用のプログラムが表示されるので、最新版をインストールする

#MKZ4のマニュアルサイトでは、追加のボードマネージャのURLが「http://arduino.esp8266.com/stable/packageesp8266comindex.json」となっていますが、上記で示したURL(「https://…」から始まる)に変更されているようです。

ここまでで、Arduino IDEの準備は終了です。ESP-WROOM-02モジュールに書き込むプログラム(.ino)を用意します。プログラム自体はgithubの「cerevo/MKZ4」にあるので、「< > Code」ボタンをクリックして「Download ZIP」を選択してダウンロードしておきます。ダウンロードした「MKZ4-master.zip」を解凍すると、「MKZ4-master」というフォルダが現れるので、その中から「Cerevo_MKZ4」というフォルダをArduinoのプログラムを保存してあるフォルダに入れます。
#Arduino IDEを起動したときに、(任意で変更していなければ)「書類(Documents)」フォルダ内に「Arduino」フォルダが作られると思いますので、この中に入れるのが一般的だと思います。

次にボード側の作業をします。MKZ4のCN3(L字ピンヘッダ)のショートピンをD側にして、「MKZ4WK(専用の書込ツール)」をつなぎます。ここから、USBケーブルでコンピュータにつなぎます。

「ツール」メニューから「ボード:… >」→「ESP8266 Boaards(…)」とたどり、「Generic ESP8266 Module」を選択します。ポート名は環境に依存します(LinuxやmacOSでUSBシリアル接続すると「/dev/…」から始まるポート名が使われています)ので、USBケーブルで接続してみて表示されたものを選択しました。はじめは、MacBook Proで動かしているArduino IDE(2.x系と1.8.19の両方)を使いましたが、残念ながら途中でエラーを吐いてうまくプログラムを書き込めていない様子。例によって、USBシリアル通信がうまくできていないようなので、続きの作業をLinux Mintで動かしている自作PCを使ってやってみました。すると、2.x系も1.8.19も無事にコンパイルと書き込みができました。
#一度コンパイルと書き込みをしてから再び書き込む必要があった場合には、USBケーブルを抜いて接続を切って再度挿し直しをしないとエラーが出るようです。

あとは、説明書に従って走行できる状態まで組み上げていきます。MKZ4制御基板のCN3ショートピンは、B側にしておきます。

反省点は、完成までに数年かけてしまったことで、ネジ類が他のものと混ざってしまって焦ったことでした。幸い捨ててはいなかったので無事に組み立てられましたが、忘れないうちに一気に組み立てた方がよいですね。iPhoneからの動作確認は次回ということで。

〈参考資料〉

「ワイルドミニ四駆をiPhoneからリモートで動かす」

2025年5月17日土曜日

ワイルドミニ四駆をiPhoneからリモートで動かす(組み上げる前までの準備として)

忘れてしまうくらい遠い過去に、秋月電子通商で「MKZ4」というタミヤワイルドミニ四駆iPhoneなどのスマホから無線で動かせるように改造するキットを購入していました。当時は、マイコンボードでモーターを制御したり、ロボットカーのようなものを作ることに興味があったのだと思います。プログラムを流し込んでワイヤレスで制御できる「ESP-WROOM-02(ESP8266EX)」モジュールを使う改造キットだったことも興味をもった理由だったかもしれません。
#現在は、メーカーサイトでも売り切れのようです。

これが、自室の作業台の隅の方に作りかけのまま長いこと放置されていたことが突然気になり、かたをつけるつもりで完成を目指して作業を再開しました。とは言え、なぜ長いこと放置されていたかと言うと、「組み立てが面倒」(素人さんお断りな感じ)だったからでした。

購入した直後から説明書を読みながら必要なものを買いそろえて、組み立て作業をしていく中でいろいろとつまずいて、しばらく作業台の隅に放置して、ふと思い出して作業を少し進めてはまたつまずいて、といったようなことを繰り返していました。購入から何年が経っただろうと記憶が曖昧になっている状況です。

習慣として、自分の作業履歴をメモに残していたのですが、最後の作業時期は新しい家に住み始める前のことで、引越し作業の中でも気にはなっていたのですが、いつでも続きができるように目の届く範囲に置いていました。そんなわけで、何度目かの「重い腰」を上げて作業の続きをしていきたいと思います。以下、書き留めていた記録をもとに、整理してまとめていきたいと思います。

1つ目のつまずきどころとして、ワイルドミニ四駆の本体を切断しなければならないというところ。試行錯誤の末に、Pカッターとリュータ、ニッパーを使って切断作業をしました。マニュアルとにらめっこをしながら、切断する場所や効率よく切る方法を考えて切断していきます。削りカスが飛び散るので、段ボール箱に半透明なビニール袋(45L)を掛けてその中で作業をしました。材質は硬くないので切ること自体は難しくないのですが、構造が面倒なことになっていて、どのラインで切るか決めるのが難しく感じました。途中、リューターの故障などハプニングはありましたが、残りをPカッターとニッパーで切断してヤスリでバリ取りをして切断作業は終了しました。

次にMKZ4の制御基板に電子部品をはんだ付けしていきます。ESPRESSIF SYSTEMSのESP-WROOM-02モジュールを載せるのが一番大変でしたが、後はそれほど難しくないので説明書の通りにやればできると思います。表面実装部品のはんだ付けは、フラックスを塗った方がはんだが乗りやすいです。その後、無水エタノールで洗浄してキムワイプとブラシ(ナイロンのもの)で洗浄しました。簡易な顕微鏡のようなものがあると、はんだ付けの状態を確認することができるので便利です。
#私は、USB接続のマイクロスコープを使っています。

はんだ付けの手順としては、オーソドックスに背の低い部品から徐々に高い部品へと取り付けていくと良いと思います。1000pF(102)のセラミックコンデンサは、パスコンとしてモータにはんだ付けします。動作確認がしやすくなるように、制御基板の作成と配線、ミニ四駆の組立作業を進めていく感じが良いと思います。

さて、作業の記録が長くなってきてしまったので、とりあえず続きは次回ということにしたいと思います。

〈参考資料〉

「ワイルドミニ四駆をiPhoneからリモートで動かす」

2025年5月11日日曜日

リコーダー風の電子楽器を購入してみた

最近、吹奏楽器の中でも「笛」と呼ばれる形状の楽器にアンテナが高くなっています。もともと金管楽器の指導をしていた頃にも、より簡単に音が出る「笛」には興味があって、民族楽器的なものも含めて気になったものを買っていました。
#そう言えば、だいぶ昔に欲しくて欲しくて購入した「オカリナ」をすぐに落として割ってしまったかなり残念な記憶が蘇ってきました。orz

笛型の吹奏楽器の1つである「ウィンドシンセサイザー」は、私自身にとっても長年の憧れなのですが、価格の問題がブレーキになってなかなか手が出せずにおりました。もともとは「リリコン」と呼ばれた製品がありましたが、現在ではAKAIEWI(Electronic Wind Instrument)シリーズが一番有名でしょうか。この分野は昔から一定の需要があるらしく、文字通り「息の長い」製品となっています。一方、「ブレス・コントローラー」というシンセサイザーの周辺機器的なものもあって、打鍵ではなく吹奏でシンセサイザーの音を鳴らす(鍵盤は音程を選ぶだけ)ことにも需要があるようです。(こちらは「鍵盤ハーモニカ」の電子版のようなイメージです)いずれにしても、費用対効果を考えるとなかなか手が出ず、齢ばかりを重ねていました。

そんな中、Amazonで「Electric Blowpipe」という、1万円を切る価格ながらリコーダーのように演奏ができる電子楽器を見つけて衝動買いしてしまいました。英語的にはあまり楽器らしくないネーミング(Blowpipe:「吹き矢」とか「火吹竹」のような道具の意味らしい)の中華製電子楽器です。パッケージには型番らしきものはなく、一番大きく書かれているのは「MADE IN CHINA」という文字で、購入の決め手はMIDIにも対応していると謳っていたことでした。
#中華製品あるあるですが、製造元だとか正式名称だとか型番だとかを探していると、同じような製品の情報が大量に出てきて収集がつかないのに肝心の知りたいことが全くわからない状況です。

パッケージの中に入っていたのは、本体と専用の布袋、シリコンマウスピース、説明書(英語)だけで非常にシンプルです。機能もかなりシンプルで、「音を出す」ということだけであれば、電源を入れて息を吹き込めば音が出ます。指使いもシンプルだし、吹奏による音量の変化もわかりやすいと思いました。意外に思ったのは、そこそこの重量があること。筐体が金属でできているようなので、その重さがほとんどなのかもしれませんが、本物のリコーダーに比べたらかなりずっしりと重たいです。800mAhリチウムバッテリー内蔵なので、充電して使うことになります。

13の音色で演奏ができることになっていますが、音色リストは以下のとおりです。

〈Tone List〉

  • 01 Alto Saxophone(アルトサックス)
  • 02 Soprano Saxophone(ソプラノサックス)
  • 03 Morin Khuur(モリンホール)
  • 04 Clarinet(クラリネット)
  • 05 Hulusi(フルス)
  • 06 Trumpet(トランペット)
  • 07 Suona(ソーナー)
  • 08 Ocarina(オカリナ)
  • 09 Flute(フルート)
  • 10 Bamboo Flute(DIZI:ディジ)
  • 11 Recorder(リコーダー)
  • 12 Violin(バイオリン)
  • 13 Erhu(アルフー:二胡)

音色のチョイスは独特なものを感じましたが、民族楽器も好きな方なので(再現性は確かめようがないものの)嫌いじゃないと思いました。肝心の演奏感としては、吹奏楽器として吹いた感じと音の出方(反応)には、違和感はありませんでした。運指への反応も悪くない。唇を締める圧力までは感知していないので、電子リコーダーと呼べばよいでしょうか。欲を言えば、両手の親指だけで楽器を支える状態になったとき、楽器自体が重くて落としてしまいそうになるので、首にかけるストラップのようなものがあったら安心して演奏できるかなと思いました。

もう一つ難点を言うと、裏面側の操作スイッチ(押しボタン)が直感的にわかりにくいこと。電源マークのボタン以外は、1〜9の数字が刻まれているボタンに機能が割り振られているのですが、簡易な説明書を読むまではそれぞれのボタンにどんな機能が割り振られているのかわかりません。2桁の7セグLEDで何かを表現しようとしているようなのですが、数字とアルファベット2文字の略語のような表現なので、割り振られている機能を理解していないと意味がわからないと思います。そもそも1〜9の数字が刻まれている意味がなく、何か別の製品のボタンを使い回している(だから安い)のではないかとさえ思ってしまいます。

とは言え、1万円以下でこのレベルの電子楽器が手に入ることにはちょっと驚きを感じました。まだMIDIのテストはしていませんが、どんなことができるのか、期待半分怖さ半分で試していきたいと思います。

2025年5月4日日曜日

Raspberry Pi Pico 2を使ってみた〜ビジュアルプログラミング

前回の続きです。Raspberry Pi Pico 2を使ってフィジカル・コンピューティングの動作確認をしていきます。前回は、Thonnyを使ったMicroPythonプログラミングでの動作確認をしました。今回は、ビジュアルプログラミング環境での動作確認をしたいと思います。以前の記事(「Piper Make編」「BIPES編」)で、Piper MakeBIPESでの動作確認をしましたが、今回もこの2つのサイトを利用してビジュアルプログラミングの動作確認をしていきたいと思います。
#今回も動作確認に使うPCは、Linux Mintで動かしている自作PCを使用します。

〈Piper Make編〉
先ほど紹介した拙Blogの記事を参考にしながら、Piper Makeで動作確認をしてみました。まず、ChromeブラウザーでPiper Makeのサイトを開いて「CREATIVE」モードにしておきます。Piper Makeは専用のファームウェアを使用するので、「SETUP MY PICO」ボタンをクリックしてセッティングを開始します。Pi Picoを(ストレージモードで)PCに接続したときは、「RPI-RP2」という名称のUSBストレージデバイスとして認識されたのですが、Pi Pico 2では、「RP2350」という名称になっていました。とりあえず、この中にファームウェアをインストールするように選択をして、セットアップを終えました。

Pi Pico 2(RP2350)の中には、「piper_circuitpython.uf2」というファームウェアが書き込まれたようですが、自動で再起動されることはなく、手動でUSBケーブルを抜いて再度PCへ接続してみました。この状態でPi Pico 2をPCに接続しても、基本的には何も起きません。そこで、Piper Makeの「CREATIVE」モードから、過去に自分が作ったLチカプログラムを開いて動作確認を進めていきます。プログラムを開いたウィンドウの左下に「CONNECT(接続する)」ボタンがあるのでこれをクリックします。すると、シリアルポートが読み取られて接続できるPi Picoが表示されるはずなのですが、「対応デバイスが見つかりませんでした。」と表示されてPi Pico 2は認識されていないようでした。

Piper Makeを詳しく調べていくとPi Pico 2での動作についての記述が見当たらず、今後のことはわかりませんが、現状ではPi Pico 2には対応していないようでした。

〈BIPES編〉
気を取り直して、次にBIPESでの動作確認をしていきたいと思います。こちらも先ほど紹介した拙Blogの記事を参考にしながら作業を進めていきます。BIPESは、内部的にMicroPythonを使うので、動作確認に使用するPi Pico 2にはあらかじめPi Pico 2用のファームウェアを入れてセットアップをしておきます。

BIPESのサイトを開いて、接続するデバイスを選ぶところで嫌な予感がしました。「Raspberry Pi Pico 2」は、選択肢にありません。仕方がないので、ダメ元で「Raspberry Pi Pico」を選択して、デバイスの「Connect(接続)」ボタンをクリックしてみました。すると、シリアルポートに「tty」から始まる接続先が現れたので、これを選択してから「接続」ボタンをクリックしました。
#接続先のポートがわからない場合は、Pi Pico 2をつないでいるUSBケーブルを抜き差しして、消えたり現れたりするポートを確認すると、接続先のポートを見つけることができます。(ターミナルコンソールを開いて確認するより速い)

以前に作っていたLチカプログラムがそのまま残っていたので、少々ドキドキしながら「RUN(右向き三角マーク)」ボタンをクリックしてみたところ、Lチカ動作確認ができてしまいました。期待をしていなかったので、思わず「動いた!」と声を上げてしまいました。
#ここで使ったLチカプログラムも先ほど紹介した拙Blogに記載していたものです。

ということで、Pi Pico 2でビジュアルプログラミングをやりたい場合は、BIPESならできるということがわかりました。日本の小学校でこれを使いたいという場合には、やはり英語表記がネックになると思います。これをよい機会と捉えて、「英語の学習も兼ねて」なんて思ってくれる方がどのくらいいるかわかりませんが、個人ベースでなら小学生でもチャレンジしてくれる子がいてもよい気がしています。こういう攻略を楽しめる子が増えてくれると嬉しいのですが…。

「Raspberry Pi Pico 2を使ってみた」

2025年4月26日土曜日

Raspberry Pi Pico 2を使ってみた〜Thonny(MicroPython)プログラミング

以前の続きです。これまでRaspberry Pi Picoでやってきた動作実験を、Raspberry Pi Pico 2でもやってみようと思って復習を兼ねて取り組んでいます。今回は、Thonnyを使ってMicroPythonでのプログラミングについて動作確認をします。

はじめに、Pi Pico 2をMicroPythonでのプログラミングに対応させるために、ファームウェアを変更する作業を行います。各Pi Picoに対応したファームウェアファイル(「.uf2」ファイルなので他の実行ファイルと区別はつきにくい)は、以下のところからダウンロードすることができます。

今回は、Pi Pico 2を使いますので、対応したファームウェアファイル(.uf2)をダウンロードしておきます。これをPi Pico 2にコピーするために、USBケーブルでPi Pico 2とPCを接続します。その際に、(他のPi Picoシリーズと同じく)接続するPi Pico 2が一度も実行ファイル(.uf2)を入れた(コピーした)ことがなければ、PCに挿しただけでUSBストレージデバイスとして認識されます。この「USBストレージデバイス」として認識されているところに、一度でも実行ファイル(.uf2)を入れた(コピーした)ことがある場合は、それがC/C++でのプログラミングであってもMicroPythonでのプログラミングであっても、それ以降は「BOOTSEL」ボタンを押しながら接続しないと、USBストレージデバイスとしては認識してくれなくなるので注意が必要です。
#ちなみに、今回もPCはLinux Mintで動かしている自作PCを使用して動作確認しています。

USBストレージデバイスとして認識されたPi Pico 2に、MicroPythonでのプログラミングに対応させるファームウェアをコピーすると、自動的にPi Pico 2がリセットされてUSB接続された状態になります。これでPi Pico 2側のセットアップは完了です。続けて、Thonnyを起動すると、既にPi Pico用のセットアップを済ませていたため何の問題もなく接続されました。(詳しい設定方法は、拙Blogの過去記事を御覧ください)

あとは、とりあえずLチカプログラム(.py)を開いて「実行」ボタンをクリックするだけです。ということで、あっけないほど無事にLチカ実験が完了して動作確認ができました。試しに、Pi Picoに挿し替えて同じようにLチカできるか確認しましたが、Pi PicoでもPi Pico 2でもThonnyが自動的に認識して同じLチカプログラムが動くことを確認しました。挿し替える際は、一度「停止」ボタンをクリックしてからUSBケーブルを抜き、挿し替えたらもう一度「停止」ボタンをクリックすると自動的に認識してくれます。この方法でうまくいかなかったら、Thonnyを終了させてから挿し替えて、再びThonnyを起動すれば問題ないと思います。

C/C++でやったときは、環境を整えるためにいろいろと試行錯誤しましたが、あまりにも簡単に動作確認することができてしまい、Pi Picoとの共存も簡単にできることがわかりました。初学者用としては、こちらの方がかなり良いと思いました。

〈参考Lチカプログラム(MicroPython)〉

from machine import Pin
import utime
led = Pin(25, Pin.OUT)
while True:
led.toggle()
utime.sleep_ms(400)

「Raspberry Pi Pico 2を使ってみた」

2025年4月17日木曜日

LP-838(Lepy)2.1 chのD級アンプを試してみる

これまで、様々なスピーカーユニットを使ってスピーカーの自作に挑戦してきましたが、サブウーファーを試すためには、Amazonで購入した「ZK-MT21(←YouTube動画)」という2.1 ch対応のパワーアンプを使っていました。これはこれで、コンパクトで使い勝手が良いので重宝しているのですが、YouTubeで「Lepy」と刻印されたHi-Fi 2.1 chステレオパワーアンプがあることを知って、気になったので購入してしまいました。

今回購入したのは、「Lepy LP-838(←YouTube動画)」という割とスタンダードなもののようですが、同じ「Lepy」でも型番の違うものや「Lepy」ではなく「Lvpin」や「Lepai」となっているものなど、いろいろあるので調べてみました。型番違いは機能や形も違うので需要に応じて選べば良いようですが、「Lepy」というのがブランド名でBukang Technologyという会社の製品のようです。元々は、「Lepai」というブランド名で製造・販売されていたものが「Lepy」へとブランド名を変更したとのこと。「Lvpin」は別会社のコピー品とのことでした。
#「Lepai LP-2020A+のコピー品caiyun Lvpin CY-20Aについて」や「中華アンプのおすすめ人気ランキング【2025年】」を参考にしました。

また、同じ「Lepy LP-838」でも中身が違うものがあるようで、いくつかの分解動画を見比べて自分が買ったものも中身を確認してみましたが、同じ「MADE IN BUKANG(基板にシルク印刷されている)」でもアンプICやスイッチなどの構成が違っているようでした。そもそも、コピー品が多く出回る中華製品ですので、刻印されているものが本当かどうかも含めて疑っておく必要はあるかもしれません。(知らんけど)一応、簡単な仕様について以下にまとめておきます。

〈Lepy LP-838〉

  • 対応するスピーカーインピーダンス…4〜8Ω
  • オーディオ入力…【リア】RCAオーディオピンジャック・【フロント】3.5 mm TRSオーディオジャック(何故か「MP3」と刻印されている)
  • スピーカー端子出力…15W×2 ch(ステレオ出力)
  • ネジ端子出力…20W×1 ch(サブウーファー出力)
  • 電源入力…DC12〜14.4V(最大3A)
  • アンプIC…TDA7266(←Datasheet)

#基板を確認して、「TDA7266」とシルク印刷されているのを確認しましたが、これを信頼するかしないかは自分次第ということになります。

以前使っていたZK-MT21の方は、以下のとおりです。

〈ZK-MT21〉

  • 対応するスピーカーインピーダンス…4〜8Ω
  • オーディオ入力…3.5 mm TRSオーディオジャック
  • ネジ端子出力…50W×2 ch(ステレオ出力)+100W×1 ch(サブウーファー出力)
  • 電源入力…DC12〜24V(最大9A)
  • アンプIC…CS8673E(←Datasheet)

#「ZK-MT21 2.1 CHANNEL 200W CLASS D (CS8673E) BLUETOOTH AMPLIFIER WITH AUXILIARY INPUT TEST & REVIEW」(←YouTube動画)

使ってみての感想ですが、ZK-MT21は「FREQ(Frequency)」の調節ができるようになっているのですが、LP-838だとその調節ができないことがネックだと感じました。LP-838では、サブウーファーへ出力する周波数をいじれないので、「BASS」の音量とサブウーファー音量だけで調節する必要があります。そのため、かなり考えてあれやこれやと確かめながらセッティングしないと満足できる音にはならないように思いました。

総じてではありますが、クラシックのような低音も複雑に音が重なる楽曲では調節が難しく、電子楽器を多用する楽曲や小編成バンドのような楽曲では低音の強調が心地よい印象をもちました。スピーカーの組み合わせ方によっても聴こえ方が異なる可能性があるので、さらにいろいろと試してみたくなりました。(まさに「沼」である…orz)

2025年4月4日金曜日

Raspberry Pi Pico 2を使ってみた〜C/C++ SDKでLチカプログラミング

以前に買ったまま放置状態で、昨年あたりから本格的に使い始めているRaspberry Pi Picoですが、その後継機としてRaspberry Pi Pico 2が開発・販売されています。搭載されているチップが、Pi PicoのRP2040(←DatasheetのPDF)からPi Pico 2のRP2350(←DatasheetのPDF)に変更になっていることが大きな違いのようですが、使用感としてどんな違いがあるのか(それほど違いはないのか)確かめてみたいと思います。
#Pi PicoとPi Pico 2の詳しい違いは、Pico Seriseのページにまとまっています。

これまでPi Picoを使って実験的なことをやってきましたが、Pi PicoでできたことがPi Pico 2でもできるかどうか検証してみたいと思います。(その前に、今回購入したPi Pico 2はピンヘッダなしのものだったので、ピンヘッダのはんだ付けもしました)

無駄なこととは思いながら、以前Pi Pico用にLinux Mintで動かしている自作PCで作った、動作確認(Lチカ)するための「blink.uf2」(プログラムファイル)をPi Pico 2に入れてみたらどうなるだろうかと思って、試しにやってみました。(C/C++でのプログラミング環境の作り方の詳細は、拙Blogの過去記事をご覧ください)当たり前と言えば当たり前のことですが、うんともすんとも言いませんでした。Pi Pico用に構築したC/C++ SDKをPi Pico 2に対応したものにするためにアップデートする必要があります。Pi Picoのときと同じように、Linux Mintの自作PC上でPi Pico 2に対応したC/C++ SDK環境を整えたいと思います。

ちょっと調べてみると、「pico-sdk」の中にRP2350に対応したsrc(source)のセットがないとダメだということがわかりました。ネットの情報を頼りに自分がインストールした「pico」フォルダを開いて「pico-sdk」→「src」とフォルダを開いてみると、確かに「rp2350」フォルダはありませんでした。そこで、「ターミナル(端末)」を起動して、「pico-sdk」フォルダに移動してからC/C++ SDKのアップデートを行いました。手順は以下の通りです。
#今回は、デバイスビジネス開拓団さんの「Pico三昧(22) Raspberry Pico 2、C/C++ SDKで吉例Lチカ」を参考にしました。

$ cd pico/pico-sdk/
$ git pull

しばらく待つとアップデート作業が終わって「src」フォルダ内に「rp2350」というフォルダが出来上がっていました。(他にも増えたところはたくさんありましたが説明は割愛します)これでPi Pico 2に対応したC/C++ SDKが整ったことになります。早速ですが、Lチカの実行ファイル(.uf2)を作ってみたいと思います。「cd」コマンドで元のユーザーディレクトリのトップに移動してから、以下のようにコマンドを打ち込みます。

$ cd pico/pico-examples/build/
$ export PICO_SDK_PATH=../../pico-sdk
$ cmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..

ここまでできたら、あとは「blink」フォルダ内で「make」するだけのはずです。(上記のコマンドに続いて作業を行います)

$ cd blink/
$ make -j4

Pi Picoのときと同じようにやってみたつもりですが、エラーを吐いてうまくコンパイルできません。「Makefile」に何らかの問題があるようなエラーメッセージが出ていて、「CMakefile」フォルダに「CMakeError.log」というエラーの内容をレポートするファイルが出来上がっているとも書かれていました。これを見ながら、複数のエラーが発生しているような感じだったので、元々のpico-examplesの更新が必要なのではないかと考えて、gitコマンドでのダウンロード作業からやり直してみることにしました。(この作業は、私の作業環境である「pico」フォルダ内に移動したところから行いましたが、このフォルダ名は任意で構いません)

$ git clone -b master https://github.com/raspberrypi/pico-examples.git
$ cd pico-examples/
$ mkdir build
$ cd build/
$ export PICO_SDK_PATH=../../pico-sdk
$ cmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..

この作業をしているフォルダ内に、既に「pico-examples」フォルダがあると作業はうまくいきません。これまで使っていた「pico-examples」フォルダを残したままだとgit cloneコマンドが通らないためです。(強制的に上書きすることはできるかもしれませんが、ちょっとややこしいみたい…)今後も以前の「pico-examples」を使用する可能性がある場合には、以前のものを別のところに移動させておくと良いと思います。

これで準備が整ったと思いますので、以下のコマンドで再度実行ファイルのコンパイルに挑戦してみます。

$ cd blink/
$ make -j4

これで、無事に実行ファイル「blink.uf2」が出来上がりました。PCにPi Pico 2をつないで(初回はUSBケールでつなぐだけでUSBメモリのように認識しますが、2回目以降は「BOOTSEL」ボタンを押しながらつなぎます)、USBメモリのように開いた窓に「blink.uf2」をコピーすると、自動的にプログラムしたものが動き始めます。少々時間はかかりましたが、無事にLチカ動作実験成功ということになりました。これからは、Pi Pico(無印)の実行ファイルを作る環境との共存が可能なのかを確認したり、Pi Pico 2のThonnyやビジュアルプログラミングへの対応などを一通り確認したりしてみたいと思います。(やることいっぱい思いつくのだけれど、相変わらず時間がない…。orz)

「Raspberry Pi Pico 2を使ってみた」

2025年3月20日木曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜MacBook Proからコントロールする

以前の続きです。(長くなってしまったので、2回に分けました)株式会社アクエストが開発している「音声合成LSI」を秋月電子通商で購入して、使えるように準備するところまで書きました。念の為、「音声合成LSI「AquesTalk pico LSI」」の「ATP3011」と「ATP3012」のデータシートのリンクも再掲しておきます。

前回は、この「ATP3011」と「ATP3012」がMICROCHIPAtmelを買収)のAtmega328をベースにして作られていて、Arduino(及びその互換マイコンボード)のATmega328と載せ替えれば簡単に使えるようになるという情報をもとに準備をしました。秋月電子通商で販売されているAE-Atmegaを使って作った「Diavolino」ベースの自作Arduino互換ボードを引っ張り出してきて、実験環境を整えるところまで書きました。今回は、その続きをやっていきたいと思います。

まずは自作Arduino互換ボードに元々挿していたATmega328Pを慎重に取り外して、ATP3012R5-PU(小型ロボットの音声)に挿し替えました。これをMacBook ProにつないでArduino IDEを起動して音声が出せるか実験をしていきました。大小様々なつまずきがありましたが、最終的には使えるようになりました。注意点を以下にまとめておきます。
#Arduino IDE(実験時の最新版はver.2.3.4)の起動は、配線を済ませてからの方が良いと思います。

  • スピーカーは、アンプを経由するかアンプ内蔵のものを使う。(YAZAWATVR35WHを使用)
    IchigoJam実験をしたときに作ったケーブルでアンプをつなぎました。電源なしで圧電スピーカーをつないでも動きませんでした。(シリアル通信すらできない感じ)
    →ATP3011系は、GNDとDIGITAL 6番にアンプをつなぎます。ATP3012系はGNDとDIGITAL 9番にアンプをつなぎます。
  • ボードを「Arduino Duemilanove or Diecimila」にする。
    ※動作解説動画では、Arduino UNOが使われていましたが、Diavolinoは、Duemilanoveをベースにして開発されたものなので。
  • ポートを「/dev/cu.usbserial-xxxxx(ターミナルから「ls -l /dev/cu.*」コマンドで接続されているシリアルポートを確認できる)」にする。
  • 「ツール」メニューから「シリアルモニタ」を開く。
    ※ここで、シリアル接続の確認もしてくれるので、とても便利です。
  • 改行コードは「CRのみ」を選択する。
    ※ATP3011/3012は、コマンドの最後に「CR」を送らないと実行しない仕様とのことなので。

実は、USBシリアル変換アダプターモジュールでつないだときに、ポートの設定をしようとしたところでつまずきました。元々Prolific社製のPL2303HXというUSBシリアル変換アダプターモジュールを使っていたのですが、これがMacBook Pro(macOS)からはシリアルポートとして認識されないのです。「ターミナル」を起動させて「ls -l /dev/cu.*」で確認しても、接続前と接続後で何も変わりません。しばらく使っていなかったので、ドライバが古くなっているかもしれないと思い、最新のドライバをインストールしてみましたが、認識されないのは変わりませんでした。新しいmacOSでは使えないのだろうと諦めることにしました。

仕方がないので、FTDI社製の(ド定番の)FT232RLを載せたUSBシリアル変換ケーブル(半分自作)を使うことにしました。これを使うと、シリアルポートが認識されて使えそうな感じになったので、テストのためにいくつかローマ字を打ち込んで音声を出させてみたところ、無事に音声が出てくれました。ということで、macOSではFT232RLのUSBシリアル変換ケーブルを使うことにします。
Linux MIntでは、PL2303HXでも問題なく動作してくれました。Arduino IDEは、レガシーIDE ver.1.8.19、最新版IDE ver.2.3.4の両方で動作確認しました。

試行錯誤しながらいろいろやってみましたが、とりあえず音声が出るところまではできました。配線を変更したり、コマンドでエラーが出てしまったりした場合は、無理に作業を続けようとしないでArduino IDEを終了してから、再度起動してシリアルでの接続が確認されてから作業をすると動作が確実になると思います。一つ一つ、自分がやったことを検証しながら問題を解決して行ったので、いちいち再起動するのは面倒ではありましたが、急がば回れということだと思いました。
#アクエストのオンラインデモのサイトで、日本語をAquesTalk Pico用のローマ字表記にしてもらえるのは地味に便利でした。

【前回記事】
音声合成LSI(ATP3011とATP3012)を使ってみる〜まずは基本的な準備をする

2025年3月16日日曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜まずは基本的な準備をする

シンセサイザーのように音を作ることができるICや音を増幅させるアンプICなど、音楽や楽器に関わることを電子的にやってみることが楽しくてアレやコレやと手を出している中で、「音声合成LSI」という物があることを知りました。きっと自分がいろいろやっている周辺にはちらほら見えていたのだろうけれど、これまでは無意識にスルーしていて見えなかっただけかもしれませんが、ふと急に気になりだして調べてみることにしました。一度興味をもってしまうと実験してみたくなるのはいつものことですが、値段が手頃だったこともあって早速購入して試用してみることにしました。

今回購入した「音声合成LSI」は、株式会社アクエストが開発しているもので、秋月電子通商で販売されているものを購入しました。簡単な使い方は、公式Webサイトの「音声合成LSI「AquesTalk pico LSI」」で確認することができます。音声合成LSIの「ATP3011」と「ATP3012」のデータシートも公開されているので、以下にリンクを貼っておきます。

簡単に説明すると、アクエスト社で開発された「AquesTalk」という「日本語音声合成エンジン」をMICROCHIPAtmelがMICROCHIPに買収された)のAtmega328に実装したのが「AquesTalk pico LSI」で、同じATmega328を搭載するArduino(動作解説動画ではUNOを使用)のICチップと載せ替えることで簡単に使うことができるようです。

自宅にはArduino Duemilanoveあたりから、その互換ボードを含めて複数のArduinoがあるのですが、実験的に使うことを考えて、だいぶ昔にAE-AtmegaというArduinoの互換ボードを作るための基板(これも秋月電子通商で購入)で組み立てた自作Arduino互換ボードを使って、この互換ボードのATmega328をAquesTalk pico LSIに換装して音を鳴らすことができるかやってみることにしました。


このArduino互換ボードは、秋月電子通商で購入したAE-Atmegaを使って作りましたが、マイコンボードや電子工作を学ぶために、パーツセットではなく基板と必要な部品を購入して、様々なパターンで試作しながらマイコンボードの構造や作り方、それによってできることを学んでいたものの1つです。ベースとなっているのは、アメリカのEvil Mad Scientist(現在はBantam Toolsに買収されています)で開発・販売されていた「Diavolino」というArduino互換機です。2011年に基板だけを購入して、部品を揃えて何枚か作っていました。
#AE-Atmega基板は、Picotec International Co.,Ltdという台湾と中国にある会社で作られているようで、自宅にはまだ数枚在庫がありました。

UNOとDiavolinoでは、世代から考えてもだいぶ違う気がしますが、Arduinoの設計コンセプトとしては同系統だろうと思ったので、多分大丈夫だろうと考えました。ということで、Diavolinoベースの自作Arduino互換ボードのATmega328と音声合成LSIを載せ替えて実験を進めていきたいと思います。ここまでやって、だいぶ長くなってしまいました。しばらくArduinoをいじっていなかったので、自分で作った互換機も使う予定がないくらいにしまい込んでいました。あっちこっち探し回って実験する環境を引っ張り出してきて、どうにかスタート地点に立ったという感じです。近日中に続きを書きますので、しばしお待ちください。

【次回予告】
音声合成LSI(ATP3011とATP3012)を使ってみる〜MacBook Proからコントロールする

2025年3月2日日曜日

Raspberry Pi Zero 2を使ってみる

約10年前に発売されたRaspberry Pi Zero Wの後継機として、Zero 2 Wが数年前に発売されています。Pi Zeroについては、このBlogでも何度か話題にしてきましたが、久しぶりに後継機が出たので何がどう変わったかを確認したくなり、日本での販売開始から少々時間が経ってしまいましたが、購入して使ってみることにしました。既知のことではありますが、USBコネクタが少なく有線LANも使うことができないなど使い道が限られているため、正直なところ私自身はこれまであまり使っていませんでした。今回、Zero 2 Wとの比較をするために、久しぶりにZero Wを出してきてアップデート作業などのメンテナンスを行いました。(Zero無印の方は、IchigoJam Basicで動かしているので今回はパスです)
#今回の後継機発売は、Zero無印はなしでW付だけみたいです。

Zero WとZero 2 Wの共通する仕様は、本体サイズとI/O周りの数と規格です。この辺りは、これまでのZero Wユーザーが使用している周辺機器との接続を考慮して、置き換えがスムーズに行くように配慮されたのではないかと思われます。対応する無線LANの規格も同じですが、Bluetoothは4.1対応から4.2対応になっているようです。その他で仕様が変わったところだけをまとめると以下のようになっています。

〈Zero W〉

  • Broadcom BCM2835(Single core 32 bit SoC…ARM1176JZF-S(ARMv6)1 GHz)
  • 内蔵メモリ512 MB DDR2 SDRAM
  • micro USB電源(5 V/1 A)
  • CSI カメラコネクタ

〈Zero 2 W〉

  • Broadcom BCM2710A1(Quad core 64 bit SoC…Arm Cortex-A53 1 GHz)
  • 内蔵メモリ512 MB LPDDR2
  • micro USB給電(5 V/2.5 A)
  • CSI-2カメラコネクタ

#micro USBとmini HDMIだけでなく、HAT互換40ピンヘッダも共通仕様です。GPUのVideoCore IVも同じようですが、バージョンアップはされているようです。

本音を言うと、USBはUSB-Cの方が便利だし、HDMIもminiではなくmicroの方が扱いやすいしという問題点は感じるところですが、micro USBとmicro HDMIだと挿し間違いが発生しそうだから変更するならUSB-Cとmicro HDMIでお願いしたいところです。

問題提起はさておき、Zero 2 Wのセッティングを進めていくことにします。やることは他のRPiと大きくは変わらず、「Raspberry Pi Imager」を使って起動microSDカードを作るところから始めます。今回は、在庫していた東芝製の16GBのものを使いました。64 bitのRaspberry Pi OSをRecommendされるので、これを使って起動microSDカードを作成し、Zero 2 Wに挿して起動します。RPi 5に比べるとかなりもっさりとした感じですが、これは単にCPUが非力だからなのか、メモリ512MBでは少なすぎるということなのか、microSDカードとの相性問題なのか、諸々の複合的な問題なのかなどなど、はっきりとした原因はわかりません。まぁこんなものだと思って使い方を選んで使うというのが正解だと思います。
#Zero Wの方は、32 bitがRecommendされました。メンテナンスがてら、Zero WのOSも最新の32 bit版(Raspbian GNU/Linux 12 (bookworm))をインストールしました。動作感は、Zero 2 Wとあまり変わらないかな…。

Zero 2 WのRaspberry Pi OSのバージョンを確認するために「$ lsb_release -a」コマンドを実行すると、「Debian GNU/Linux 12 (bookworm)」になっていました。現時点で最新のOSで動かせることがわかりました。とは言え、できることが限られていることを前提にして、実験してみたいソフトだけ追加でインストールしておきました。

〈「Recommended Software」より〉

〈「add / Remove Software」より〉

非力なのでそれなりに時間はかかりましたが、どうにかインストール作業を終えました。Zero Wの方も、32 bit版の同じソフトをインストールして、ほぼ同じことができるように設定をしました。今後の活用を考えて、Zero W/2 Wを他のPCなどからコントロールできるようにするのが実用的なのではないかと考えています。

2025年2月17日月曜日

Raspberry Pi 5と歴代Raspberry Piの使い道を考える

前回の続きです。約1年前に重い腰を上げて歴代RPiのメンテナンスを行いましたが、Raspberry Pi 5を購入してセットアップしたことをきっかけに、過去のRaspberry Pi(RPi)たちでも快適に使える状態を維持するにはどうしたらよいか考えてみました。Scratch 3などのビジュアルプログラミング環境を活用したい場合には、過去のRPiではかなり重くなりますので新しいRPi 5の出番だと思います。しかし、世代に合わせたOSを入れて、軽い作業のみをするか単一の機能に絞り込むかといった工夫をすれば、まだまだ使い道があるように思います。

以前のメンテナンスの際に歴代RPiで使っているOSを確認しましたが、RPi初代とRPi+はあえて古いOSを残す(ソフトの動作確認や作った環境をキープするため)として、RPi 2以降は新しいOSにしてしまって良いと思っています。中でも、3台もあるRPi 3にはしっかり仕事をしてもらおうかなと。ということで、歴代RPiのメンテナンスをサクッと終わらせて、3台のRPi 3のうち1台を実験台にすることにして、OSのインストールからやってみることにしました。

いつものように、Raspberry Pi Imagerを使って、microSDカードに最新のOSを入れます。Recommendに従って、64 bitのOSを入れることにしました。起動microSDカードをRPi 3に挿して起動すると、思ったよりスムーズに起動してくれて過去のRPiでも快適に動作するような調整がされているのかもしれないと思いました。「$ lsb_release -a」コマンドでOSのバージョンを表示させると「Debian GNU/Linux 12 (bookworm)」となっていました。RPi 5のときと同じように、表示を英語表記から日本語表記に設定して、指示に従って再起動しました。次に、この実験台RPi 3に以下のソフトをインストールしました。

〈「Recommended Software」より〉

〈「Add / Remove Software」より〉

実のところ、RPi 3で最新の64 bitOSがまともに動くとは思っていなかったのですが、しっかり動いてくれたのでちょっと感動してしまいました。職場でデジタルサイネージによる情報発信を考えているのですが、RPiならうってつけだと思っています。(以前の職場でも同じような取り組みをしていたので)私がいる間は、私物のRPi持ち込み(ネット接続は不可)でやってみるという手もあるかなと思っています。その他にも、どんな使い方ができるか考えてみたいと思います。
#5V 3AのUSB電源を使っても、「Low voltage warning」が出てしまうのは、どうしたものかと思っています。

(本当は、Raspberry Pi Zeroの方が、安いし用途を絞って使うには良いと思うのだけど、学校予算で買ってしまったら引き続き使ってもらうのは難しいかもしれないし、後任の負担になるようなことはしたくないし…。一方で、この程度のものを使いこなせないというのも情けないとは思うし、でもそれを強要するのは違うとも思うし…)

2025年2月8日土曜日

Raspberry Pi 5を使ってみる

世界的なインフレ傾向や円安の影響もあってか、価格が上がって気軽に購入できない感じになっているRaspberry Pi 5でしたが、ほぼ全世代のRaspberry Pi(RPi)を購入している私としては逡巡する気持ちもありつつ、発売開始から供給が安定するまでしばらく待っていました。先日、我慢の限界に足して半分衝動的に購入してしまいました。購入したのは、コスパ重視で4 GBモデルにしましたが、Smrazaのアルミのヒートシンク兼ケースと5.1V-5.0A対応のACアダプターも一緒に購入して1.4万円程度でした。(ケースは割引がありました)
#詳しくは、過去のRaspberry Pi関連記事もご覧ください。

OSを入れるmicroSDカードは、自宅に在庫していたKIOXIAの32 GBのものを使うことにして、MacBook Proにインストールしてある「Raspberry Pi Imager」を使ってOSイメージをこのmicroSDカードに焼きました。今回使用するOSは、64 bitのRaspberry Pi OSにしました。焼き上がったmicroSDカードをRPi 5に挿して、モニタ、マウス、キーボード、LANケーブルをつないで起動しました。体感ではありますが、起動までの動作は速くなっているように感じました。ケース付属のFANも静音性が高く、起動後は最小限の動作になるようでしばらく止まっていました。ケース自体がヒートシンクになっているものなので、ぬるめのカイロくらいには温かくなっていました。

さて、起動まではスムーズだったのですが、デフォルトの設定が英語なため日本語に設定を変更したいと思います。デスクトップの左上のRaspberry Piメニューから、「Settings」→「Raspberry Pi Configuration」を起動して、「Localisation」内の「Locale」を「ja(Japanese)」←つまり日本語に、「Country」を「JP(Japan)」←これも日本に設定しました。すると、それに合わせてTimeゾーンも「Asia」「Tokyo」と自動的に変更されました。「Keyboard」の設定は、日本語キーボードになっているかと思いましたが、実際に接続しているUSキーボードになっていました。これは、USキーボードが認識されているのかと思いましたが、よく考えたらRaspberry Pi Imagerで設定されていました(^^;;;。これらの設定を終えて「OK」ボタンをクリックすると、再起動を求められるので指示に従って再起動します。すると、メニューを含めてほとんどが日本語表示に設定変更されました。

確認のため、「$ lsb_release -a」コマンドでOSのバージョンを表示させると「Debian GNU/Linux 12 (bookworm)」となっていました。再起動をしたタイミングでWindow上部のメニューバーにアップデートがあることを示すアイコンが表示されていることに気づいたので、このアイコンをクリックしてアップデート作業を行います。これはかなり時間がかかりましたが、しばらく放置して終わるのを待ちました。途中から、流石にヒートシンク(ケース)が熱くなってきたので、FANも回り始めました。アップデートが終わったところで、「Recommended Software」から以下のソフトをインストールしました。

これらを選択したら、「Apply」ボタンをクリックします。すると、ダウンロードが始まってインストール作業が進んでいきます。これもやはり時間がかかるので、別のことをしながら気長に待ちました。新しい環境なのでちょっと欲ばってインストールしてしまいましたが、何とかインストール作業を終えることができました。続けて、さらに追加したいソフトについて「add / Remove Software」からインストールします。今回追加でインストールしたのは以下のものです。

こちらもソフトを検索してチェックボックスにチェックを入れて、「Apply」ボタンをクリックするとまとめてインストールが始まります。ちょっと違うのは、このインストール作業にはパスワードが求められることです。パスワードの設定は、「Raspberry Piの設定」から「パスワードを変更」を選択して設定することができます。パスワードを設定してインストール作業を終えました。それぞれ動作確認してみましたが、起動については問題なくできました。ここでもやはり動作が速いと感じました。

今回は、RPi 5を使える状態にまでセットアップしましたが、これまでに購入してきている初代からのRPiたちをどのように活用していくかを考えなければならないと思っています。古いものにはより軽いOSを入れて、使い方を限定したら快適に使えるのではないかとか、そうするためのOSの選び方や特化させる機能や使い方をどうするかとか、あえてGUIの環境を捨ててCUIだけ、あるいは、ネットワークからアクセスして動かすだけにしてしまうとか、アイデアはいろいろと出てくるのですが…。

2025年2月3日月曜日

12平均律を鳴らすプログラムについて考える

これまでの続きです。Raspberry Pi Picoを使って、音を鳴らすこと(楽曲の演奏)ができるところまではやってみましたが、これも以前IchigoJamで「(PC用)キーボードを鍵盤のように使って音楽の演奏をする」ことにチャレンジしたように、各キーに任意の音を割り振って楽曲の演奏ができるようにすることができないか、そのプログラムはどう書いたらよいのかということについて考えています。

キーボードの各キーに1音1音を割り当てるのは、力技ではあるものの可能であることは想像ができます。しかし今回は、できるだけスマートにプログラムを書くことを目標に考えていきたいと思っています。そのため、「12平均律の式をプログラムに活かす」ことを目指し、12平均律の仕組みや音の周波数はどのような式で表せるのか、そしてそれをプログラムとして書き表せるのかを検証することにしました。
#以下、わかっている人には当たり前の話が続きます。広い心でご覧ください。(^^;;;

はじめに、「A*2^(n/12)」を使って12平均律の音階をExcelでグラフ化してみました。(「A=440」としてセルに入力した値を参照させ、nはAを0としてAから半音上を1、全音上を2…と表したセルを参照させた)すると、見覚えのある曲線のようなものが見えてきます。すっかり忘れていたので、記憶を頼りに「〇〇曲線」とか「〇〇関数」とか、いろいろなキーワードでGoogle先生に尋ねてみました。

すると、当たり前ではありますが「y=a^x(aのx乗)」の描く曲線にたどり着きました。「指数関数」というやつですね。昔学んだことを思い出してきました。以前にPicoで音を鳴らしたときのMicroPythonでのプログラムの中に、「ahz*(2**(2/12))」や「ahz * (2 ** (3/12))」のような表記をしましたが、「ahz」がA4の周波数を表していて、それに「2の(2/12)乗」や「2の(3/12)乗」をかけるという計算をしています。もう少し汎用的な式で表すと「A[i]*2^(n/12)」というような式になると思います。「i=4」なら「A[4]=440」、「i=3」なら「A[3]=220」となるようにプログラムして、「n」の値を「0」〜「12」までの数値で変化させれば、音階に必要な周波数が得られると考えました。

Excelで作った表には、以前紹介した「12平均律と周波数」で示されている数値と同じ周波数値が並びました。第1段階はクリアできました。しかしこれだと、A[i]の値をいちいち用意しなければなりません。そこで、「A[i]*2^(n/12)」(0≦n≦12)という考え方を改めて、初項の「ahz=440」だけを決めて、「ahz*2^(z/12)」(z=整数)という数式で考えることにしました。「z」には、12を超えた数を入れたり、0よりも小さい負の数を入れたりしても、「A4=440Hz」からの音階的な距離(1あたりの変化量は半音)で表現できることがわかり、実際にExcelで表を作って平均律の周波数を得ることができることも確かめました。

MicroPythonでのプログラミングでは、「ahz*(2**(z/12))」のように表現すればよいことになります。この関数に、「A4」の距離を「0」として、そこからの音階的な距離を表す数値「z」を入れると目的の周波数が得られることになります。これならば、「ahz=442」にしたとしても、12平均律を簡単に作ることができるはずです。

試しにプログラムを作ってみているのですが、どうもうまく動かなくてまだ試行錯誤中です。うまくいったら、失敗の原因も含めてお知らせできればと思っています。