怎样用ArduinoUno和诺基亚5110LCD模块以及基于I2C的FM发射器模块板构建FM发射器

电子说

1.3w人已加入

描述

关于合法性的快速说明

在大多数国家,建立一个覆盖大面积的个人无线电台或无牌建立和销售FM发射机是违法的。正如我在美国使用它时所写的那样,我检查了联邦通信委员会的网站上的指导原则,其中列出了我要遵循的要求,包括我的发射机可以扩展的最大范围(200英尺)。

在构建此发射器或使用天线扩展范围之前,根据您所在的国家/地区检查免费使用的FM频段,并确保您遵守您所在国家/地区的法律。

本教程仅用于创建个人使用的FM发射器!

什么是KT0803K?

KT0803K器件设计用于处理高保真立体声音频信号,并在短距离内传输调制的FM信号。该模块主要用于音频接口,尤其适用于麦克风或音频信号电缆。我们还可以修改音频信号输入以进行幅度调整并调整麦克风灵敏度,因为我们还可以在此模块中添加麦克风。

主要规格

I2C接口5V TTL兼容

Arduino即插即用

板载MIC

VCC输入:3.0V至5.0V

可以将一个小天线连接到该模块(任何约75cm的金属线都可以用作天线)。

让我们开始吧。

接线项目

将所有内容连接起来,如下图所示.Fritzing图。

Arduino

Arduino诺基亚5110 LCD

GNDGND

D13SCK

D11DIN

D10CE

D9DC

D8RST

完成这些连接后,将电位器添加到A0引脚,如下所示。

Arduino

ArduinoFM模块

GNDGND

5VVCC

SDAA4

SCLA5

Arduino

最终的有线项目应该类似于上图。接线完成后,上传以下代码。

源代码

#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);

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分