M6955(AKC6955)は、FM/TV/MW/SW/LWマルチバンドのDSPデジタルラジオICである。かなり歴史のあるチップで、中華の開発元AKC technology limitedのホームページは既に検索できなくなっている。このチップとの付き合いは、コロナ禍の始まる前からなので、既に3年近い。何とか纏まりが付いたので結果を報告することにした。最終のスケッチはGitHubにアップしている。
事の始まりは、aitendoのDSPラジオモジュールを見つけたことにある。マイコン制御のDSPラジオに興味があったので早速購入(2019年8月)したが、後から考えると少々敷居が高かったようである。Arduinoによる制御が目標であったが、チップもプログラムも実績なしで始めたため、モード(AM/FM)の変更までは確認できたものの、受信周波数の設定(つまり放送局の受信)は、ついに成功しなかった。このチップは色々と配線を替えて試しているうちに、誤ってDC9Vを印加して、燃やしてしまった。5VのArduinoと3.3VのDSPラジオを混在させてはいけない(信号の電圧レベルの変換が必要で配線が複雑化する)という教訓を得た。ただ、このDSPラジオモジュールには(受信周波数設定用レジスタの)不具合があったと、今でも思っている。ちなみに、この時利用していたArduinoのスケッチは、もへある氏作のもので、最終的なスケッチに一部原型が残っている。
前述の反省により、3.3Vで動作するArduino、ProMini(8Mhz動作)と、M6955チップをAliExpressから購入した。M6955チップを変換基板にハンダ付けするのには難儀したが、何とか成功。結果として、所期の目標機能(モード変更、受信周波数の変更など)は、ほぼ確認できたのであるが、ProMiniのI2Cに、M6955と表示用のOLEDをマルチドロップ接続すると、動作しなくなるいう不具合が最後まで解決出来なかった。プルアップ抵抗を追加するなど色々試したが無駄であった。そのまま、暫く放置(2019年12月頃)。
2020年になって、既に入手していたXIAOでは、どうかと思い付き、ProMiniから変更すると、OLEDの表示が可能になった。XIAOのI2CはM6955と相性が良かったということである。気を良くしたので、スケッチを改良して最終化(GitHubに登録した物)した。以下の写真は全体の最終形で、配線をブレッドボードから汎用基板(ブレッドボード互換)に替え、ケースに収めている(2022年の作業)。
感想を別稿のSi4703との比較で述べてみたい。一番大きな違いは、Si4703は無線機指向で、M6955はラジオ指向であるという点である。理由は、前者は受信周波数が1KHzステップ単位で変更が可能であるのに対して、後者は受信周波数の変更ステップ幅がモードごとに決まっていて、結果として1KHzステップ単位での受信周波数が選択できない点。これはラジオとしては問題ないが、無線機として致命的な欠点である。感度は、Si4703の方が良い。ただし明瞭度の点で若干問題がある。FMについては、M6955の方がはるかに音質が良く、Si4703は実用レベルとは言えない。AM(中波)については、XIAOとの電波干渉(AGCが効いて感度が低下?)がありバーアンテナの相性が良くない(実用性は期待できない)。音声出力はSi4703はイヤホンが精々で、M6955は音声出力が0.5Wあるので、小型のスピーカーを直接接続できる。
コメントありがとうございます。時間とお金を費やしましたが、勉強にはなりましたね。