更新状況(20)
この頃柄にもなくDSPラジオの製作に凝ってます。先日近くのツタヤに行ったところ「DSPラジオの製作ガイド」(後閑哲也著、技術評論社)なる書籍がありました。今どきラジオの製作本なんて誰が買うの?と思いつつ透かさず購入してしまいました。大きい書店なら何処でも置いてあるようで、ラジオって今熱いのか?と不思議な感覚に陥ります。
しかし、よく考えたらラジオの製作が熱いのではなく、PICが熱いのだと言うことが分かります。この本のサブタイトルは「簡単ラジオ&PICマイコンを使った高機能ラジオの作り方」なのです。

本はとても分かり易く、電子工作初心者でも書かれているとおり製作すればDSPラジオを完成させることができるようになっています。勿論プリント基板等は一切使用せずブレッドボード上の実験スタイルではあるのですが、普通にプリント基板で製作すれば十分実用になりそうな感じです。

↑ これは、この本の中で使用されているワンチップマイコンのPIC16F18326です。14ピンのDIPパッケージの中に32MHz発振器、28kBプログラムメモリ、タイマ、I²C、PWM、ADC、DAC等々一通りの周辺機能が内蔵され250円とタダみたいな素子です。右はラジオICのKT0913です。パッケージはSSOPでピッチ変換基板の方が数倍でかいです。
書籍には全てのプログラムがコメント付きで掲載されており、これも初心者には嬉しいところです。
第1章は全体説明、第2章は外部制御(PIC)が不要なDSPラジオチップを使用した製作、第3章は局名が表示できるラジオ(あらかじめ登録された局しか受信できない)の製作、第4章は周波数をスキャンできるラジオ、第5章は時計付きの局名が表示できるラジオの製作となっています。
第5章 時計機能付き高機能FMラジオの製作
この頃ラジオを作り過ぎてますから、作ってないものを選ぶ必要があります。高性能なラジオチップで、なおかつステレオ再生ができるFMラジオが良いと思い第5章の時計付きの局名表示ラジオを製作することとしました。このラジオはあらかじめ書き込まれた周波数表から局名や周波数を読み込み動作させるもので自由に選局すると言うことはできません。でもよく考えたらカーラジオじゃあるまいし自由な選局なんて不要です。NHKFM、ZIPFM、FM愛知が受信できれば良いのです。(実際にラジオが聴きたかったらネットラジオでも何でも聴けますもんね。)

↑ 本誌では全ての製作をブレッドボードで行ってますが、製品としてケースに収まった形にするにはやはりプリント基板でなくてはいけません。と言う訳でハードを先行して製作しました。(この時点でPICには何も書かれてない。)
全く動作せず
ハード製作と同時にPICに書き込むプログラムを制作しなければなりません。
まずは、技術評論社のサポートページからプログラムをダウンロードし動作させてみることにします。ダウンロードした一連のファイルの中にはPICに書き込むhexファイルが付属しており、それは確実に動作が保証されたものです。

↑ ダウンロードしたhexファイルをPICに書き込んで動作させた時の様子。局名は空白、周波数は0MHzと表示されている。書込み装置が中華製のPICKIT3だからだめなのかと思い、別のプログラムを書き込みますが、何も問題ありません。
さんざん悩んだ挙句、技術評論社のサポートに聞いてみました。そうしたらあっさり「何も受信できないとその表示です。1回でも受信できれば通常の表示となります。」とのこと。
アンテナを接続しUpスイッチ、Down、Setスイッチを適当に触っていると動作するようになりました。(それ以降は何もなかったように動作する。)
ところでこのダウンロードしたプログラムですが、PICの8ピンがクロックSW、9ピンがダウンSW、10ピンがアップSW、11ピンがセットSWと、本誌のピンの割り当てと全然異なることに気付きました。編集部で追試確認してないのでしょうか。
愛知県のリストが入らない
ダウンロードしたhexファイルは東京の放送局リストで作られてます。このラジオを愛知県で聴くためには愛知県の放送局リストをPICに書き込む必要があります。PICは読み書きが自由なので、まずは実験としてダウンロードしたソースプログラム(Cで書かれている)をコンパイルしてそれをPICに書き込み動作を確かめます。
ところが、またまた、全然動作しません。既設のhexファイルでは動作したのにソースプログラムから再コンパイルしたhexファイルでは動作しないのです。これでは、東京の放送局リストを愛知の放送局リストに変更することなどできません。(著者の後閑哲也さんは名古屋の人らしいのに何で東京のリストしかないの、ちきしょー)
苦肉の策
ここに3つのファイルがあります。
① ダウンロードしたhexファイル(動作)
② ダウンロードしたソースプログラムから再コンパイルしたhexファイル(動作しない)
③ ソースプログラムを愛知県の局リストに変更し再コンパイルしたhexファイル(動作しない)
ここで、生成した③ファイルの元のソースプログラムは、②のソースプログラムの周波数、局リストのみを変更します。その他のパラメータは一切変更せず、行を削除したり追加してもいけません。該当県の放送局が少なくリストが余ったらダブらせておきます。
ここで、diffchecker.comとメモ帳アプリを使い、②と③の異なる行を探します。1000行の内40行ほどが異なります。そこが局リストだと思われます。
その部分をそれぞれ②A、③Aとします。メモ帳の検索機能で①から②Aの部分を探し、③Aに置き換えれば動作する愛知局リストの入った動作するhexファイル④が出来上がります。
この④をPICに書き込めばよい訳です。
一寸姑息な方法ですが、とりあえず機器が動作しないことには話しが進みません。PICの勉強も動作して初めて始めることができます。

↑ hexファイルをこんな感じで印刷すると17頁位になります。異なる部分(局リスト)は約2頁分です。diffchecker.comで異なる箇所を探しました。(KT0913_Ver2.Xの場合です。Ver3.Xの場合はもっと多くなりますが、局リスト部分は同じと思います。)
やっぱPICは難しい
本来ならばソースプログラムを自分で制作しオリジナルラジオを作りたいところですが、これは一寸難しいと言うことが分かりました。大体サポートページのソースプログラムがコンパイルできないってどう言うことでしょう。初心者には全く意味が分かりません。
完成されたソースプログラムの意味はグーグルのCopilotさんに聞けばすぐ分かりますが、コンパイルとなると別問題ですし、そもそもプログラムを一から作ろうとするのは相当な勉強が必要と思います。(根気がないとできないし、本件の様な事例があるとモチベーションを維持するのが大変です。)
でもまあ、簡単なことから気長に行こうと思います。
ところで、この時計機能付き高機能FMラジオですが、Ver2とVer3のプログラムに分かれており、Ver2はラジオ機能のみVer3は時計、目覚まし機能付きとなっています。今回、ラジオ機能のみのVer2を製作しましたが、(単純に時計機能が不要と思ったので)Ver3は今後PICのプログラミング技が向上したら挑戦してみたいと思います。
まとめ
ソフトとハード両方で動作する機器は動かない時にどちらが悪いのか分かりません。こんな簡単な物でも半月くらい悩んでました。もうこりごりです。
トヨタのプリウスを開発した人達はさぞ大変だったのだろうと尊敬の念を抱きました。また、作っていて思ったのですが、マイコン工作は面白くありません。動作する場合は普通に動作するのですが、動作しない場合は電源が切れているのと同じ状態です。スーパーヘテロダインの様にダメなときは「ピー、ギャー」言ってくれれば面白いのですけどね。ところでこのラジオ、完成後の感度はスーパーヘテロダイン並みに良いです。市販のラジオが全部DSP方式になってしまったのも分かる気がします。
また、今回、秋月電子の100円スピーカーを使用しました。このスピーカーはラジオにはピッタリのもので、通常のラジオ用スピーカーよりも高品質な良い音でFMを聴かせてくれます。宮甚商店の宮甚さんありがとう、YouTubeいつも観ています。