본문 바로가기
아두이노 사운드

[사운드/FM] FM라디오를 들을 수 있는 TEA5767 칩 기반 라디오 모듈

by 작동미학 2015. 4. 25.
반응형

TEA5767칩을 사용한 모듈을 통해, FM라디오를 들어보자

 

▶ 이 가이드를 따라하면

- TEA5767 칩을 사용한 모듈을 제어할 수 있다

- FM주파수를 변경하여 라디오를 청취한다

 

▶ 먼저 읽으면 좋은 글

- 라이브러리 설치 방법 : http://bbangpan.tistory.com/1

 

▶ 부품 설명 및 회로 구성

TEA5767칩은 I2C를 지원하는 FM모듈이다. 5V전원을 인가한 후 몇가지 명령을 내리면, FM라디오를 청취할 수 있도록 해준다. TEA5767칩을 응용한 다양한 모듈이 판매되고 있는데. 아래의 형태는 단순히 라디오 안테나를 끼우고 이어폰을 연결하면 청취가능하도록 구성할 수 있다.

<TEA5767 칩 연결도/VCC,SDA,SLC,GND를 UNO의 5V,SDA,SCL,GND에 각각 연결>

<모듈 뒷면. 스피커와 안테나를 포트에 꼽았다>

참고로 국내 FM은 88.0Mhz ~ 108.0Mhz 범위내에서 청취가능하다.

해당 모듈에 대한 상세 설명은 https://www.electronicsblog.net/arduino-fm-receiver-with-tea5767/ 를 참조하면 된다. 지원하는 스펙은 주파수 스캔, 해당 주파수의 특성(모노/스테레오 여부 확인) 확인 등 다양한 기능을 지원하지만. 여기서는 주파수 변경에만 초점을 맞추자. (이 외에 가변 저항을 달아 주파수를 손쉽게 조절하는 방법 등이 존재한다)

매뉴얼 확인 결과로는 별도의 볼륨 조절이 없기 때문에 볼륨 조절은 별도로 저항을 달아 조절해야 하는 것으로 판단된다(일반 이어폰으로 듣기에는 소리가 조금 큰 편)


▶ 소스 코드 입력 및 구동

Arduino Sketch 1.6.1버전에 UNO상에서 구동하였다. 아래는 FM주파수를 변경하는 예제이다.

GitHub 링크 : https://github.com/bbangpan/bbangpan.com/blob/master/neibc_fm_tea5767/neibc_fm_tea5767.ino

------------------------------------------------------------------------------------------------------------

/* Originally posted on www.bbangpan.com

 

Program Description: FM module test code

Needed library : Wire

Tested on : Arduino 1.6.1, Arduino UNO R3,TEA5767

 

Copyright (c) 2015 www.bbangpan.com. All rights reserved.

This program can be used for any non-commercial purpose freely. */

 

#include <Wire.h>

 

unsigned char frequencyH = 0;

unsigned char frequencyL = 0;

unsigned int frequencyB;

 

double frequency = 0;

 

void setup()

{

Wire.begin();

frequency = 93.1; //starting frequency

setFrequency();

Serial.begin(9600);

Serial.println(frequency);

}

 

void loop()

{

if(Serial.available()) {

int rc = Serial.read();

if(rc == '+' && frequency <= 108.0) {

frequency += 0.1;

setFrequency();

Serial.println(frequency);

} else if(rc == '-' && frequency >= 88.0) {

frequency -= 0.1;

setFrequency();

Serial.println(frequency);

}

}

}

 

void setFrequency()

{

frequencyB = 4 * (frequency * 1000000 + 225000) / 32768;

frequencyH = frequencyB >> 8;

frequencyL = frequencyB & 0XFF;

delay(100);

Wire.beginTransmission(0x60);

Wire.write(frequencyH);

Wire.write(frequencyL);

Wire.write(0xB0);

Wire.write(0x10);

Wire.write((byte)0x00);

Wire.endTransmission();

delay(100);

}

 

상기 소스는 시리얼 모니터 창에서 +/-를 눌러 엔터치면 FM 주파수를 오르거나 내리도록 한다.해당 결과는 화면에 표시되고 곧바로 해당 주파수에 해당하는 FM방송을 들을 수 있다. 단, 안테나와 이어폰을 해당 모듈에 반드시 꼽아야 정상 작동한다. 컴파일 업로드 후 시리얼 모니터를 확인해보자.

<상기 예제 실행 후 시리얼 모니터링 확면>

상기 예제를 활용하면 FM 라디오를 듣는 기능을 구현할 수 있다. (다만 음질이 좋지는 않았다. 여러번의 실험결과와 사용자 피드백에 근거해보면, 깨끗한 음질을 제공하는 모듈은 아닌것 같다)

소스 중에 setFrequency()는 frequency에 저장한 주파수값을 I2C로 해당 모듈에 전송하여 라디오를 듣게 해준다.

▶ 구매 가이드

TEA5767 모듈: http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20150424071841&SearchText=arduino+tea5767 ($5)

 

강의 키워드

Arduino FM Radio, Radio TEA5767, 아두이노, 아두이노 안테나,

 

반응형