RasPd4 ハードウェア編

03_213_1raspd4p.jpg
微妙に不安定な面があったRasPd2を作り直しました。「3」を飛ばして「4」になっていますが、奇数番号は多機能タイプで、偶数番号はコンパクトタイプということにしておきます。スイッチやポットの基板についてはRasPd2のものを流用しており、外観は変わりません。初めてPCBを基板製造業者に注文しましたが、まぁまぁ納得の出来栄えでした。Raspberry Piは「zero W」です。

▽回路図
03_213_2raspd4s.png
入力にローパスフィルターを追加し、出力はヘッドフォン出力ではなくライン出力を使っています。ステレオ入力や出力バッファー追加も考えていたのですが、チップ部品でないと入らなさそうだったので諦めました。ダンピング抵抗は22Ωから47Ωへ上げて様子を見てみます。電源は9Vではなく5Vにしたので、大きな降圧レギュレータが不要となりました。DCジャックには間違えて9Vのプラグを挿さないように、秋月電子で買った「電圧区分4」というものを使用しています。

▽レイアウト(KiCadのデータはこちらへ)
03_213_3raspd4l.png
あまり意味はないかと思いますが、一応レイアウトも載せておきます。GNDはアナログ(右側)とデジタル(左側)に分けていて、中央下のあたりの一点で接続するようにしました。GPIOの番号は「*」印で示しており、使わないGPIOについては左端に引き出してあります。Raspberry Piが重なる部分は高さ7mmの電解コンデンサを使いましたが、スペースがあるので横に倒してもなんとか入りそうです。注文した基板は1M(R1)と1K(R2)の印字位置を逆にするというミスがあり、危ないところでした…

ノイズについてはRasPd2とほぼ同じくらいです。ギターが拾うノイズの方が大きいので、まぁOKということにしておきます。最大入出力レベルは0.9Vrms程度で、これも問題ないと思います。以前あったエラー音のような音については、起動して数十秒の間に短くビッと鳴ることがありますが、それ以外では今のところ大丈夫なようです。

WM8731より性能がよいIC(CS4272が候補)を使うとさらに高品質になると思われます。自作するとなると情報が少ないのですが、今後取り組んでみたいところです。



RasPd4 プログラミング編

タグ : 自作エフェクター 回路図 PureData RaspberryPi 

RasPd2 プログラミング編

参考になるかわかりませんが、とりあえずRasPd2に入っているファイルをアップロードしておきます。(直リンクできないようなのでこちらの別ページにダウンロードリンクを載せています。)
※RasPd4のデータをアップロードしたためRasPd2のデータは削除しました。(2018年2月22日追記)

▽コントロール割り当て
左スイッチ: エフェクト切替、切替時に右LEDが点滅
中央スイッチ: 特殊機能(ブースト機能等)オン・オフ、オン時中央LED点灯
右スイッチ: 長押しでシャットダウン
各ポット: エフェクトパラメータ
フットスイッチ: エフェクトオン・オフ、オン時左LED点灯

今回の内部プログラムはRasPd1のプログラムを単に移植しただけのものです。エフェクトを3種類入れているものの、エフェクトを切り替えた後いちいち各ポットを設定しなおさなければいけない仕様なので、現実的な運用は面倒だと思います。もちろん中身は自由に変更できるので、今後いろいろと発展させていきたいです。変態的なエフェクトをプログラムするのもいいし、スマートフォンと連携してエフェクトを操作するなんてこともできるかもしれません。



<スイッチ・LED>
RasPd1と同様、GPIOピンによるスイッチやLEDの制御を行っています。
こちらで丁寧に解説されています。→RaspberryPi電子工作入門

<可変抵抗>
エフェクトパラメータ設定は、ポットで分圧した電圧値をADコンバータMCP3008で読み取るという方式です。
こちらのページのプログラムを改変して利用しました。→Raspberry PiのPythonからTMP36のアナログ温度センサとMCP3008のADコンバータを使う
値の取得は0.3秒ごとにしています。取得した値が前回の値から変化していたとき、RasPd1と同様pdsendでPdへデータ送信しています。ポットを回したとき反応が遅く雑音が発生しますが、ワウペダルではないので実用上問題ないでしょう。
※最新のRaspbianで値が取得できなくなりました。プログラムにspi.max_speed_hz = 1000000を追加すると問題ないようです。(2018年1月28日追記)

<データ保存>
RasPd1からの名残でパラメータ保存機能は一応残っています。しかしすぐにパラメータが上書きされてしまうため、意味がない状態です。工夫次第ではプリセット保存・呼び出しといった機能をつけることも可能だと思います。



ハードウェア編へ  ソフトウェア編

タグ : 自作エフェクター RaspberryPi PureData 

RasPd2 ソフトウェア編

Pure Dataやオーディオを優先的に動かすため、下準備をしていきます(太字表記はコマンド)。
Raspberry Pi zeroの基本設定はこちら

通信に使うUSBケーブルは5V給電できないよう加工しています(外部から5V給電しているため)。さらに、うまく挿し込めるように角度を変えています。
03_188_1raspd2u.jpg



<CPU周波数スケーリング>
CPUのクロック周波数を常に1000MHzで動作するよう設定変更します。
$ sudo nano /boot/config.txt
#arm_freq=800 を arm_freq=1000 に変更
$ sudo apt-get install cpufrequtils(cpufrequtilsインストール)
$ sudo nano /etc/init.d/cpufrequtils
43行目あたり GOVERNOR="performance"



<不要なプログラムを停止>
RasPd1 ソフトウェア編その1と同じです。



<オーディオ設定>
WM8731のドライバを有効化します。
$ sudo nano /boot/config.txt
#dtparam=audio=on (コメントアウトしてオンボードのオーディオをオフに)
dtoverlay=rpi-proto (追加記載)

再起動後、オーディオ設定プログラムを起動します。
$ alsamixer
F5で全表示、スペースキー・↑↓キー・mキーで機能オン(OO)・オフ(MM)や機能切替です。設定は自動で保存されます。 → 保存は $ sudo alsactl store

Master 56 [dB gain: -9.00, -9.00]
Master Playback ZC [Off, Off]
Sidetone 0 [dB gain: -15.00]
Line CAPTURE
Mic [Off]
Mic Boost 0 [dB gain: 0.00]
Mic Boost 0 [dB gain: 0.00]
Playback Deemphasis [Off]
Capture 87 [dB gain: 9.00, 9.00]
ADC High Pass Filter オフ
Input Mux [Line In]
Output Mixer HiFi オン
Output Mixer Line Bypass [Off]
Output Mixer Mic Sidetone [Off]
Store DC Offset [Off]



<Pure Data(Pd)設定>
RasPd1 ソフトウェア編その2と同じですが、さらに低レイテンシー設定が可能です。また、44.1kHzには対応していませんので注意が必要です。Pd設定ファイルの下記該当箇所を変更しました。
$ nano .pdsettings
audiobuf: 5
rate: 48000



<自動起動設定>
RasPd1 ソフトウェア編その2と同じです。
今回のメインプログラム名は main2.py です。



<ADコンバータ MCP3008用設定>
$ sudo nano /boot/config.txt
dtparam=spi=on (#を外してSPI通信をオンに)
$ sudo apt-get install python-spidev(SPI通信に必要なPythonライブラリをインストール)



ハードウェア編へ  プログラミング編

タグ : 自作エフェクター RaspberryPi PureData 

Raspberry Pi zero 設定メモ

SSH接続とファイル操作ができるようになるまでの自分用設定メモです(太字表記はコマンド)。
Raspberry Pi 3, Raspberry Pi zero W の設定メモはこちら
※Raspberry PiやRaspbianの仕様変更によりうまくいかなくなる可能性があります。



Raspbian Stretch Liteダウンロード、Win32 Disk ImagerでmicroSDカードに書き込み
/boot/ ディレクトリに ssh という名前のファイルを置いておく



データ通信できるmicroUSBケーブルをPCと接続するだけで通信可能(OTGモード)
WindowsからTera Termで raspberrypi.local にSSH接続
参考ページ→ノートパソコンだけで raspberry pi zero をセットアップする方法

<インターネット接続>
参考ページ→SSH接続で raspberry pi zero の設定を行う1(インターネットに接続する)

<IPアドレス固定>
$ ifconfig (usb0 の inet addr: を確認)
$ sudo nano /etc/dhcpcd.conf
以下を追記(割り当てられたアドレスが192.168.137.99の場合)
interface usb0
static ip_address=192.168.137.99
static routers=192.168.137.1
static domain_name_servers=192.168.137.1

再起動後、WindowsからTera Termで固定したIPアドレスにSSH接続



<アップデート>
$ sudo apt-get update
$ sudo apt-get upgrade

<初期設定>
$ sudo raspi-config
Change User Password
Boot Options > Desktop / CLI > Console Autologin
Localisation Options > Change Timezone > asia > tokyo
※Pure Dataと相性が悪そうなので日本語表示しない

<ルートパスワード変更>
$ sudo passwd root

<Samba設定>
$ sudo apt-get install samba
$ sudo nano /etc/samba/smb.conf
Samba設定参考サイト→ツール・ラボ » 第14回 Raspberry Piのファイルサーバ設定をする
※プログラムが実行可能なように、ファイルのパーミッションも0775にしておく
Sambaのユーザ登録
$ sudo smbpasswd -a pi

Windowsのエクスプローラーのアドレスに\\raspberrypi\piを入力、ユーザー名・パスワードを入れアクセス

タグ : RaspberryPi 

RasPd2 ハードウェア編

03_187_1raspd2p.jpg
Raspberry Pi Zeroを使い、コンパクトなデジタルエフェクターを作りました。今回はLCDがなく、単機能エフェクターとして使うことを想定しています。オーディオインターフェイスはUSBではなくI2Sで通信するとレイテンシーが低減できるようで、WM8731というICを使用しました。レイテンシー実測値は7msとほとんどリアルタイムに近いレベルとなりました。

WM8731については、別記事に記載しています。
WM8731 設定メモ
Raspberry Pi Zeroでもほとんど設定は同じですが、ADC High Pass Filterはオンにするとノイズが増えたためオフにしました。音量は Master 56(-9dB) Capture 87(+9dB) です。

SN比を稼ぐため、RasPd1のときには外部回路で入力前増幅→出力後減衰を行っていました。WM8731のデータシートを見てみると、IC内部でアナログな増幅・減衰ができるため外部回路は入力バッファのみとしました。電源電圧が3.3Vと低いですが、+9dB(2.8倍)程度までは歪まないだろうと思います。

▽回路図
03_187_2raspd2s.gif
出力のコンデンサが100uFと大きい値なのはイヤホンを直接繋ぐためでしたが、誤って大出力になったとき危険なのでイヤホンでのテストはしない方がいいでしょう。各スイッチには少し面倒ですがチャタリング防止の抵抗やコンデンサを入れています。とりあえずたくさんコントロールを準備したという感じで、割り当てをどうするかは未定です。WM8731への接続に入っている抵抗(ダンピング抵抗)はありあわせの22Ωにしましたが、役割はあまり理解していません。

ノイズ対策のため、電源・GNDは4系統に分かれています。
 [アナログ9V電源・GND(バッファ用)]
   ↓
 [デジタル5V電源・GND(Raspberry Pi用)] → [アナログ3.3V電源・GND(WM8731用)]
   ↓
 [デジタル3.3V電源・GND(WM8731用)]

▽レイアウト
03_187_3raspd2l.png
▽PCB(横111.8mm縦73.7mm)
03_187_4raspd2lp.png
あまり見慣れない水晶振動子というパーツがありますが、ケースが金属なので基板から少し浮かせて取り付けています。周波数の値はそんなに高精度のものでなくていいようです。WM8731には、シングルタイプのピンソケットを使うことでICの下にパーツを配置できるようにしています。レイアウト上部の基板間の配線は、着脱式にして後からの修正をしやすくしました。また、GND等のいくつかのジャンパーは基板の裏側(半田面)で配線しています。

今回もノイズには悩まされました。まずサーというホワイトノイズがRasPd1より多く出ていました。Raspberry Pi自体から電磁波的ノイズが出ているのかと思いアルミホイルでシールドしてみましたが効果なしでした。pedalSHIELD DUEのようにRチャネルに位相反転した入力を入れて、ノイズキャンセルしようとしましたがこれもダメでした(LとRでノイズの乗り方が違うようです)。結局電源を分離すると解決したため、ノイズ源はWM8731用アナログ電源だったようです。

その他にもギターを繋いだときに少しキーン&プツプツというノイズが出ていました。RasPd2内蔵のバッファを一旦外し、別電源のバッファを前段に繋いだ場合はほとんどノイズが消えたため、電源とGNDの取り方が原因と考えました。試行錯誤の結果、絶縁型のDC-DCコンバータを使用し、その出力部に各GNDを集めるというレイアウトになっています。

下写真のように基板を2枚重ねにしています。
03_187_5raspd2g.jpg
ケースは高さがあるHAMMOND1590BSです。発熱が心配ですが、裏フタをあけた状態ではCPU温度50℃程度で安定しているようです。そのうち無線接続可能なRaspberry Pi Zero Wに変更し、改めて長時間使用時の安定性を調べようと思います。

---以下2017年12月24日追記---
現状以下の問題点があるので、作り直す必要がありそうです。
・微妙にノイズが残っている
・ダイナミックレンジが狭い
・たまにビーというエラー音のような音が入る



ソフトウェア編へ  プログラミング編

タグ : 自作エフェクター 回路図 レイアウト RaspberryPi PureData 

管理人

管理人

自己紹介のページ
記事一覧
Twitter
GitHub

ブログ内検索
カテゴリー
タグ

自作エフェクター   レイアウト   回路図   歪み   PureData   周波数特性   マイコン   波形・倍音   RaspberryPi   エレキギター   アンプ   エレキベース   エフェクター自作方法   歪率   真空管   コーラス   ピックアップ   静音ギター   ヘッドフォンアンプ   擬似ギター出力   市販エフェクター   アコースティックギター   ブースター   コンデンサ   ソロギター   ポールピース   イコライザー   コンプレッサー   ビブラート   フェイザー   トレモロ   TAB譜   ディレイ   DIY_Layout_Creator   ワウ   オートワウ   バッファー   

最近の記事
最新コメント
Twitter
RSS
メールフォーム
当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

お名前
メールアドレス
件名
本文

アクセスカウンター