スキップしてメイン コンテンツに移動

投稿

12月, 2018の投稿を表示しています

Blue Pill FX Projects~デジタルディレイ~

■$2の格安マイコンボードBlue Pill STM32を使って、E.ギター用のデジタルディレイを作りました。 モノラル-シングルエフェクトです。ノーマルディレイ、アナログディレイ、リバースディレイのどれか1つをトグルスイッチで切り替えられます。 ・最長ディレイタイム        ・ノーマルモード : 425ms (周波数特性:7kHz)       ・アナログモード : 800ms (周波数特性:1.5kHz)       ・リバースモード : 420ms (周波数特性:7kHz) ・消費電力 DC9V 55mA 音は普通のディレイです。ノーマルモードの周波数特性が7kHz(-6db)なのでBBDやPT2399よりはクリアな音です。S/NはPT2399ディレイと同じくらいです。 このデジタルエフェクターに使用した小型のマイコンボードです。海外のホビーマイコンユーザーの間でBlue Pill(青い錠剤)と呼ばれているものです。大きさ23mm x 55mmの基板でエフェクターケース(1590B/TD6-11-3)に余裕で入ります。Aliexpressなら$2(+送料)で手に入ります。日本国内ではAmazonやaitendoで取り扱いがあります。米国ではebayで見つかります。"STM32F103C8T6"で検索します。  マイコンボード のスペック   ■STMicroelectronics製STM32F103C8T6(Cortex-M3 32ビットARMマイコン) ■動作クロック 72MHz ■プログラムFlash 64k ■SRAM 20k ■ADC 12ビット 2系統 ■DACなし このMCUにはDACが内蔵されていません。そこでDual PWM DACという方法でアナログ信号を出力しています。疑似DACといったところでしょうか。2本の抵抗と1個のコンデンサでデジタル信号をアナログ信号へ変換する面白い回路です。 あと、このマイコンボードの他にプログラムを書き込む為のプログラムライターが必要になりますが、詳しくは別の記事で書いているので参照してください。プログラムライターもAliexpressでなら$2程度で入手できます。

メディアンフィルタ

Blue Pill STM32のADCで可変抵抗の電圧値を得るプログラムを作ってみました。得られたデータをパソコンでプロットしてみると(Arduinoのシリアルプロッタが便利です)、かなりノイズが乗っていることが分かりました。たとえばこの電圧値でディレイエフェクトのディレイタイムをコントロールするとディレイタイムが小刻みに変動するので変調が掛かったような音になってしまいます。プロットしたデータをよく見ると一定周期で急峻なピーク性のノイズが入っていることが分かりました。なぜそのようなノイズが入ってくるのか?はとりあえず置いといてw、そういったノイズにはメディアンフィルタが効くことは周知です。ネットを検索すると 3×3メディアンフィルタの高速アルゴリズム https://www.ipsj.or.jp/award/9faeag0000004f1r-att/LI_9.pdf というものが見つかりました。アルゴリズムの解説だけでサンプルコードが無いのでCで書いてみました。 サンプルコード https://drive.google.com/open?id=1sgfnKE-feYtykObY0WH8G4p-XPsWaF90 サンプルコードは画像用ではない一般的な9個のデータ用のメディアンフィルタの実装です。アルゴリズムの解説に沿ったプログラムの流れにしたのでアルゴリズムの解説と合わせて見てもらうと分かり易いです。 サンプルコードは9個のバッファにランダムな数値を入れてそれを並べ変えて中央値が取れていることを確認するだけの単純なものです。 クイックソートと比べて約2.5倍くらい速くなりました。これでスパイク性のノイズはきれいに取れましたが全てのノイズが消えることはありません。メディアンフィルタが速くなった分、さらに平均化フィルタも追加したところかなり安定したデータになりました。ノイズは3/4096くらいまで抑えられました。0.07%ですからまずまずでしょう。

Blue Pillマイコンボードへプログラムを書き込む (2) オプションバイト

どうしてもプログラムが上手く書き込めない時はオプションバイトを確認してください。Blue Pillマイコンボードと 接続を確立した状態 でOBボタンをクリックします。 Read Out Protection はA5に設定します。 User Configuration は全てチェックを入れてください。 User Data はData0, Data1の両方を0xffにしてください。 Write Protection は全てチェックを入れてください。沢山ありますがスクロールバーでスクロールして全て確認して下さい。 オプションバイトを変更したらApplyボタンをクリックしてBlue Pillマイコンボードに設定変更を書き込みます。           

Blue Pillマイコンボードへプログラムを書き込む (1)

 STM32CubeProgremmer  Blue Pillマイコンボードへブログラムを書き込むためには、まず書き込み用のソフトウェアが必要です。今回はSTマイクロ社の純正ソフトウェアSTM32CubeProgremmerを使います。このソフトウェアはSTマイクロ社のサイトからダウンロードできますが、ダウンロードする前にユーザー登録が必要になります。登録は無料です。利用についても全く無料ですが、ユーザー登録するとその後にちょこちょこと広告メールが送られてくるようになります。それが嫌な方は各自で対処してください。本音をいえばこの程度のソフトウェアはユーザー登録なしで公開して欲しいです。ちなみにフリーウェアではstm32flashというソフトウェアがあるのですが、今のところwin64版しかありません。 STM32CubeProgremmerのインストールは指示に従って行えば特に問題はないと思います。  プログラムの書き込む手順  Blue Pillマイコンボードのジャンパー設定をプログラム書き込みモードへ変更します。 USBシリアルモジュールとBlue Pillマイコンボードをケーブルで配線して、USBシリアルモジュールをパソコンと接続します。 STM32CubeProgrammerを起動してUARTとPortを設定します。 ・Prot番号(COM番号)はパソコンが自動で割り振るので上のスクショと同じ番号にはならないと思います。 ・パソコンでCOMポートを複数使用している場合は、ドロップダウンリストでPort番号を変更してください。 ・Portに"No COM...(No COM Detected)"と表示される場合は、USBシリアルモジュールがパソコンから認識されていないので、ドライバをインストールしてください。 ※充電専用のUSBケーブルは使用できません。100均で買ったUSBケーブルを使っている方は要注意です。 次にBlue Pillマイコンボードのリセットボタンを押してから、STM32CubeProgrammerのConnectボタンを押します。UART接続ではConnect(接続)ボタンを押す直前にマイコンボードのリセットするという約束があるので

USBシリアルモジュールと何ですか?

 プログラムライター  Blue Pillマイコンボードはサウンドプロセッサではなく汎用のマイコンボードです。初期状態では何もプログラムが書かれいないので、ユーザーがプログラムを書き込まなければなりません。ボード上にはマイクロUSBコネクターがありますが初期状態では機能しません。 そこで必要となるのがマイコン工作ではお約束の「プログラムライター(プログラマー)」というマシーンです。ひと昔前ならこのプログラムライターというシロモノは非常に高価で数千円~数万円もしたものです(今でも高いモノはたくさんあります)。マイコンチップが数百円なのにプログラムライターが数万円なんて、ホビーユーザーからすれば詐欺みたいなもんで、これがマイコン入門のハードルを著しく高くしてたのでしたぁぁぁ・・・はぁぁぁ(遠い目)。しかし時代は変わりました。今やプログラムライターも激安の時代となり、たった数ドルで手に入ってしまいます。 ここでは一番安いであろう「USBシリアルモジュール」を使ったプログラムの書き込み方を紹介していきます。  USBシリアルモジュール  USBシリアルモジュールは本来はプログラム書き込み器ではありません。汎用のシリアル通信モジュールで、パソコンとマイコンチップの間で通信 して遊ぶ するためのモジュールです。汎用の通信モジュールですから他のマイコン、例えばArduinoやPICなどからも通信モジュールとして使うことができます。 ところで、ここは自作エフェクターのブログで、アナログ回路120%、読者の方々はマイコンなんて生まれてこの方一度も触ったことのないでしょう(という仮定です)から、まずはUSBシリアルモジュールってどんな形してるの?から見て行きましょう。 中国サイトAliexpressからのスクショですが$0.99です(2cmくらいの小さな基板です)。これがマイコン工作の初期装備です。例えるなら”かわのよろい”で、これがないとスライムにさえボコられてしまいます。 ↑こちらはUSBコネクターに直接差し込むタイプです。あと忘れてならないのが接続ケーブルです。この商品は接続ケーブルとセットなので、ケーブルを持っていない人はこうゆうのを注文してください。 一口にUSBシリアルモジュールといっても多種多様で多くの種類があり

Blue Pillマイコンボードとは何ですか?

 Blue Pill(STM32)マイコンボード  Blue Pill(STM32)はAliexpress(中国)やebay(米国)などを検索するとたくさん出てくる小型のマイコンボードです。大きさは53mm x 23mmくらいで、多くは青色の基板なので海外のホビーマイコンユーザーからBlue Pill(青い錠剤)というニックネームで呼ばれています。お値段は$2前後とお手頃価格です。より安く手に入れるならAliexpressですが、日本国内ではAmazonにも出品されています。aitendoでも取り扱いがあります。"STM32"または"STM32F103C8T6"で検索すれば見つかるかと思います。  マイコンボードのスペック  搭載されているMCU(マイクロコントローラーユニット)はSTマイクロエレクトロニクス社製の32ビットARMマイコンです。 ・STM32F103C8T6 ・動作クロック 72MHz ・プログラムフラッシュ 64k ・SRAM 20k ・12ビットADC 2系統 ・各種通信機能 ・LQFP48パッケージ ・3.3V動作 汎用マイコンなのでオーディオ用の高性能なコーデック(ADC/DAC)は搭載していませんが、値段の割には高機能なマイコンなので使い方によっては、かなり色んなことができてしまいます。何よりもこの大きさなら1590B(またはタカチTD6-11-3)ケースに余裕で入ります。1590A(またはタカチ4-9-3)ケースにも十分入る大きさです。  コピーMCUにご注意  中国サイトではMCU(マイコンチップ)のコピー品もいくつか出品されています。Blue Pillマイコンボードを買う際には必ずMCUの型番をよくよく確認してください。 ◎ STM32F103C8T6(オリジナル) × CS 32F103C8T6(コピー品) × GD 32F103C8T6(コピー品) これらは一応同じように動作することを確認していますが、プログラムの書き込み方法がここで紹介するのと異なるので避けてください。