前回の音声デジピーターの実験では、汎用のマイコンボード(Arduino UNO、または自作互換機)、音声録音再生LSI(APR9600)、そして音声合成LSI(ATP3012)等を使い、そのハードウェア、ソフトウェアの設計開発などを行ってきた。一方、実験装置の設置(仮設)自由度の向上や、持ち運びの負担軽減など小型軽量化も課題の一つであり、今回はそれに取り組んでみた。以下の写真(図1)に前回の試作機(2号機)と今回紹介する試作機(3号機)をそれぞれ示す。
ご覧のように前回2号機は、電子回路基板3枚を積層し、単三型電池6本使用の電池ボックスから給電している。今回の試作機(3号機)は電源となる単四型電池4本の電池ボックス(スイッチ付き)の上に、電子回路基板を1枚載せるような構造になっていて、大幅な小型軽量化を試みた。
基板上の部品の配置や配線などを工夫するだけでは大幅な小型化はあまり期待できない。よって使用部品をできるだけ小型のものに替えてみたり、また構成(アーキテクチャ)や回路そのものを見直して部品点数を減らすなどが効果的である。そこで前回試作機(初号機、2号機)の基板面積の大半を占めていた大型(600mil:28DIP)の音声録音再生LSIや音声合成LSIを使わずにマイコンボードのみでこれらの機能を実現できないか検討することにした。つまり、外付けのハードウェアをできるだけ減らし、その部分をソフトウェアで置き換えることで小型化できないか考えたわけである。
軽量化へのアプローチとしては、全体の重量の多くを占めている電源(電池)の低電圧化も効果的である。前回はマイコンボードの動作電圧(約7V~)の確保のため、単三型電池6本(約162g:実測値)を使用した。一方、後述する今回使用したマイコンボード(図2:RP2040ベース基板)は外部電源として5V程度の電源電圧(内部電圧3.3V)で動作可能であり、単四型電池4本(約52g:実測値)を使用することで約110g軽量化できた。また前回の総重量(ケーブル類や無線装置を除く)と今回は、それぞれ実測値で約250g、約96gであり、トータルで約154g軽量化された。特小機が約100~200gほどなので、トランシーバー1台分ほど軽量化できたことになる。
項目 | 前回(2号機) | 3号機 |
---|---|---|
重量(電池含む) | 約250g | 約96g |
基板寸法(mm:WxDxH) | 約55x80x45 | 約46x46x20 |
電源(電池のみ) | 単三型6本(約162g) | 単四型4本(約52g) |
前回のレポートでも示したように、録音再生に必要なメモリ量は以下に示す計算式(1)から約160Kバイト以上必要となる。前回使用のマイコンボード(Arduino UNO)では搭載RAM容量が僅か2Kバイト(実際に使用可能なのはこの約半分)しかないため、基本動作(中継動作)をこのボードだけで実現するのは非常に困難(外付けのメモリデバイスが必要)である。
必要なメモリ量(ビット)= サンプリング周波数(Hz) * 量子化(ビット)* 録音時間(秒) ...(1)
以下の条件で計算してみると、
サンプリング周波数:8KHz(無線電話:必要な周波数帯域300~3000Hz)
量子化ビット数:8ビット(無線電話音質)
録音時間:20秒(一通報毎に必要な時間)
必要なメモリ量(バイト)= 約160KB
そこで十分な処理速度と録音再生に必要なメモリ容量を搭載した別のマイコンボードを探したところ、SeeedStudio社製のマイコンボード(Seeed Xiao RP2040)がこれら条件を満たしており、これを使って評価することにした。図2(左)が前回(初号機)使用のマイコンボード(約69mm x 53mm)、図2(右)が今回使用したマイコンボード(約18 mm x 21 mm)である。
ご覧通りとても小さなボード(切手と比較)であり、基板上にはさらに小さなMCUチップ、RP2040(図3:約7mm角)、電源IC、メモリICなどが載り、非常にコンパクトにまとめられている。動作周波数は133MHz、搭載RAMサイズは264Kバイトである。プログラム格納用の外付けROM(フラッシュメモリ)のサイズは2Mバイト(2048Kバイト)となっていて、前回マイコンボードとして使用したArduino UNO(16MHz、RAM:2KB、ROM:32KB)とは桁違いの動作速度と大容量メモリを有している。しかも価格は約5~6ドル(2023年12月現在)と低価格である。
item | Arduino UNO | Seeed Xiao RP2040 |
---|---|---|
MCU(CPU) | ATmega328P(AVR) | RP2040(ArmCortexM0+:Dual-Core) |
GPIO | 20 | 11 |
UART | 1 | 1 |
I2C | 1 | 1 |
SPI | 1 | 1 |
ADC | 6 | 4 |
PWM | 6 | 11 |
I/O電圧(V) | 5.0 | 3.3 |
RAM(KB) | 2 | 264 |
ROM(KB) | 32 | 2048(2MB:外付けFlash) |
Clock(MHz) | 16 | 133 |
USB port | Type-B | Type-C |
今回もID送出用にモールス信号などをMCUから一定間隔(約3分)で送出できるようプログラムを用意した。また音声合成によるID送出も実現するため、AI(人工知能)技術を応用したVOICEVOX(音声合成ソフト)を使って、先ず音声データ(.wav)を作成し、図4に示すように、得られたデジタルデータ(抽出、加工後)をプログラムメモリ(ROM)へ直接書き込むことにした。ID送出の際はROM上の音源データを読み出し、D/A変換器(PWM)を通しアナログ音源を再生、送信音声とした。
音声ファイル例(ずんだもん by VOICEVOX) |
SSTV音源例(Robot36 by MMSSTV) |
前回(初号機、2号機)に比べ、3号機は録音再生、ID送出機能などをすべて一つのマイコンボードで行えるため、とてもシンプルな構成となった。
無線装置のSP端子から出力された受信音声は、BUSY検出増幅用のOPAMP(オペアンプ)と録音増幅用へそれぞれ分岐入力され、増幅後、それらアナログ出力はマイコンボードの別々のアナログ入力端子(AIN_1、AIN_2)へ入力される。BUSY検出に利用するスケルチオープン時のノイズは極めて小さい電圧レベルであるため、十分に検出できるレベルまで電圧増幅する必要があり、BUSY検出用増幅では約40dB(100倍)と高い利得を得るよう設定している。また音声録音用増幅は余裕を見て約20dB(10倍)に設定している。
音声出力(PWM)は、再生音声(AOUT_1)とID送出(AOUT_2:モールス信号、合成音声他)に分かれ、それぞれをレベル調整後、ミキシングして無線装置のマイク端子へ入力される。
無線装置の送受信をコントロールするPTT信号は、再生音声やID送出の際にマイコンボードから出力される。
専用の音声録音再生LSIや音声合成LSIを使わず、マイコンボード(Seeed Xiao RP2040)1枚を使って音声デジピーターを試作した。部品点数の削減や低電圧化などを行って大幅な小型軽量化が達成できた。フィールド試験等で良好に動作しており、現在までのところ、動作上大きな問題は発生していないようである。引き続き移動運用などで動作試験を継続する予定である。
Seeed Xiao RP2040Seeed Studio Ltd
Raspberry Pi Documentation of RP2040Raspberry Pi Ltd
無料で使える中品質なテキスト読み上げ・歌声合成ソフトウェアVOICEVOX
SSTV 通信ソフト MMSSTVJE3HHT局HP
音声デジピーターの実験通信実験のページ(つくばF3)
2024年 2月28日:Initial Release
2024年 3月 4日:誤字脱字の修正、および図8(仮設の様子)を追加
本記事を利用して生じたトラブルに関しては、筆者は責任を負いかねますので、ご了承ください。