2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

きっかけは?

とある知り合いから「こんなの買ったんだけど使い方わかんねー」と話があったから。
調べてみると確かに情報が少ない……世界を代表する秋月電子が販売する商品で情報が少ないのは良くあることなので調査がてら動かしてみることに。

参考サイト

以下のサイトがめちゃめちゃ役に立った。
https://www.electronicsblog.net/arduino-fm-receiver-with-tea5767/
https://www.sparkfun.com/datasheets/Wireless/General/TEA5767.pdf
秋月電子が公開しているデータシートは参考程度に…
https://akizukidenshi.com/goodsaffix/rda5807.pdf

準備

何がともあれ以下の品を揃えてみた。(秋月電子の回し者ではないですよ)

品名 価格 購入先
FMラジオモジュール RDA5807H 300円 秋月電子
raspberry pi pico w 1,358円 amazon
ブレッドボード用ダイナミックスピーカー 190円 秋月電子
4.7μFコンデンサ ?円 家にあったやつ
101セラミックコンデンサ(100pF) ?円 家にあったやつ
ケーブル少々 ?円 家にあったやつ
ピンヘッダ少々 ?円 家にあったやつ
片面ユニバーサル基盤 ?円 家にあったやつ

作ってみよう

参考サイトとあまり役に立たないデータシートを元に以下の回路を構成。
rda5807_radio_回路図.png

コードを組み立てよう

参考サイトをベースに以下のコードを作成。
pythonなのでThonnyとやらで書いて、raspbrry pi pico wに流し込む。

main.py
import radio.py
radio.py
import time
import machine

i2c=machine.I2C(0,sda=machine.Pin(4), scl=machine.Pin(5), freq=10000)
print(i2c.scan())

def radio_frequency(freq):
    freqB = 4 * (freq * 1000000 + 225000) / 32768
    i2c.writeto(0x60, bytearray([int(freqB) >> 8, int(freqB) & 0XFF, 0XB0, 0X32, 0X00]))
    print(freq)
radio_frequency(79.51)

コードの解説

厄介なのがi2c通信で流すパラーメータがなんなのか全然情報が掴めなかったこと。
RDA5807Hで検索しても情報が少なすぎる。
調べていくうちにRDA5807≒TEA5767であると判明し、NXPのデータシートに辿り着いた。

PLL値の計算

freqB = 4 * (freq * 1000000 + 225000) / 32768

PLLとは?詳しくはこちら
https://ie.u-ryukyu.ac.jp/~wada/design05/spec_j.html

i2cコマンド

i2c.writeto(①0x60, bytearray([②int(freqB) >> 8, ③int(freqB) & 0XFF, ④0XB0, ⑤0X32, ⑥0X00]))

①0x60

参考サイト①の通り、「TEA5767 書き込み時の IC2 アドレスは 0x60」とあるのでそのまま流用。回路構成後、試しにi2c.scanするとシェルに90(DEC)が返ってきたのでこれをHEXに変換すると60、ドンピシャ正解。

②int(freqB) >> 8

計算したPLL値 freqB の上位8ビットだけ取り出す

③int(freqB) & 0XFF

計算したPLL値 freqB の下位8ビットだけ取り出す

④0XB0

参考サイト②のテーブル10を参照
image.png

⑤0X32

参考サイト②のテーブル13を参照
image.png

⑥0X00

参考サイト②のテーブル15を参照
image.png

与太話

何故79.5ではなく79.51なのか?
PLL回路の精度が悪いのか希望周波数ピッタリでは完璧なチューニングにはならない模様。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?