goo blog サービス終了のお知らせ 

齢寿天任せ

写真付きで日記や趣味を書くならgooブログ

Si4703搭載FMラジオチューナ評価ボードによるFMラジオ その3

2022-08-26 14:43:08 | 電子工作

SiliconLabのSi4703(FM DSPラジオIC)搭載の評価ボードについての記事は、3つ目(その1その2)である。この評価ボードで製作した2台のFMラジオはもう2年以上実用している。今回の記事は「その1」で行った試作の直ぐ後に作成したFMラジオについて紹介する。その概要とコードはGitHubに載せている。

特徴として、回路を簡単にし、部品を減らして、再現性を高めている。Si4703の制御は、Atmega328pで行ない、電圧を3.3Vに統一している。使用しているタクトスイッチ(ボタン)は3つだけである。表示にはOLED(SSD1306)を利用している。コントローラの基板(Auduino UNOなど)をラジオセットに持ち込まないのでコンパクトに組み立てられると思う。余談であるが、最近、Aruduinoの値段が高くなっていて、Auduino UNOなどを新規に買いたいと思わない。

写真に示したが、操作は、ボリュームの大小とFM局の選択だけである。百均のクリアケースに収めている。FM局の名前と周波数、ボリューム値をOLEDに表示する。FM局の名前と周波数は、予めコーディングしておく必要がある。受信できるFM局が多い場合は、タクトスイッチを追加して、正逆の選択ができるようにした方が良いかもしれない。電源はUSBからとるようにしている。5Vの電圧をAMS1117-3.3を使って3.3Vに変換している。

配線の様子は以下の通り。部品は最少である。なお、基板の下にも電源ラインの配線あり。Xtal発振子の周波数は16MHzである。発光ダイオードはピン19(PB5)に接続している。起動時に点滅する。

Atmega328pを単体で扱う場合は、いくつか考慮が必要である。その辺りの話はこちらのネット記事を参考にすると良い。まず、Atmega328pにはブートローダが書き込まれていなければならない。前記のネット記事にはその方法(Arduino UNOが必要)が紹介されている。難しいと感じる場合は、Atmega328pを購入する時にブートローダが書き込まれた物を購入すると良い。秋月電子から購入可能(それ程値段は高くならない。ピン配列のシールが貼付け済みで便利)である。

Atmega328pにスケッチを書き込む一番簡単な方法は、Arduino UNOの既存のAtmega328pを抜いて、該当のAtmega328pを差し込んでしまうことである。これが無理な(抜き差しには器具とコツがいる)場合は、USBシリアル変換器と若干の回路が必要である。これも前記のネット記事に説明されている。お勧めのUSBシリアル変換器は、ネット記事にも紹介されている秋月の FT232RL USBシリアル変換モジュール (AE-UM232R)であるが、同様なものがAmazonなどでも入手できる。ただし、PC側でのドライバの対応と、Atmega328pをリセットするための信号(DTR)がサポートされていることが必要である。

なお、Atmega328pの書き込みは5Vで行うことになっているので、スケッチの修正時に、既にSi4703やOLEDなどを組み込んだ基板上(3.3V)では書き込みできないので注意が必要である。また、3.3V動作では、16MHzのクロック周波数は保証されていないので、これも注意が必要(動いたらラッキー)である。


M6955(AKC6955)によるオールバンドラジオ受信機の製作

2022-05-13 16:17:58 | 電子工作

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あるので、小型のスピーカーを直接接続できる。


100均の単三2本のUSB充電器

2022-04-26 15:31:23 | 電子工作

最近、「USB家電」なるものの種類が増えてきた。スマホの充電器のUSB端子に差し込むと使えるタイプの家電のことである。スマホの充電器はどこの家でも転がっているし、テーブルタップにもスマホの充電器付きのものがある。従来、乾電池で動作していたものが、続々と「USB家電」に変わりそうである。ただし、リチウム電池内蔵のものを増やすのは止めた方が良い。リチウム電池は扱いが難しいので、安物は危険であるし、捨てる時にも困る。一方、リチウム電池なしの「USB家電」は安価で、「百均」と相性が良い。

例を挙げると、卓上用のUSB扇風機。パソコンのUSB端子に接続できるし、パーソナルには十分涼しい。手元用のLED照明。夕方に手元が暗くなって来た時に重宝である。USBのミニルーター。USBパーソナル加湿器。等々。電子工作でも、元々、乾電池で動作する想定の物が多いので、USB電源がとても便利である。USBのコードは、壊れたマウスの物が再利用できるし…。

「USB家電」が増えてくると、USB電源が無い所で使いたいとか、停電の時に使いたいという要求が出てくる。基本的にはモバイルバッテリーがあればOKである。ただ、モバイルバッテリーは再充電が必要という問題がある。じゃあ乾電池は使えないか?ということで探してみたところ、セリアのUSB充電器ダイソーのUSB充電器を発見した。いずれも単三の乾電池2本で動作する(注 最近のダイソーの物は乾電池4本、500円)。記事を参照すると、両者ともスマホの充電には、能力が足りない様子。さらにセリアの商品については、スマホには使えないという表示があり(電力不足)。あくまでも緊急用。しかしながら、「USB家電」の電源には十分と考える。

単三電池2本(3V程度)から、USB電源(5V)を得るためには、昇圧回路が必要で、分解して調べた記事あり。部品だけ集めても100円超える。これを、100円で売れるのだから、「百均」恐るべし。

正体が分かったところで、セリアで見つけて購入、使ってみた感想を報告。まず、様子を見るため、壊れたマウスを接続した。LEDが光り、電圧を測ると4.6Vあり。次に、USB端子に直接差し込めるLED照明を接続。懐中電灯として使える。最後に、電子工作で製作したFMラジオを接続、無事に動作。昇圧回路の効率が問題になるので、普段使うにはお勧めではないと思うが、メリットは、使い古して、1.2V位になったアルカリ乾電池が十分使えること。FMラジオは数時間動作したので、捨てるだけの乾電池が有効利用できる。ただし、電力を食う「USB家電」には使えないのでご注意を。

USB端子に差し込めるLED照明、Amazonなどで売ってます。

USBのコードは、壊れたマウスのものを使用。


Si4732によるオールウェーブラジオ受信機の製作

2022-01-23 12:55:24 | 電子工作

Si4732はSiliconLabs社のSOP16ピンのDSPラジオICで、FM、AM、SW受信に対応している。I2Cによるマイコン制御である。Amazonなどで販売されているラジオ受信機に採用されている。ICはAlixexpressから購入できるが、人気があるのか比較的高価である。コロナ禍前には、1個300円台であったが、半導体不足騒ぎの頃は1個800円台まで高騰したことがある。人気の理由は、マイコン(Arduino)のスケッチ(良くできていて、特徴として、コードからファームウェアにパッチをあて、SSBを受信可にしている)がGitHubから入手できるからである。不良品(5個単位なので大損?)の懸念もあったが、決心して購入した。データシートアプリケーションノートはネットから入手できる。

配線はブレッドボード上に行うので、Si4732はSOP16ピン用の変換基板にハンダ付けする必要がある。Si4732の供給電圧は3.3Vなので、マイコン(Arduino)はArduinoProMini(3.3V)にする。5V系のArduinoにするとレベル変換が必要である(配線を誤るとSi4732を破壊するリスクあり)。回路図、必要なパーツや全体の配線については、GitHub(SI4735/examples/SI47XX_03_OLED_I2C)を参照する。特別なパーツとしては、表示にOLED、同調にロータリーエンコーダを利用している。組み立てにあたってはこちらも参考にすると良い(ただし5V系のArduinoなのでご注意。部品が揃わない時はこちら(ヤフオク)から購入するのも手)。なお、Arduinoのスケッチは、Si4732と互換性があるのでピン番号を変換すればそのまま利用できる。注意点は、I2Cのアドレスであるが、Si4732のSENBピンの接続によって変更できるらしい。ここで使うスケッチでは、I2Cのアドレスを自動識別しているとの記述もある。筆者のところでは、SENBピンをGND(グラウンド)に接続した状態で動いている。

回路の接続を終えた後は、ArduinoProMiniにスケッチを書き込む必要がある(注 ArduinoProMiniはUSB-シリアル変換器が必要)。まずAuduinoIDEにSi4735のライブラリをインストールする必要があるが、pu2clr/SI4735には、ライブラリマネージャから”si4735”を検索してインストールする方法が紹介されている。ArduinoProMiniに書き込むスケッチは、”SI4735/examples/SI47XX_03_OLED_I2C/SI47XX_02_ALL_IN_ONE_OLED/SI47XX_02_ALL_IN_ONE_OLED.ino”である。なおArduinoProMiniとSi4735の接続方法がスケッチの冒頭に紹介されているので、Si4732の対応するピンに読み替えて接続すれば良い。使用するOLEDはSSD1306(I2C)タイプで、ライブラリはライブラリマネージャから”Tiny4kOLED”を検索してインストールする。

FM、AM、SW(短波)の受信を確認してみた。アンテナは室内設置のマグネチックループアンテナである。全体の印象としては、IC個体のせいかもしれないが、明瞭度が「いまいち」と感じる。音量のレベルはイヤホンでもギリギリで、アンプが必要である。バックグラウンドのホワイトノイズ系の雑音が気になるので、増幅すると耳障りかもしれない。ローカルのFM局は受信できた。ただし音質が「いまいち」で、常用する気にはならない。AMは、ローカルの大出力の局(NHK)が受信できた。民放局は信号を感じるが放送内容が聴き取れないレベル。SWは、7MHz帯の北京放送が何とか聴き取れた。SSB(Single Side Band)は切り替えが確認できたが、SSB局がいないので実際の受信状況は確認できていない。作って楽しむには面白いが、無線機として実用に使うには、ちょっと厳しいレベルである。


KT0936(DSPラジオ)の試作

2021-12-13 10:03:28 | 電子工作

KT0936MはKTマイクロ(中華)のDSPラジオである。AlixExpressで、1個当たり70-80円で売られているのを見つけたので買ってみた。FM、AM、SWが受信でき、音声はモノラルである。SiliconLabsのSi4825の競合製品の位置づけか。安価なポケットラジオ用のICである。SOP-16のパッケージなので、ハンダ付けも可能である。

特徴は、EEPROMを接続して、外部からの動作パラメータを設定できることである。電源ON時にEEPROMからデータを読み出し、内部レジスタに設定する仕様になっている。しかし動作の詳細は不明である。KT0936Mの自作記事があまりないのは、これが理由かなと思う。ただ、デフォールト値でも動作するので、EEPROMの接続は必須ではない。データシートの回路図にもEEPROMが接続されていないものが掲載されているので、今回はこれで試作することにした。

受信バンドの変更は、抵抗による分圧回路で行う。抵抗値が中途半端なので合わせるのが難しい。同調は、10KΩボリューム(可変抵抗)により、電圧を変化させて行うタイプである。なかなかクリティカルで、ラジオ局に合わせるのが難しいと感じた。同調表示のLEDを接続することができる。音量は固定である。スピーカーを鳴らすのは無理であるが、イヤホンなら十分であり、音質はクリアである。

AMの受信にはバーアンテナが必要であり、SWの受信は、トランジスタ1段の増幅回路が推奨、受信バンド切り替え用の抵抗が用意できない。ということで、今回はFM局の受信のみとした。Si4825の時のようにICが不良品ということはなく、ハンダ付けと組み立ては無事完了。クロック発振用のクリスタルとコンデンサは基板に直付けにしてある。こうすると配線の取り回しが楽になる。受信バンド切り替えの抵抗選択に試行錯誤(回路図は63.4Ω)したが、ローカルのFM局は受信確認できた。同調用の10KΩボリュームの接触が不安定だと受信も不安定になるので注意が必要。FMだけの試作であるが、受信バンド切り替え用の抵抗が用意できれば、安いのでお勧めかなと思う。


Bluetoothスピーカーの製作

2021-10-20 13:42:08 | 電子工作

百均ショップでは、Bluetoothスピーカー(モノラル)が500円位で売られている。通販では、2000円から3000円位で1レベル上の製品がある。その中味と思しきBluetoothレシーバーの基板がAliExpressで売られているので入手した。入手時は、リモコン付きで200円以下だったが、最近は基板も送料も高くなっていて、送料込みで、200円から300円前後している。あとは、スピーカーとボックス、電源用のUSBコードがあればBluetoothスピーカーが作れそうである。

スピーカーのボックスは、百均ショップにて、壁にピンで留めて飾り棚に使うような四角い箱を見つけたので、それを使うことにした。ただ、板が薄いので、オーディオ的にはダメである。スピーカーは、壊れた中華CDラジカセから外した3インチ径の物を使用した。8Ω、2Wの安物である。当然、低音は出ないので、スピーカーのボックスと似合いである。Bluetoothレシーバーの基板は、ステレオをサポートしているので、スピーカーは2個用意した。余談であるが、ラジカセの駆動部には、ゴムベルトが使われていて、10年も立つと、ゴムが伸びて、カセットテープが駆動できなくなる。そのため我が家の、カセットプレーヤーはすでに全滅している。交換用のゴムベルトは、ネットで購入できるが、交換には高度な分解が必要で、交換作業は困難であると思った方が良い。

一番苦労したのは、スピーカーを取り付けるバッフル板(今回は5mmのベニヤ板)の穴開けである。電動の糸鋸などは持っていないので、回し引きで開けたのであるが、錆びていて滑りが悪く、だましだまし2つの穴開けるのに2時間もかかってしまった。

入れ物が完成すれば、後は配線工事である。Bluetoothレシーバーの基板には、イヤホンジャックとスピーカー端子の両方があるので、スピーカー端子にスピーカーからの配線をハンダ付けする。基板にはネジ穴がないので、ボックスにマジックテープで貼り付けて固定している。電源は、リチウム電池が接続できるようになっているが、充電用のUSBのジャックがあるので、余っているスマホの充電用USBケーブルを接続すればよい。ここでは、基板側に電源端子があったので、USBケーブルから3端子レギュレータ(3.3V)を経由して接続している。以上で完成である。なお、スピーカーのバッフル板は、リモコン用の穴を開けた後、養生テープで仮止めしている。

スマホとペアリングして、radikoを再生してみる。低音は出ないが、中々クリアな音質である。十分実用になる。リモコンでは、音量の操作ができた。一人で聴くには、十分な音量である。実は高級なBluetoothスピーカー(「バッテリーあとxx%です」としゃべる)を所有してしているのであるが、充電が不要というのは結構メリットであると感じた。


Si4825(DSPラジオ)の試作

2021-10-07 12:41:20 | 電子工作

Si4825は、SILICON LABSのDSPラジオICである。FM、AM、SWが受信できる。音声は、モノラルである。AliExpressで、5個259円(送料込み)で安く売っていたので、買ってみた。500円位の中華ラジオに使われている。同様スペックのステレオ版は、Si4836で、こちらの方は昨今の半導体不足の影響か、1個500円もするのでとても買えない(後述するがゴミになる可能性がある)。Si4825のデータシートはネットの検索で入手できる。またSILICON LABSのアプリケーションノートAN738も入手しておく必要がある。

Si4825は、SOP16ピンのパッケージなので、専用の基板(AliExpressや秋月電子にあり)にハンダ付けする必要がある。基板は、ピンの間隔が1.27㎜で、目で見てハンダ付けできる限界に近い。ハンダゴテも先が細く尖っている専用の物が必要である。予め基板側にフラックスを塗り、厚めにハンダメッキをしてから、再びフラックスを塗った後で、Si4825を載せ、足を一本一本ハンダゴテで押さえる様にしてハンダ付けすると上手く行く。当然、基板とICのピン間の導通は、テスターで一本一本確認しておく必要がある。

基板にピンヘッダーをハンダ付けしてから、ブレッドボードに載せ、配線を行う。回路図は、データシートに載っている。まずはFMが受信出来れば良い。AMを受信するためには、バーアンテナかループアンテナが必要なので今回は省略。Si4825は、TUNE1ピンの基準電圧を抵抗分圧して、BANDピンに印加することで、受信バンド(受信モードと周波数帯)を選択するスペックである。これがなかなか難しい。アプリケーションノートAN738には受信バンドが41(も)あると記載されている。一方、TUNE1ピンとグラウンド(GND)間の抵抗は500KΩにする必要があり、接続する抵抗の値に精度が要求される上、値自体が中途半端になってしまうのである。さらに問題なのは、実際に、どの受信バンドが選択されているか分からないのである。

ここでは、実験なので、TUNE1ピン側から、150KΩ、150KΩ、100KΩ、100KΩ(GND側)の4本の抵抗を接続して見た。受信状況であるが、GND側から100KΩのポイントをBANDピンに接続すると、Band5,6(FM)になり、90MHz付近のFM局が受信できた。次にGND側から200KΩのポイントをBANDピンに接続すると、Band15,16(FM)になり、80MHz付近のFM局が受信できた。ただし、いずれも音質は良くない。GND側から350KΩのポイントをBANDピンに接続すると、SW(短波)になり、北京放送らしき局が受信できた(外部アンテナ接続)。ただし、周波数帯は不明である。なお、SW(短波)を受信する場合は、トランジスタ1段の増幅回路を推奨している(アプリケーションノート参照)。

ということで、一応放送の受信はできたが、色々と問題があった。まず、受信できたのは、3つ目のSi4825チップである。最初に選択したチップは、全く動作しなかった。2つ目のチップは、電源を入れると雑音は入るが、放送は受信できなかった(写真を参照、上の2つのチップは「ゴミ」です)。ここで諦めてはと、意地で3つ目のチップを試した結果である。アタリ、ハズレがあるとは、安い理由が理解できた。救いはハンダ付けが上手くなったことである(泣)。次に、音質である。まず、音量が十分ではない。VOL+ピンとVOL-ピンをGNDに接続するとMAXになるはずであるが、イヤホンでも小さいと感じる。音質も歪が目立つ。ボリュームによるチューニングもクリティカルでコツが必要である。使用したチップ個体のせいかもしれないが、実用には、いまいちという結論である。

 


高一スーパー・トランジスタラジオを作ってみた

2021-07-01 17:42:05 | 電子工作

AM波ラジオのFM波移行が加速されるようである。その昔、ゲルマニウムラジオはラジオ少年の入門アイテムであった。AM波だからゲルマニウムラジオで放送が受信できた訳であり、FM波になるとそうはいかない、少々寂しさを感じる。

当時、真空管のラジオは既にレガシーで、ラジオと言えばトランジスタラジオの時代であった。6石スーパーラジオというのが標準であった。「6石」というのは、トランジスタを6個使用しており、「スーパー」というのは、スーパーヘテロダイン方式という受信回路の方式名である。トランジスタラジオは、小さなボディに部品が一杯詰め込んであり、とても自作できる代物とは思えなかったのを憶えている。

部品箱の中に、ラジオ用の高周波コイルが転がっているのは知っていたが、ずっとそのままにしていた。ところが、あるWebの記事を見た時に、高周波コイルのコアの色により用途が分かるという解説があり、3個(赤、白、黒の3種類)あった高周波コイルを使えば、トランジスタラジオを作ることが可能であると気が付いた。ただ、問題は高周波コイルが、今でも使用可能であるかどうかである。テスターでチェックすると案の定、3個の内、2個が導通が無い。ダメもとで、高周波コイルを分解したところ、2個とも端子のところで断線していた。断線しているところをハンダ付けし直すと見事に復活した(本当のところは動作するまで分からない)。あと、手元に無いのは、バーアンテナとバリコンである。手持ちのラジオを分解して手に入れることを考えたが、思い止まり、通販で購入することした。

というわけで、高一スーパー・トランジスタラジオを作ってみた。回路は電子うさぎさんの記事を参考にしている。「高一」(高周波一段増幅)のところには、古典的なFETである2SK19を使用、局発(局部発振回路)・周波数変換には、これも古典的な2SC372を使用。中間周波数増幅には、電子工作定番の2SC1815を使用した。低周波増幅回路には別稿にて紹介したSEPPのトランジスタ増幅回路を使用している。

利用してみた感想であるが、バーアンテナでは、地元のNHK第一、第二の2局は受信可能、民放局は雑音レベル以下で受信不可であった。特に感じたのは、都市環境の雑音が酷く、AM波だとかなり電波が強くないと受信できないということである。外部アンテナを繋いでみると雑音一色になって、放送波に同調できなくなってしまう。その昔、アンテナ線を長く伸ばして、夜間に微かに聞こえる遠くの放送局を受信して楽しんだ中波帯は(都市環境では)ダメになってしまったと感じる。残念ながらFM化もやむを得ないのかなぁ。

 


SEPP トランジスタ・アンプを作ってみた

2021-05-18 14:20:28 | 電子工作

SEPPは、シングルエンディッド・プッシュプル・アンプのこと。出力トランスが不要の回路構成(OTL、アウトプット・トランスレス)になるのが最大のメリット。出力トランスは今となっては、入手が難しい部品。しかも、音質があまりよろしくない印象がある。今回、参考にしたのは、RFワールド・ウェブ・ブックス「ラジオで学ぶ電子回路」の「第13章 オーディオアンプ」。トランジスタによるA級シングルアンプ、B級プッシュプルアンプ、そしてSEPPアンプの動作原理と回路図が記述されている。

今時、個別部品のトランジスタでわざわざアンプを作る時代ではないけど、その昔、ラジオ少年だった頃、SEPPアンプは、憧れで、いつか作ってみたいと思っていた。たまたま、部品箱の一山いくらで入手したトランジスタの中に、コンプリメンタリ構成が可能なものがあったのがきっかけである。もう一つのきっかけは、前記のドキュメントの回路に、ダイオードが利用されていなかったことである。SEPPアンプといえば、終段のベース回路に、何故かダイオード(定電圧のバイアスと温度補償のためらしい)が数本挿入されているのが常で、これが型番指定で入手し難い。前記のドキュメントでは、同じ型番のトランジスタを向かい合わせで実装し、ベースとコレクタを直結してやればダイオードの代わりになるとあった。なるほどと思った。

使用したトランジスタは、中華のS8050(NPN型)とS8550(PNP型)。最大コレクタ電流が500mAで割と大きく、1Wぐらいは出る。しかも安い(まとめて買うと10円/個以下)。あと、定番の2SC1815(オリジナルは東芝)を初段に使用した。これらのトランジスタ、パッケージはモールドタイプで同じなのにリード線の配置が異なる。中華は、EBCの順、東芝はECBの順である。注意が必要。理由は不明であるが、ベースには、入力があり、さらに固定バイアスを掛けるので部品が集中する。真ん中にあるより外側にある方が都合が良いと思うがどうだろう。

回路上、2Ωと指定されていたR2~R5は、手持ちの都合で、3Ωに変更した。またR1は、1KΩから430Ωに変更、VR1は、100KΩに固定した。電源は、UCBからの5V供給に変更。終段のエミッタの電圧が、2.5VになるようVR1を調整する必要があるが、100KΩでは、2.1V位になった。出力特性として、若干歪みがあるかもしれない。以上を、5cmx7cmの基盤上にステレオ構成で実装した。なお、ドキュメントの最後にある入力側の平衡回路は実装していない。

使用してみた感じでは、音質は好印象、音量も十分、歪もそんなに感じない。まずは、成功の部類か。利得が高いので、入力は10KΩ:1KΩ(GND側)に分割減衰した。ボリュームは必須だと思う。

電源はUSBから取るようにしたが、驚いたことが2つ。スマホの充電アダプタから取ると、DC-DCコンバータの発振周波数がそのまま聞こえる。これはダメ。パソコンから取るとマウスを動かす度に、「ギュルギュル」と雑音が入る。これもダメ。結局、スマホのモバイルバッテリーから電源を取るようにした。


ESP32-DevKitCによるインターネットラジオの製作

2021-03-05 14:28:01 | 電子工作

【最後に追記があります】

ESP32-DevKitC(以下ESP32)を使って、インターネットラジオを作成する実験を行ってみて、結構使えることが分かったので、実用的なものを作成しようと思った。インターネットラジオ局のデータストリーム(MP3)を音声にデコードする部分はライブラリがそのまま利用できるので、インターネットラジオの操作機能を実現する部分(Arduinoのスケッチプログラム)を製作すれば良い。なお、ESP32とはWiFiで接続するために、WiFiのアクセスポイントが必要であり、そのSSDとパスワードは、Arduinoのスケッチ内に記述する必要がある。

目標機能は以下の通り。

・インターネットラジオ局を予め複数設定して置き、切り替えができる。
・音量の調整ができる。
・60分程度で省電力モード(スリープ)になるスリープ機能。
・表示機能を付ける。

さらに、これらを、ブラウザからも操作可能とする。また、新たなインターネットラジオ局を見つけた時に、それが実際に聴けるかどうか確認するため、一時的なURLを設定できる機能も実現することにした。

表示装置には、SD1306 128x64 OLED表示装置を利用した。ESP32にはI2C(アドレスは既定のまま)で接続する。AmazonやAliexpress(※1)で数百円で購入できる。表示される文字数の制限があるので、アーティスト名、曲名の表示は気休め程度である。日本語は表示できない(ブラウザには表示できた)。他に音量、インターネットラジオ局名も表示する。なお、ブラウザからアクセスした場合にも、同様な表示を行う。したがって、この表示装置自体は無くてもよいことになる(起動できたかどうか確認する時など少しだけ不便)。
※1Aliexpressには一般のクレジットカードではなく、プリペイドカード(記名式のもの。匿名のものは利用不可)を使うことを強く推奨。

上記の目標機能の操作は、タクトスイッチ(4個接続)を押して行う。ブラウザから操作する場合には、それぞれのボタンが表示されるので、クリックすればよい。したがって、タクトスイッチが無くても、パソコンやスマホから操作はできる(タクトスイッチは省略可)。結局、最小構成は、ESP32とI2SのDACがあればOKである。

インターネットラジオ局のURLは、shoutcast.com (”LISTEN”メニューをクリック)から、m3uファイルをダウンロード(※2)すると、その中に記述がある。ただし、キチンと再生されたらラッキーである。まず128Kbps、MP3のものを選択すること。データストリームに何かしら細工がしてあるものは残念ながら正しく再生できない(例えばradikoがそう)。また、chunk形式のものは音が途切れる。適切なインターネットラジオ局を見つけるのは、なかなか難しく、苦労が必要。折角、見つけたと思っても、URLが変わることがある。
※2ブラウザによってダウンロードアイコンをクリックしてもダウンロードできないことがある。例えばIEがそう。

実際に使ってみて、十分実用になると感じた。ただ、常時150Kbps程度の通信が必要なので、回線状況によっては、やはり音が途切れることがある。WiFi接続も不安定な場合(距離や競合、電子レンジの影響)は、音切れが生じる。

機能を拡張しながら、色々評価してみて、結局、ブレッドボードから、ユニバーサル基板に実装し直し、MAX4410のヘッドホンアンプを追加後、 写真のように、古いLANルータのケースに収めて実用にしている。電源は、スマホの充電アダプタ(5V)を流用し、古マウスのUSBケーブルで接続。音声出力はオーディオジャック経由でスピーカー(ステレオ)に接続している。さらに興味のある方、Arduinoのスケッチプログラムや操作方法などは、GitHubを参照頂きたく。

【追記】

・このインターネットラジオで2年以上楽しんできた、asia DREAM radioのURLがサーバーの更新で2023/5/5に変更されました。新しいURLは以下の通りです(スケッチプログラムの中に記述してあるURLの書き換えが必要)。

  • J-Pop Sakura "http://cast1.torontocast.com:2170/stream"
  • Japan Hits "http://cast1.torontocast.com:2120/stream"
  • J-Pop Powerplay "http://kathy.torontocast.com:3560/stream"

新しいサーバーは音声が前より途切れがちな感じです。なお、asia DREAM radioサイトのWINAMPの設定ファイルをダウンロードすると拡張子plsのファイルの中にURLが記述されてます。

・Arduino IDEに追加するボードマネージャのesp 32 by Espressif SystemsにはVersionが、2.0.xと1.0.xがありますが、2.0.xでは音がでません。1.0.xを使ってください。1.0.6で動作を確認してます。

・MP3のデコードを行うライブラリは、更新され、かなり変わってます。最新のものを使うとコンパイルエラーになります。当時のライブラリはGitHubのスケッチプログラムの”src”フォルダに保管してあります。