Help us understand the problem. What is going on with this article?

AR1019をArduinoで制御 DSP FMラジオモジュール

More than 1 year has passed since last update.

はじめに

  • 電子工作の初心者としてDSPラジオに挑戦。
  • RDA5807に続いて、AR1019に挑戦。作例も少なく、手探りだったが、Programming Guideもあって、何とか受信に成功。

使用したもの

  • Aitendoさんのモジュール。AR1019-M(http://www.aitendo.com/product/4765)
  • IC(AR1019)のデータシート、Programming Guide。上記のモジュールのページご参照。
  • Arduino Uno互換機(ELEGOO)

モジュールについて

  • DIP化。この変換基板(http://www.aitendo.com/product/11945) を利用。たまたま店頭で見かけたので使いましたが、他にも変換基板あります。
  • セロテープで仮固定し、フラックスを塗布すれば、はんだ付けは難しくないと思います。 20190821_231506.jpg

配線

  • これもモジュールの説明通りにつなぐだけ。イヤフォンに直接出力可能。出力コンデンサはなくても聞こえます。 AR1019.jpg

I2C読込/書込

  • I2C Scannerによると、Slaveアドレスは0x10。
  • 特に変な癖はなく、普通のコードで読み書きできます。連続した読み込み、書き込みもOK。

レジスタ

  • Programming Guideを見てみると、レジスタTableの説明がスカスカで、Default値が何かわからない箇所が多い。このままでは書き込めないので、まず全レジスタを読み込んでみた。
ADR 既定値 ADR 既定値 ADR 既定値 ADR 既定値
00H FFFA 09H 007D 12H 0000 1BH 65B1
01H 5B15 0AH 82C6 13H 5C80 1CH 1010
02H D0B9 0BH 4E55 14H 0000
03H A010 0CH 970C 15H 0000
04H 0780 0DH B845 16H 0000
05H 28AB 0EH FC2D 17H 0000
06H 2400 0FH 8097 18H 0000
07H 1EE7 10H 04A1 19H 0000
08H 7141 11H DF6A 1AH 0000
  • これを見ながら、必要なデータをレジスタに書き込むことになる。
  • 00HがFFFAとなっているので、クロックとしては内部オシレーター(+水晶)を利用する設定であることがわかる。すなわち、このモジュールにマッチした設定になっているので、クロックについては既定値のままでOKのはず。*
  • また、ENABLEビットが0であることもわかる。

Initialization

  • GuideにはICを起動するための手順がいろいろと書いてあるが、このモジュールを立ち上げるには、単純にENABLEビット(00H.0)を1にすればOK。上記の通り、既定値ではこのビットは0になっているので、1を書き込めばよい。
  • 具体的には、00HにFFFBを書き込めばよい。

Tune

  • Guideの"Pseudo Code"に沿って設定する。GuideではSTCフラグを待つことになっているが、ここでは省略しています。
    • hmuteを1にする。すなわち音を消す。01H.1を1にする。
    • 100ms待つ。
    • TUNEビット(02H.9)を0にする。02Hに全て0を書き込む。02Hは後でまた設定する。
    • SEEKビット(03H.14)を0、BAND/SPACEを設定する。03Hに書き込み。
    • CHANを設定し、Tuneビットを1に設定。02Hに書き込み。
    • hmuteをゼロにする。音を出す。
  • 新しい周波数(CHAN)を設定するときは、一旦TUNEを0にする、ということか 思います。

動作コード

  • 特定の周波数を書き込むシンプルなコード。詳細はコードとGuide見てください。
#include <Wire.h>

void setup()
{
Wire.begin();

//Initialization
Wire.beginTransmission(0X10); //slave address
Wire.write(0X00);  //register
Wire.write(0xFF); //00
Wire.write(0xFB); // ENABLE 1
Wire.endTransmission();
// Initialization end

Wire.beginTransmission(0X10); //slave address
Wire.write(0X01);  //register
Wire.write(0x5B); //
Wire.write(0x17); // hmute 1
Wire.endTransmission();

delay(100);

Wire.beginTransmission(0X10); //slave address
Wire.write(0X02);  //register
Wire.write(0x00); // 
Wire.write(0x00); // Tune 0
Wire.endTransmission();

Wire.beginTransmission(0X10); //slave address
Wire.write(0X03);  //register
Wire.write(0xB8); // SEEK 0
Wire.write(0x20); //  SPACE 1 BAND 11
Wire.endTransmission();

Wire.beginTransmission(0X10); //slave address
Wire.write(0X02);  //register
Wire.write(0xD2); // TUNE 1
Wire.write(0x6E); //  69+110*0.1=80
//Wire.write(0x87); //  69+135*0.1=82.5
//Wire.write(0x5c); //  69+92*0.1=78.2
Wire.endTransmission();

delay(100);

Wire.beginTransmission(0X10); //slave address
Wire.write(0X01);  //register
Wire.write(0x5B); //
Wire.write(0x15); // hmute 0
Wire.endTransmission();
}

void loop() {
  // put your main code here, to run repeatedly:
}

おまけ

  • 本モジュールはIC単体も入手可能。モジュールを自作してみました。はんだ付けが少し面倒でしたが、上手くいきました。
  • 配線は違いますが、同じコードで受信可能です。 20190822_205826.jpg
dabodabo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした