电子说
关于合法性的快速说明
在大多数国家,建立一个覆盖大面积的个人无线电台或无牌建立和销售FM发射机是违法的。正如我在美国使用它时所写的那样,我检查了联邦通信委员会的网站上的指导原则,其中列出了我要遵循的要求,包括我的发射机可以扩展的最大范围(200英尺)。
在构建此发射器或使用天线扩展范围之前,根据您所在的国家/地区检查免费使用的FM频段,并确保您遵守您所在国家/地区的法律。
本教程仅用于创建个人使用的FM发射器!
什么是KT0803K?
KT0803K器件设计用于处理高保真立体声音频信号,并在短距离内传输调制的FM信号。该模块主要用于音频接口,尤其适用于麦克风或音频信号电缆。我们还可以修改音频信号输入以进行幅度调整并调整麦克风灵敏度,因为我们还可以在此模块中添加麦克风。
主要规格
I2C接口5V TTL兼容
Arduino即插即用
板载MIC
VCC输入:3.0V至5.0V
可以将一个小天线连接到该模块(任何约75cm的金属线都可以用作天线)。
让我们开始吧。
接线项目
将所有内容连接起来,如下图所示.Fritzing图。
Arduino诺基亚5110 LCD
GNDGND
D13SCK
D11DIN
D10CE
D9DC
D8RST
完成这些连接后,将电位器添加到A0引脚,如下所示。
ArduinoFM模块
GNDGND
5VVCC
SDAA4
SCLA5
最终的有线项目应该类似于上图。接线完成后,上传以下代码。
源代码
#include “U8glib.h”
#include
//U8GLIB_ST7920_128X64 u8g(13, 11, 12, U8G_PIN_NONE);// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
int channel=0;
float fm_freq = 90; // Here set the default FM frequency
int reading=0;
int last_reading=0;
int Current_reading=0;
int mapping_reading=000;
void setup(void){
pinMode(A0,INPUT);
Serial.begin(9600);
fmtx_init(fm_freq, USA);
u8g.setRot180();
u8g.setColorIndex(1); // pixel on !
//。..。..。..。..。..。..。..。..。..。..。..。..。..。..
u8g.firstPage();
do{
set_screen(1);
}
while(u8g.nextPage() );
delay(1000);
//。..。..。..。..。..。..。.
u8g.firstPage();
do{
set_screen(0);
}
while(u8g.nextPage() );
delay(1000);
Clear();
//。..。..。..。
u8g.firstPage();
do{
intro();
}
while(u8g.nextPage() );
delay(2500);
u8g.firstPage();
do{
intro2();
}
while(u8g.nextPage() );
delay(2500);
Clear();
//。..。..。..。..。..。..。..。..。..。..。..。..。..。..
}
// Reading Any Tunning change here.
void Analog_pin_read(){
channel=mapping_reading;
Current_reading=channel;
fmtx_set_freq(channel);
}
void set_screen(int i){
u8g.setColorIndex(i); // pixel on !
for (int x_axis=0;x_axis《84;x_axis++){
for (int y_axis=0;y_axis《44;y_axis++){
u8g.drawPixel(x_axis,y_axis);
}
}
}
void Clear(void){
u8g .setFont(u8g_font_04b_03);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
}
void intro(void){
u8g.setColorIndex(1);
u8g.drawFrame(0,0,83,47);
u8g .setFont(u8g_font_osr18);
u8g.drawStr( 5, 25, “FM Tx ”);
u8g .setFont(u8g_font_tpss);
u8g.drawStr( 5, 40, “ System”);
}
void intro2(void){
u8g.setColorIndex(1);
u8g.drawFrame(0,0,83,47);
u8g .setFont(u8g_font_04b_03);
u8g.drawStr( 2, 7, “Build Your FM station! ”);
u8g.drawStr( 2, 15, “Modify the frequency”);
u8g.drawStr( 2, 26, “By Ammar”);
u8g.drawStr( 2, 38, “Maker.PRO”);
}
//change frequency value On lcd here
void number(int value){
u8g.setColorIndex(1);
u8g.drawFrame(0,0,83,47);
u8g .setFont(u8g_font_unifont);
u8g.drawStr( 5, 15, “Frequency ”);
u8g .setFont(u8g_font_osr18);
u8g.setPrintPos(10,45);
u8g.println(value,DEC);
u8g .setFont(u8g_font_unifont);
u8g.drawStr( 45, 38, “MHz ”);
}
void loop(){
reading=analogRead(A0);
mapping_reading=map(reading,0,1023,90,100);
mapping_reading=constrain(mapping_reading,90,100);
if( mapping_reading!= Current_reading){
Clear();
Analog_pin_read();
u8g.firstPage();
do{
number(channel);
}
while(u8g.nextPage() );
delay(100);
}
}
全部0条评论
快来发表一下你的评论吧 !