29. 聴力補助ツールHAT21の作成

 本プロジェクトも大詰めになりました。いよいよ聴覚補助ツールHAT21の製作に取りかかります。まず、すでにでき上がっているボードやマイクなどをどう組み合わせて、どのような形に仕上げるかを決めなければなりません。それにしたがって、さらに必要な部材や部品類を入手して、完成に向けた工作や配線を行います。
 これらと平行して、最終的な組み付けを行うまでに、残っている問題を洗い出して解決しなければなりません。新たなボードの作成も必要になりそうです。
 今回からの2回で、これらを進めながら作業の詳細を取りまとめることにします。


1.HAT21のシステム仕様

(1)デジタルマイク版を採用

 写真左はコンデンサーマイク版、右はデジタルマイク版の構成です。デジタルマイク版はとてもシンプルで、現時点で携帯型にするにはこれで決まりということになります。
 ただ、今回製作したコンデンサーマイク版は音質が良く、既製品のマイクやECM(エレクトレット・コンデンサー・マイク)パーツの種類が豊富であることなど、サイズの問題を除けば良好です。一方、デジタルマイク版で使用できるハンドメイド用のマイクモジュールは限られていて、既製品の使用はムリ。自作マイクのメンテナンスは製作者の手にかかってくることを承知しなければなりません。


(2)システム構成の概要

 コンデンサーマイク版との大きな違いは、マイクアンプとADコンバーターが姿を消したこと。これらはデジタルマイクに内蔵されているので当然です。注目すべきはマイクの電源ラインです。マイクの3V電源をPi Zeroの3.3Vピンに接続したことで、これまでのボタン電池も不要になりました。これによるノイズなどの問題も発生していません。
 全体の配線は前章を参照してください。また電源ボードからヘッドフォンアンプへは、昇圧電源で9.0Vに調整したものを給電しています。


(3)ソフトウェア要件

 システム環境は、I2Sデジタル出力マイク用のI2Sモジュールがインストールされていることが前提です。以前にADMP441のテストをしたときと同じ環境が必要なので、第16章で、ADコンバーターのインストール前にバックアップしたSDカードを使用します。バックアップSDがない場合は、前章の2「①システム環境の準備」の手順に従ってください。
 次に、リモートコンソールとの連係動作ができるようにするため、Webアプリケーションが動作する環境を整備する必要があります。第25章で行ったApacheとPHPの動作についての一連の確認ないし追加インストールを行ってください。
 完成版のソフトウェア一式は次回最終章でダウンロードできるよう準備しますが、HAT21の基幹処理プログラムのベースは、hat21c.cのサンプリングレートを44,100Hzに修正したものです。

2.バラックテストで判明した問題

 バラックの状態でテストを継続したところ、次のような問題が見つかりました。
①アンダーフローエラーのノイズ

 すでに何度も取り上げましたが、音声処理ライブラリーPortAudioのストリーム出力関数Pa_WriteStream実行時に、不規則にアンダーフローエラーが発生します。原因が不明で、ライブラリーが提供している出力側のsuggestedLatencyに手を加えることで発生頻度を抑えていますが、スリープ機能を使ったタイミング調整を行うことでさらに抑制できそうです。
 ミリ秒単位で処理を停止させるスリープ関数を作成して、ストリームの開始処理(Pa_OpenStream, Pa_StartStream)とPa_WriteStream関数付近に配置するなど最適化を試みます。


②自動起動時のノイズ

 SSHターミナルからHAT21を起動した時は問題ないのですが、電源ONによる自動起動時に十数秒にわたって大きなノイズが発生します。その原因がわからず、ヘッドフォンアンプの電源制御で解決することにしました。当初はヘッドフォンアンプへの給電をストップしておき、タイミングを計って通電する方法です。トランジスタースイッチを作成して、プログラムから特定GPIOピンにシグナルを送ることで制御します。


③リモートコンソール電源オフの問題

 自動起動をした場合に、リモートコンソールからの[Power Off]ボタンで電源をオフにできないケースが発生しています。シェルスクリプトを変更することで解決します。


④Pi Zeroの電源入力

 Pi Zeroへの給電は、モバイルバッテリーの[+]をPi Zeroの第4ピン、[-]を第6ピンに接続して給電します。また、Pi Zeroを立ち上げるために、その都度モバイルバッテリー間のUSBケーブルを抜き差しするのは面倒なので、通常は接続した状態にしておき、起動時には第5ピン(GPIO3)とGNDをショートすることで電源をONにします。操作しやすいように、プッシュボタンスイッチを設置します。


⑤Pi Zeroの温度上昇

 Pi ZeroのCPUはかなり高温になります。エアコンが緩く効いた環境下でバラック状態でも54℃前後になるので、熱暴走予防のためにヒートシンクを取り付けることにします。


3.完成品の製作要件

 バラックテストで判明した問題への対応と、合理的な組立・配線を進めるために、以下の要件を設定します。
①外形の規定

 コンパクトなケースを選定して、すべてのボード類を収納します。フロントパネルにはイヤフォンジャック、動作表示LED、電源プッシュボタン、USB電源ポートを装備可能にし、サイドパネルにはマイクケーブル引き込み口を作成します。モバイルバッテリーはケースに隣接させて、短いUSB電源ケーブルで給電します。


②組立基板の設置

 ケースにフィットする基板を用意して、すべてのボード類は基板上に取り付けます。これによってケースと基板部分を分離可能にし、メンテナンスがやりやすくなります。


③配線方法

 Pi ZeroのGPIOピンに配線を直接ハンダ付けするのはちょっと躊躇われ、そうかといってジャンパーワイヤでは接触不良が心配です。秋月電子から42連の「分割ロングピンソケット」(下図)という便利なものがあるのを見つけて、これを使うことにしました。必要なピンの数だけ切り離してGPIOピンに挿すとぴったりフィットして、一方の端子に配線をハンダ付けできます。他のボードのピンヘッダーも同様の方法で配線します。

 このピンソケットは、ボード類の電源や入出力ポートにも使用します。オスL型ピンヘッダー(後述部品一覧を参照)との整合性が良いので、あわせてコネクターとして利用します。


④電源ボードの分割

 第27章で電源ボードを製作しましたが、ケースに組み付ける際にUSB電源ポートをケース前面に配置する必要があり、昇圧電源部と分けなければなりません。


⑤トランジスタースイッチの製作

 自動起動時のノイズをカットするために、ヘッドフォンアンプの電源をON/OFF制御できるトランジスタースイッチを作成します。シグナル端子を第16ピン(GPIO23)に接続して、High/Lowシグナルに対応してモバイルバッテリーからヘッドフォンアンプへの給電をON/OFF制御できるようにします。


⑥ヘッドフォン出力ジャックの設置

 ヘッドフォン出力をパネル前面から取り出せるように、3.5mmのステレオジャックを設置します。


⑦マイク入力コネクターの作成

 デジタル出力マイクの4芯シールド線ケーブルを接続するためのコネクターを作成します。


⑧LED表示の追加

 モバイルバッテリー接続を示す赤色LEDと、音声処理中を示す青色LEDを設置します。これらは設置場所を考え、マイク入力コネクターに隣接させるようにします。


⑨電源ONプッシュボタンの設置

 パネル前面にプッシュボタンを設置します。プッシュ操作によって、Pi Zeroの第5ピン(GPIO3)とGNDをショートさせて電源がONになるように配線します。


⑩USB電源ポートの設置

 Pi Zero基板上のUSB電源ポートの使用をやめて、パネル正面に電源用マイクロUSBコネクターを取り付けたボードを設置します。モバイルバッテリーの[+]をPi Zeroの第4ピン、[-]を第6ピンに接続して給電します。モバイルバッテリーの[+]は、同時に昇圧電源の入力端子にも接続します。


⑪その他

 ・Pi ZeroのCPUにヒートシンクを取り付けます。
 ・ケースにアースポイントを設置して、HAT21回路のGNDに接続します。


4.必要な部品、部材、工具

 最後の加工・組立・配線をするためには、まだたくさんの部品や部材が必要になります。工具の多くは今まで使用していたもので足りますが、ケースの穴開け加工に必要なものを準備しておきましょう。
(1)必要な部品部材

No.名    称数量参考単価備  考
1タカチ電機工業製アルミケース YM-130 130W x 30H x 90D1\1,066ミスミ
2サンハヤト ユニバーサル基板4mmピッチ AT-1W(44)1\461モノタロウ
33.5mm ステレオミニジャック MJ-074N1\65秋月電子
4オーディオファン 5cm USB電源ケーブル(Aオス+マイクロUSB)1\480アマゾン
5ポリアセタール・スペーサー 内径 3mm 長さ 3mm 1袋10個入り1\153モノタロウ
6ポリアセタール・スペーサー 内径 3mm 長さ 4mm 1袋10個入り1\153モノタロウ
7LATTEPANDAヒートシンク 1袋5個入り1\530秋月電子
8LED 3mm赤色1\10秋月電子
9LED 3mm青色1\20秋月電子
10カーボン抵抗 4.7KΩ 1/4w3
11カーボン抵抗 30KΩ 1/4w1
12押しボタンスイッチ1\120秋月電子
13ピンヘッダー 40P1\35秋月電子
14分割ロングピンソケット 42P1\80秋月電子
15両面スルーホールユニバーサル基板 3 * 71\35秋月電子
16トランジスター 2SC1815GR 1袋20個入り1\100秋月電子
17トランジスター 2SA1015GR 1テープ10個入り1\100秋月電子
18カーボン抵抗 10KΩ 1/4w2
19ピンヘッダー オスL型 40P1\50秋月電子
20ステンレスなべ小ネジ M3x10mm(ナット、ワッシャ付)1袋8セット入り2\162ホームセンターなど
21ステンレスなべ小ネジ M3x15mm(ナット、ワッシャ付)1袋7セット入り1\162ホームセンターなど
22耐熱電子ワイヤー 2m x 7色1\650秋月電子

(2)便利な工具
 配線に必要な工具類はすでに第2章「配線用の工具・材料類」で取り上げたので参考にしてください。ここではそれ以外に揃えたいものをピックアップします。
   ※写真をクリックすると商品情報が表示されます。

写 真必要性名 称 / (用 途) 参考価格 備 考
 ○電気ドリル
(2mmと3mm径の金属加工用ドリル刃で穴開け)
\5,000前後ホームセンターなど
 ○ヤスリセット
(ドリル穴のバリ取りなど)
\1,969モノタロウ
 △ダイヤモンドやすり 3本セット
(小さな穴の仕上げ)
\110ダイソー
 ○サンドペーパー(中目#150、細目#800)
(カットした基板の研磨と仕上げ)
各\50~100ホームセンターなど
 ○センターポンチ
(ドリル穴開けの位置決め)
\285モノタロウ
 △シャーシトリーマ
(ドリル穴の拡張、バリ取り)
\769モノタロウ
 ○大型カッターナイフ
(ユニバーサル基板の切断)
 ○金工用糸鋸
(金属板の切断)
\989モノタロウ

5.ボード類の作成と組立

①ユニバーサル基板を切断して組立基板を作成する

 これから必要なボード類を作成するわけですが、それぞれのボードはケースに収まるようにサイズや位置を決めなくてはなりません。上記の部品一覧の「サンハヤト ユニバーサル基板」は、YM-130アルミケースと縦方向のサイズがぴったり一致しています。しかし横は基板の方が大きいので切断が必要です。ケース幅の実寸は130mmよりやや小さいので、現物と照合して切断位置を決めます。すべてのボード類は、でき上がったこの組立基板に組み付けます。

(基板の切断・仕上方法)

 これから行う切断も、あとで両面スルーユニバーサル基板を切断する場合も、次のように進めると手早くきれいに仕上げることができます。
 まず、目的とするサイズから正確な位置(出来上がりの位置)を決めます。そこからホール1つ分長いところが切断位置です。ホールの中心を結ぶように、大型カッターナイフでしっかり傷をつけます。
 よく切れるニッパーを傷の位置に当てて、ゆっくりと切ります。傷に沿って、面白いようにパリパリ切れるはずです。
 切り終わったら、中目のサンドペーパーをテーブルなど平らで固いものの上に広げて、切断面をゴシゴシと切削します。目的のサイズに近づいたら、細目のサンドペーパーに取り替えて、ゴシゴシと磨き上げて完成です。


②レイアウトを考える

 ボード類をどのように配置して結線するか、前面パネルをどうするかは自由です。それぞれの配置を考えながらレイアウトを決めます。注意しなければならないのは、ジャックやUSB電源ポートなどがボード類と接触しないように、垂直方向の位置を決めることです。
 参考までに、手元で試行錯誤しながらでき上がったものを示します。

 写真では分かりにくいですが、それぞれのボードは3mmまたは4mmのポリアセタール製(絶縁樹脂)スペーサーで、基板から浮かせてビス止めしています。Pi Zeroは、その上にプッシュボタンを設置するため、他のボードよりも高さを低くしなければならず、スペーサーの替わりに薄い金属ワッシャを4枚重ねました。またビスも頭が平らなものを使っています。
 以下では、このレイアウトで作業を進める場合の具体的な作業内容について説明します。


③電源ボードの分割と昇圧電源の取り付け

 せっかく製作した電源ボードですが、昇圧電源と電源用マイクロUSBコネクタを取り外します。取り外しはハンダ付けよりも難しく、ハンダを溶かすときの熱でピンヘッダーを損傷しがちです。
 昇圧器のピンヘッダーをそのままで外すのは難しいので、5本のピンヘッダーを切り取って外します。そしてピンヘッダーの連結部分にニッパーで切り込みを入れます。バラバラになったものを、1本ずつピンセットで挟んで熱を加えて外します。ハンダで塞がったピン穴は、はんだ吸収線(第2章「4.配線用工具・材料類」を参照)を当ててコテで熱を加えると、内部のハンダが吸い出されて回復します。
 分割ロングピンソケットを4Pだけ切り取って、下図の①から④に差し込んでハンダ付けします。
 でき上がったボードは、基板の右奥に3mmのスペーサーを挟んで取り付けます。


④マイクロUSB電源ポートの取り付け

 両面スルーユニバーサル基板を、最終的に縦方向が9ホール確保できるように切断して仕上げます。写真のように電源用マイクロUSBコネクターを取り付けます。USBコネクターの反対側に2Pと3Pに切り取った分割ロングピンソケットを設置して、[+]の2PはUSBコネクターの[+]に、[GND]の3PはUSBコネクターの[-]に、それぞれ裏面で配線します。
 でき上がったボードは2つの穴を開けて基板に取り付けるのですが、コネクター先端が前面パネルから1mm奥になるように、基板側の取り付け穴を開けます。またボード側の穴は、前面パネルに開けた穴と一致させる必要があるので、横方向に少しだけ移動できるように楕円型にしておくのがコツです。
 取り付けにあたっては、15mmのビス(なべ小ネジ)にワッシャと3mmスペーサーを通したものをボードの穴に挿し、それに4mmのスペーサーを挟んで基板に取り付けます。


⑤マイク入力コネクターとLEDの設置

 マイク側はL型6Pのピンソケットになっているので、これを受けるためにオスL型のピンヘッダーを6Pだけ切り取って、写真のようにハンダ付けします。事前に両面スルーユニバーサル基板を写真のサイズになるよう切断、仕上げしておきます。裏面で、オスL型のピンヘッダーをこれと対称的に取り付けます。長い方が上側からのピンに接するようにハンダ付けし、短い方はボードの表面に出るようにします。つまり、入力コネクターの6端子が、そのまま4ホール先の出っ張りに繋がった状態にするわけです。この出っ張りを中継端子として、Pi Zero側のI2S用のGPIOピンや3V電源(3V3ピン)、GNDへと配線します。
 このボードの取り付け位置はLED表示には格好なので、ボードの空きスペースを利用して赤と青のLEDを設置します。赤色LEDはモバイルバッテリー接続時に点灯させるので、プラス側をマイク入力コネクターの[3V]ラインにハンダ付けします。マイナス側は4.7KΩのカーボン抵抗で[GND]にハンダ付けします。青色LEDはHAT21の音声処理機能が動作しているとき点灯させるので、プラス側を、トランジスタースイッチがONになって9Vが給電される端子(トランジスタースイッチのOutput端子)に配線し、マイナス側は30KΩのカーボン抵抗を通して[GND]にハンダ付けします。
 LEDは、後でフロントパネルに開けた穴に合わせて位置決めができるように、LEDの足を軽く曲げて余裕を持たせておきます。


⑥トランジスタースイッチの製作

 HAT21を自動起動した時に発生するノイズの原因がわからず、その回避策として設置するスイッチです。機械的なスイッチは手でON/OFF操作しなければなりませんが、トランジスタースイッチは信号端子に電圧をかけるかかけないかで、トランジスターのエミッターとコレクター間に電流を流したり止めたりすることができます。デジタル制御できるので、このような場合には重宝するスイッチです。
 通常は、昇圧電源からヘッドフォンアンプへの9V給電スイッチ回路をOFFにしています。HAT21が自動起動されたら時間計測を開始し、所定の時間経過を待って特定ピン(GPIO23)をHIGHにします。トランジスタースイッチはそれを検知してスイッチ回路をONにして給電を開始し、その時点からヘッドフォンアンプが作動するという仕組みです。
 トランジスターにはNPN型とPNP型があって、負荷がスイッチの電源側にある場合はNPN、GND側にある場合はPNPを使います。ここでは、電源に繋がったスイッチがONになった時にGNDに繋がったヘッドフォンアンプに電流を流したいので、PNP型でスイッチを形成します。
 スイッチ用トランジスターには2SA1015GRを使っていますが、この場合ベースに高い電圧が発生します。これをGPIOピンにそのまま繋ぐのはいささか不安で、前段に2SC1815GRを置いてドライブしています。

 トランジスタースイッチは両面スルーユニバーサル基板の切れ端を使って製作しました。回路が簡単なので、ホールが2列もあればだいじょうぶ。[Signal]と[GND]をPi Zeroに接続([Signal]にはGPIO23を接続します。これでスイッチを制御することが可能になりました。トランジスタースイッチの[Output]を、GNDに接続されたヘッドフォンアンプの[+]ラインに繋ぎます。スイッチがONになると、[Output]に電圧が現れて、ヘッドフォンアンプに電流が流れます。
 でき上がったスイッチは、マイクロUSB電源ポートと昇圧電源の間に、2本のワイヤーで縛り付けて固定します。


⑦ボードを基板に組み付ける

 必要なボードがすべてでき上がったので、電気ドリルで基板に3mmの穴を開けて取り付けます。
 写真は基板の裏面です。トランジスタースイッチはワイヤーでしばって固定し、他のボードはビスとナットで固定しています。マイクロUSBポートは長さ15mmのビスを使いますが、その他は長さ10mmです。マイクロUSBポートはフロントパネルの穴の位置と一致させる必要があるので、位置調整の余裕があることを確認しておきます。

⑧ケースの穴開け加工

 続いてケースに穴開けして、ジャックやプッシュボタンを取り付けます。

 美しいケースに穴を開けるのは緊張します。失敗は許されません。電動ドリルで、前面パネルの左から3.5mmジャック、2つのLED用、プッシュボタン、マイクロUSB電源ポート用の穴を開けます。それぞれのパーツの実物サイズに合わせて位置決めしてください。そして背面には上段に8個、下段に7個、合計15個の放熱用の穴を開けました。穴のサイズは3mmです。
 いずれも、穴を開ける前に慎重に位置決めを行って、センターポンチでドリル用の凹みを刻みます。センターポンチを定位置に当ててハンマーでたたくのですが、何度もたたくとズレやすいので、一度で決めるのがコツです。
 最初の穴開けは、2mmのドリルで決められた位置にドンピシャリ。その後は、それぞれのパーツの実サイズに合わせて拡張します。LED用の穴は、内部で点灯したLEDが見えるようにするためのもので、サイズは3mm弱に留めます。USB電源ポートの穴は細い横長なので、最初は2.5mmのドリルで連続した穴を開けます。残った部分はニッパーで切り取り、丸ヤスリと平ヤスリでバリを削り取って仕上げます。その前に、ボードとの位置合わせを忘れないように!
 3mm以上の穴は、シャーシトリーマでバリ取りして美しく仕上げます。さらに大きいサイズの穴は、シャーシートリーマで簡単に拡張できます。
 なお、アルミケースYM-130の黒いボディー部はビニール薄膜で保護されているので、穴開け完了後に剥がします。穴の位置決めに鉛筆などで印を付けていても、跡形を心配することはありません。


 次回最終回では、ボード間の配線を行ってハードウェアを完成させます。続いてそれを動かすためのHAT21のソフトウェアに追加改変をして仕上げます。 どうぞお楽しみに!