齢寿天任せ

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

電子工作するならAliExpressを利用しない手はない

2021-01-31 13:20:59 | 電子工作

電子工作をする場合に、部品の入手が中々厄介です。秋葉原に行けるならともかく、地方では無理。通販の定番は、秋月電子やaitendoですが送料が障害、まとまった購入でないと二の足を踏んでしまいます。Amazonでも入手できますが、どうしても割高。そこでAliExpressの登場です。

一例を挙げると、 Si4703 FM ラジオチューナーボード。Amazonでは、¥637(送料込み)。AliExpressでは、¥250(同)。ESP32の開発基板。Amazonでは、¥900位(送料別)。AliExpressでは、¥512(送料込み)。FMラジオのキット。Amazonでは、¥549(送料込み)。AliExpressでは、¥228(送料込み)。利用しない手はないと思います。難点は到着まで時間がかかることと支払いの2点。前者は、輸送がハンドキャリーだったり、第三国を経由したりするので、平均4週間位かかります(大金払って直送10日間も可能ですが)。これは、前広に注文することで何とかクリアするしかないです。

支払いの点ですが、クレジットカードは使えます。しかし、彼の国のことですから、心配な点があります。そこで、登場するのが、プリペイドカードです。プリペイドカードは審査がなく、個人情報の確認が緩い(書留郵送や本人受け取り郵便)です。私の場合、Dカードプリペイド(無記名)とWebMoney(無記名と記名の2枚)を取得しました。発行手数料もなく、年会費もありません。当初、WebMoney(無記名)を使用していたのですが、突然、無記名のものは海外通販には利用できなくなり、急遽、WebMoney(記名)を追加取得しました。WebMoneyのプリペイドカードは、スマホにアプリをインストールし、そこから申し込む方式です。スマホの利用が信用担保になっているようです。AliExpressで注文すると、即座にスマホのアプリに反映されます。難点は、利用履歴がスマホからしかアクセスできない点でしょうか。チャージはセブン銀行ATMでできます。クレジットカードや銀行口座からのチャージもできますが、最低額が3000円なので利用していません(用心のため、購入の都度、1000円単位でチャージ)。

AliExpressの利用状況ですが、電子パーツを主に数十回の利用で、不着はゼロ、輸送中の破損1件(返金済み)です。意外と優秀です。ただ、一般に、梱包が緩いので壊れやすい物は要注意です。物品のトータルな品質については、所謂、中華品質(日本のようにキッチリしてないというか緩い。雑音が許容範囲外で即ジャンク箱行きとか)です。高価なものは自己責任で利用してください。他にも細かい注意点は多々あります(例えば電気製品は、プラグが違うとか日本の規格に適合してない。衣類のサイズは中国規格(微妙に合いません)。等々)。あと、11月11日は、「独身の日」で、大セールがあります。


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

2021-01-30 11:45:33 | 電子工作

Si4703搭載FMラジオチューナ評価ボードを使ったFMラジオを製作したが、選局・音量の調節はパソコンが繋がっていないとできないという難点があった。
どうせパソコンを点けているならRadikoで聞けばと云われそうなので、パソコンなしで、選局・音量の調節ができるようにする。
最小スペックは、タクトスイッチを選局に1個、音量の大小に2個付ければ良いのだが、選局時には何回もタクトスイッチを押さなければならない上に、どの局を受信しているか分からなくなる。
そのため、放送局ごとに専用のタクトスイッチを割り当てることにした。この地方では、FM局がコミュニティ局も含めると10局以上あるので、音量調節も含めるとタクトスイッチが12個は欲しい。
問題点は、Arduinoでは、それだけのタクトスイッチを直接制御できない(おまけに配線の数がとんでもない)ことである。
そこで、Aitendo(パーツ屋さん)をサーチして、いいものを見つけた。16個のタクトスイッチを搭載したキーパッドである。このキーパッドには、PCF8574が載っているので、AruduinoからはI2Cで制御できる。配線は、4本で済む。
このキーパッドの制御には、ライブラリが2つ必要である。
Keypad_I2C.h (Github)
Keypad.h
プログラムでは、Keypad.hのexamplesフォルダにあるHelloKeypad.inoが3x4のキーパッド対応なので、4x4用に改修して利用している。


// keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
  {'f','b','7','3'},
  {'e','a','6','2'},
  {'d','9','5','1'},
  {'c','8','4','0'}
};
// Digitran keypad, bit numbers of PCF8574 i/o port
byte rowPins[ROWS] = {0, 1, 2, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 5, 6, 7}; //connect to the column pinouts of the keypad

実際のキーパッドのタクトスイッチとの対応は、左上から右下へ、’0’、’1’、’2’、…、’e’、’f’の順に対応している。 ’0’から’b’までは、各FM局の選局に対応させ、’e’、’f’は音量調節に使用する。プログラムはGithubを参照(利用は自己責任でお願いします)。
なお、最後の選局結果と音量を記憶しておくため、ArduinoのEEPROM機能を利用している。

(注)このキーパッドは部品のキットなので、60か所位ハンダ付けが必要です。また、ICのソケットとピンヘッダは付属してませんでした。

100均のホビーケースに入れてみました。黒色のタクトスイッチで選局します。黄色と赤色のボタンは音量調整用です。電源には、壊れたマウスのUSBケーブルを使ってます。中身の写真も載せておきます。Si4703基板、Arduino NANO、レベル変換基板が並んでます。



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

2021-01-30 11:16:16 | 電子工作

sparkfunのSi4703搭載FMラジオチューナ評価ボードの中華ものが、Amazonで安く(500円位)出ていたのでFMラジオを製作してみた。
このボードには、アンプも載っていて、オーディオジャックもあるので、直ぐに鳴らすことができ、使い勝手が良い。
Si4703は、I2Cで制御できるので、手元にあったArduino nanoと組み合わせることにした。
Arduino nanoとの接続は、以下の通り。 Aruduino側が5Vで3.3VのSi4703側と直結できないので、電圧レベルの変換(変換基板はAmazonサイトにあり)を行っている。

 Arduino      Si4703
 3.3V - 3.3V(VCC)
 GND    - GND
 A4  - (5V-3.3V) - SDIO (I2C)
 A5  - (5V-3.3V) - SCLK (I2C)
 D2  - (5V-3.3V) - RST
 D3  - (5V-3.3V) - GPIO2

試しに鳴らしてみるには、Sparkfunのサイトを参照して、DOCUMENTSタブにあるHookup Guideを参照すると良い。

まずライブラリ Si4703_Breakout.h をArduino IDEにインストールする。Hookup GuideのInstalling the Libraryの節にライブラリへのリンクがあるので、Si4703_Breakout.zipファイルをダウンロードする。Arduino IDEからこのファイルをライブラリにインクルードしてやれば良い。

Si4703_Breakout.zipファイルを解凍すると、examplesフォルダがあるので、その中のスケッチSi4703_Radio_Test.inoをArduino IDEに読み込む。次に、このスケッチをコンパイルしてAruduinoに書き込む。
あとは、Arduino IDEのシリアルモニタを起動してやれば、Hookup Guideにあるような画面が表示される。


FM局のプリセット選局コマンド”a”,"b"やSEEK UP/DOWNのコマンド”u”,"d"を入力して何かレスポンスが表示されればスケッチが動いている。

ただし、このままでは欧州での設定のままなので、日本向けにするためにはちょっと細工が必要である。Arduino IDEのライブラリのソースを変更する。既定だと…\Documents\Arduino\libraries\Si4703_BreakoutフォルダにあるSi4703_Breakout.cppの29行目辺りと150行目辺りの2行を以下の様に変更する。これで、受信周波数が76-108MHzに変更され、ワイドFM対応となる。

29行目辺り
newChannel -= 7600; 
150行目辺り
 si4703_registers[SYSCONFIG2] |= (1<<6);

あとは、スケッチ中のFM局のプリセット選局コマンドの周波数をローカルのFM局の周波数に変更してやれば良い。void loop()関数のコマンド”a”,"b"の処理のところで例えば以下のように変更する。

channel = 825; // 82.5MHz NHK FM

オーディオジャックに接続したケーブルがアンテナになっていて、受信感度は室内でも十分実用になる。