Arduino无线电台
实验题目:Arduino无线电台
课程简要信息
课程名称:电子设计基础训练
课程学时:理论8+实验48
项目学时:8个实验学时
适用专业:信息类
学生年级:大一第2学期
实验内容与任务(限500字,可与“实验过程及要求”合并)
Arduino无线电台实验使用Arduino开发板和基本电子元件,完成无线电报和无线广播发射机的设计、搭建、编程和调试。实验分为基本要求、进阶要求和拓展要求。
-
**基本要求:**实现无线电报的按键发报功能,具体分为信息获取、信息处理、信息传输三个模块。信息获取模块采用按键电路向Arduino输入高低电平。信息处理模块采用Arduino编程,根据获取的输入电平生成需要发送的音调信号。信息传输模块利用Arduino输出的高频方波信号来携带音调信号,实现无线信号发射。使用蜂鸣器测试音调信号和发射信号,使用收音机接收无线电报信号,完成实验测试。
-
进阶要求:实现无线电报的自动发报功能。在基本要求的基础上,将信息获取模块的按键输入升级为Arduino串口输入,在串口监视器输入要发送的报文。信息处理模块采用Arduino编程,将串口读入的报文自动转译成莫尔斯电码,并生成对应的音调信号序列。信息传输模块保持不变。
-
**拓展要求:**实现无线广播功能。信息获取模块采用麦克风信号放大电路,将声音信号输入Arduino模拟端口;信息处理模块采用Arduino模拟输入和模拟输出功能,将麦克风声音信号转为PWM信号;信息传输模块保持不变。
实验过程及要求(限300字)
-
完成课程线上教学平台“课前准备”模块的预习思考题;
-
完成无线电报的按键发报功能:
a) 设计按键电路输入高/低电平;
b) 采用Arduino编程,根据输入信号生成音调信号,配置定时器生成高频方波;
c) 利用二极管、与门等元器件,实现高频方波携带音调信号的无线发射;
- 完成无线电报的自动发报功能:
a) 采用Arduino串口输入要传输的报文;
b) 按照莫尔斯电码,将串口输入的报文转换为音调信号序列,并进行无线发射;
- 鼓励完成无线广播功能:
a) 实现麦克风信号放大电路
b) 采用Arduino模拟IO将麦克风声音信号转为PWM信号,并进行无线发射;
-
记录实验过程和测试结果,完成线上教学平台上的“在线答题”环节;
-
教师检查实验结果,学生撰写实验报告,并选拔优秀作品进行展示。
相关知识及背景(限150字)
本实验是为信息类大一学生设计的综合认知实验,通过软硬件相结合的方式,设计和实现一个典型的电子信息系统。实验涉及基本电子元器件特性的认知和巧妙应用,并鼓励学生应用所学的微积分、数学分析、离散数学、C语言等课程知识来解决实际问题。实验以生活中常见的无线电台形式呈现,可以激发学生的兴趣和探索欲望。
实验环境条件
-
基础和进阶实验材料包括:Arduino开发板和线缆、二极管、与门、按键开关、电阻、无源蜂鸣器、面包板、杜邦线;
-
拓展实验材料还包括:驻极体麦克风、三极管、电容;
-
实验设备包括:电脑、示波器、万用表、收音机。
教学目标与目的(限150字)
通过本实验的操作和自主探究,学生将了解无线通信的基础知识和电子信息系统的基本结构,加深对电子元器件特性和功能的认知,掌握常用仪器仪表的使用,能够实现简单的无线通信系统发射功能;通过课程思政,激发爱国报国情怀;通过实验报告和现场展示,锻炼文字和口头表达能力;通过拓展实验,培养实验探究精神和创新意识。
教学设计与实施进程
- 学情分析:
-
**课程基础:**本实验所属的课程《电子设计基础训练》是面向信息类学生的基础认知课程,开设于大一下学期。课程由基础实验和综合实验组成。基础实验一方面以面包板为载体,通过声控LED等实验使学生了解二极管、三极管、门电路等基本元器件的特性和功能;另一方面,以Arduino智能硬件为载体,使学生了解数字IO、模拟IO、串口通信等基本概念和使用方法。本实验作为课程后期的综合实验,在教学设计中可以充分利用学生已掌握的这些基础知识。
-
**专业知识:**本实验的核心内容是基于幅度调制的无线通信,其理论知识将在高年级《通信原理》课程学习,因此在教学设计中需要避免超前教学,应注重介绍幅度调制的实现方式和直观解释,而不是深入讲解基础原理。
-
**数理知识:**教学设计还要充分利用大一学生已有的数理知识。例如,微积分知识可用于分析电容的隔直通交特性,数学分析中的傅里叶级数和基础物理中的电磁波传输等知识可应用于信息传输模块。这样既能夯实基础,温故知新,又能学以致用,使学生能够既知其然又知其所以然。
-
**工程经验:**本实验旨在设计和实现一个生活中常见的无线电台,能够实现无线电报和无线广播的功能,具有吸引力和实用性。但是,此系统的结构较为复杂,学生缺乏电子信息系统设计的经验。因此,为了降低实验难度,教学中采用模块化设计思想,将复杂的实验分为三个功能相对独立又彼此关联的部分。学生可以在各个模块电路搭建完成后进行调试,最终将它们连接起来,完成信息获取、信息处理和信息传输的功能。这样既能让学生逐步理解系统的设计和实现过程,又能够培养其实验探究的能力和创新意识。
- 教学设计和实施进程:
基于以上分析,本实验在教学设计和实施中将结合学生已有知识储备,通过问题引导学生思考,在思考中实践,在实践中思考,逐步完成整个实验环节。教学过程中以学生动手实践为主,教师讲解指导为辅,主要包含课前预习、教学引导、实践指导、考核验收四个环节。具体阐述如下:
- 课前预习:
在课程群发布预习课件和相关资料,建议学生复习本课程前期基础实验涉及的面包板、二极管、三极管、驻极体麦克风、Arduino数字IO、模拟IO、串口通信等基本元器件特性和编程操作;鼓励学生通过查阅课件和资料,学习利用电磁波进行信息传输的方式。
预习过程中,使用课程的线上教学平台布置思考题:利用电磁波进行信息传输都有哪些途径?电视节目中电报机为什么总伴随着滴滴嗒嗒的声音?莫尔斯电报是什么,为什么国际通用的求救信号是SOS?通过设计的问题引导学生预习实验所需的基础知识,引起学生的实验兴趣。
- 教学引导:
**明确实验内容:**课堂上观看视频“永不消逝的半部电台”,视频讲述中国工农红军的第一部电台,它由于损坏只能收报不能发报,因此被称为“半部电台”。通过视频引导学生进入红色历史情境,更好地理解本实验的意义,进而引出修复这半部电台的发报功能的实验内容。接着,通过教学视频演示所要实现的无线电报和无线广播功能,使学生对实验任务有直观认识;最后,介绍所要实现的无线电台的整体结构、组成部分、功能要求。
**分模块讲解实验原理:**实验原理的讲解采用“讲一个模块做一个模块”的方式,分别讲解信息获取、信息处理、信息传输三个模块的原理。讲解中可采用类比的方式对复杂原理进行直观解释,做到通俗易懂,避免知识超前教学。例如,讲解电磁波如何传输信息时,可以类比于可见光通信。可见光是频率很高的电磁波,可以通过激光笔的亮灭来传输0或1的信息,这就是幅度调制。可以通过解答预习思考题的方式,引出实验原理。例如,为何SOS是国际通用的求救信号?这是因为在莫尔斯电码中,S是三个点,O是三个划,其信号最易于识别。进而引出信息处理模块如何把输入的字符转换为莫尔斯电报对应的声音信号。
**提供多种解决方案:**实验设计中对于每个模块将给出多种解决方案,启发学生思考各方案的优缺点,并通过实验进行对比验证。对于信息获取模块,无线电报可以采用按键输入或串口输入;对于信息处理模块,无线电报对输入信号进行莫尔斯电报编码,无线广播进行Arduino模拟输入采样和PWM模拟输出;对于信息传输模块,高频方波信号携带声音信号的过程可以由与门、二极管电路等方式实现。教学中以问题为引导,例如如何实现两路方波的相乘;然后提示可能的解决途径,例如能不能利用二极管的导通条件和导通后的电压钳位特性,来实现此功能。以此来启发学生自己设计解决方案。在实施过程中,考虑到大一学生缺少电路设计经验,可以给出部分参考电路和参考程序,校正和指导学生的设计,增强学生信心。
**讲解仪器使用:**在学生动手完成实验之前,还需要讲解示波器、万用表等仪器的使用方法,以及实验过程中的注意事项和安全事宜。
- 实践指导:
学生根据设计的电路图,将元器件在面包板上进行插接,同时编写Arduino代码。在实验制作过程中,教师需要引导学生明确电路的工作原理,理解基本元器件在实际电路中的作用以及发挥作用的条件,体会理论知识如何由电路实现,以及如何利用理论知识来指导电路调试,找出错误并解决错误。在实验制作过程中,还需要培养学生的代码规范化意识,使代码易于维护和修改,同时指导学生如何进行代码架构设计,如何将整个程序划分为不同的功能模块,并使用适当的接口进行交互。在实验过程中,教师需要及时巡逻课堂,解答学生实践过程中遇到的理论或操作问题,从而帮助学生更好地理解实验内容和实验原理。
- 考核验收:
针对基础知识掌握,采用线上平台答题的方式进行评测。针对实验结果的考核,采用课中过程考核和课后实验报告的方式。教师在课上进行实验结果检查并提问学生实验现象相关的问题;学生按照实验要求完成相关的实验任务,得出相关的实验结果,在实验报告上记录实验过程和测试结果,并进行实验过程分析和实验结果分析。考核方式上鼓励学生在本实验的基础上尝试自己的想法和创意,扩展新的功能,激发学生的创造力和创新意识。选拔实验完成质量高的学生在班上进行成果展示和宣讲,交流实验方案和经验体会。
实验原理及方案
- 无线电报功能
实验要求实现两种无线电报发射机,一种是采用物理按键来发报,另一种是由Arduino串口直接发送报文。下面分别介绍两种模式的基本原理和实现方案。
- 按键发报的原理
实验预期的现象是当按下按键时,收音机在指定频率能够收到某个音调的声音。为此,将系统分解为信息获取、信息处理、信息传输三个模块。
**信息获取模块:**在面包板搭建外部按键电路,在按下按键时向Arduino输入高电平,松开按键时输入低电平。参考电路图如图1所示。Arduino采用digitalRead函数读取按键输入信号。

图1 按键输入电路
**信息处理模块:**根据输入的按键信号,在获取高电平时发送指定频率的音调信号,此功能可采用Arduino的tone函数来实现;当获取低电平时,采用 noTone函数来关闭音调信号。生成的音调信号由Arduino数字端口输出。
**信息传输模块:**任务是生成高频振荡信号来携带音调信号,进行无线发射。该模块需要解决两个问题:a) 无线通信所需的电磁波如何产生、b) 电磁波如何携带音调信号?
a) 无线通信所需的电磁波如何产生?
根据基础物理知识,电磁波产生的两个条件是:一是有高频振荡信号、二是有开放电路。在实际应用中,开放电路的下部分导线通常接地,叫做“地线”;上部分导线通常架高,叫做“天线”。实验中使用导线作为天线,连接在高频振荡信号上,向外辐射电磁波。那么如何使用Arduino生成高频振荡信号?
Arduino作为数字器件,可以生成振荡的方波信号。一种常用的生成方式是使用analogWrite函数产生占空比为50%的PWM波。但这种方式产生的方波周期不高于980Hz,其频率较低,不能有效激发电磁波。第二种生成方式是手动编写代码,如图2所示。由于digitalWrite的执行时间约为3us,因此这种方式理论上最高可以生成125kHz的方波。此方法虽然可以提高信号频率,但它要求loop函数中不能执行其他操作,否则其他操作所占用的时间会降低方波的频率。实验中我们需要在loop函数中进行信息处理,因此第二种方式也不能应用。

图2 使用digitalWrite函数生成方波
为了获得更高频率的方波信号,同时不影响loop函数中的信息处理操作,实验将使用Arduino的定时器/计数器功能来生成高频方波。实验所使用的Arduino UNO开发板有三个定时器/计数器(Timer 0、1、2),其中delay函数使用定时器0,tone函数使用定时器2,因此我们采用定时器Timer 1。
定时器/计数器有多种工作模式,为了生成高频方波,需要进行五项设置:
- 波形生成模式设置为CTC模式:即比较匹配时清除定时器模式,它使计数器达到某个指定值时清零重新计数;
- 波形输出模式设置为切换模式:它使计数器达到某个指定值时切换输出信号的电平;
- 指定计数器比较的门限数值:通过以上的介绍,可知门限数值会影响方波的频率,其关系为:

其中,
是需要设置的比较门限数值,
是方波频率,
是时钟频率(Arduino UNO为16MHz),
是预分频因子。
- 设置预分频因子:从上式可以看出,预分频因子
会影响方波频率。
- 设置波形输出端口:Arduino UNO有6个PWM数字端口,分别对应3个定时器/计数器,Timer 1对应端口9和10,需要将其中一个端口打开、并设置为输出模式。
以上配置过程看似繁琐,但实现方式并不复杂,只需编写几行代码,如图3所示。采用这种方式,生成的方波频率最高可达4MHz,满足载波信号的要求。

图3 配置计时器/计数器生成高频方波
除了上述方法,也可以调用TimerOne库来配置定时器一,但其得到的方波频率的可选性比较少。
a) 电磁波如何携带音调信号?
在通信系统中,用高频信号来携带需要传输的信息信号的过程叫做调制,其中高频信号叫做载波信号。其基本原理是通过改变载波信号的某些特性来传输信息,例如通过改变载波信号的幅度、频率或相位。
本实验将采用采用电磁波的幅度来携带信息,实现方式是用生成的音调信号
的幅度变化来改变高频信号
的幅度。这个过程在通信系统中通常用乘法器来完成两路信号的相乘,如图4a和4b所示。



a)高频正弦信号幅度携带信息 b)携带方波音调信号 c)高频方波信号携带方波音调信号
图4 电磁波幅度携带信息

图5 高频方波信号携带方波音调信号的实测波形
由于本实验采用Arduino生成载波信号和音调信号,它们都是由高低电平构成的数字信号。因此,乘法器的操作可以由逻辑与运算或者开关功能来实现,如图4c和图5所示。下面我们采用不同的基本电子元器件,给出两种实现方式。
① 与门电路
图6给出了基于74LS08与门芯片的调制电路。根据离散数学的知识,与运算的逻辑是当条件同时具备时,结果才发生,数学模型为Y=AB。在调制电路中,将管脚14接入Arduino 5V端口,管脚7接入Arduino GND端口,任取管脚1/2、4/5、9/10或12/13中的一组接入Arduino生成的高频方波和音调信号,然后从对应的芯片输出管脚3、6、8或11得到调制后的信号。

图6 与门电路
② 二极管开关电路
图7给出了利用二极管实现一路方波信号控制另一路方波信号输出的开关功能,其中二极管的正负极分别输入高频方波和音调信号。该电路的输入和输出关系可以分析如下。当电报音调信号为高电平时,二极管不导通,电路没有电流,输出信号与高频方波相同;当电报信号为低电平、且高频信号为高电平时,二极管导通,输出节点的电压钳制为二极管导通电压。此电压一般较小,通常硅管为0.7V,锗管为0.3V,因此输出为低电平。

图7 二极管开关电路
- 串口发报的原理
上述按键发报模式采用手动发报,例如为了发送字符X,首先查询莫尔斯电码表,找到X的编码是“划点点划”,然后依次“长按-短按-短按-长按”按键,完成发报。
下面要实现的串口发报是一种自动发报方式,通过Arduino串口监视器由电脑输入要发送的报文,Arduino根据收到的报文,自动生成需要发送的音调序列,然后经过与按键发报相同的调制电路进行无线传输。
Arduino与电脑之间的串口通信已在本课程前期的基础实验中学过,因此本实验主要关注如何根据获取的报文生成对应的莫尔斯电报音调信号。莫尔斯电报是一种基于莫尔斯电码的通讯系统,于19世纪中叶由美国发明家塞缪尔·莫尔斯发明,并在世界范围得到广泛使用。它使用莫尔斯电码将文本信息转化为电信号进行传输。图8给出了莫尔斯电码表,每个字符由一系列点和划组成。

图8 莫尔斯电码^[ITU-R M.1677-1]^
点和划的区别在于信号持续的时间长度不同。莫尔斯电码包括五种时间长度:短促的点信号、保持一定时间的划信号、点和划之间的快速停顿、字母之间中速停顿、以及单词之间慢速停顿。在国际莫尔斯电码中,一个点信号的长度为1个单位时间长度(通常为50ms),一个划信号的长度为3个单位时间长度,一个字母中点划间隔的长度为1个单位时间长度,两个字母间隔长度为3个单位时间长度,两个单词间隔长度为7个单位时间长度。
根据上述标准和莫尔斯电码表,可以在Arduino中编写报文与音调序列之间的转换表。例如当输入报文为XY时,输出如图9所示的音调序列。
图9 报文XY对应的莫尔斯电报音调序列
- 无线广播发射的基本原理
无线广播与无线电报有相同的系统模块,两者的信息传输模块相同,但信息获取模块和信息处理模块的实现方式不同。
**信息获取模块:**功能是将麦克风信号输入至Arduino的模拟输入端口。此模块的核心是基于三极管的小信号放大电路,这在本课程前期基础实验中完成的“声控LED”实验中已学习过。图10给出了实验中使用的小信号放大电路,其中电阻R2为驻极体麦克风供电,电阻R1与R3为三极管提供偏置电压,以设置合适的静态工作点,电阻R4可控制放大器失真,电容C2将输入的麦克风信号耦合至放大电路,最后放大后的声音信号输入至Arduino的模拟输入端口A0,进行后续的信息处理。

图10 驻极体麦克风信号放大电路
**信息处理模块:**无线电报传输的音调信号是数字信号,而无线广播的声音信号是模拟信号。在信息处理模块,我们采用Arduino模拟输入和输出端口来进行处理。首先,采用analogRead函数读取输入的模拟信号,该函数可以实现模拟-数字转换,返回一个0~1023的数字值,表示模拟输入引脚上的电压值在0到5V范围内的相对大小。信息处理模块是将获取的模拟信号转为PWM波输出,该功能可采用analogWrite函数来完成。但是需要注意的是,analogWrite函数产生的PWM的默认频率为490或980Hz,而analogRead函数的采样频率默认约为10kHz,因此我们需要增加PWM的频率,使之远大于10kHz。
与前述生成高频方波的方式类似,为了提高PWM信号的频率,我们需要对定时器/计数器进行修改。由于定时器/计数器1已用于生成高频方波,而无线广播系统不再使用tone函数,因此这里使用定时器/计数器2,进行如下配置:
- 波形生成模式设置为Fast PWM模式;
- 设置预分频因子
,得到PWM频率为:

其中,
是PWM频率,
是时钟频率(Arduino UNO为16MHz)。
采用图11所示的配置方式,可以生成频率为62.5kHz的PWM信号。这意味着每个采样点对应的信号幅度可以用大约6个周期的PWM来近似,可以达到较好的近似结果。

图11 配置计时器/计数器提高PWM信号频率
- 无线电台整体系统结构

图12 按键发报系统结构

图13 自动发报系统结构

图14 无线广播系统结构

图15 无线电台实验作品实物图
图12~14分别给出了按键发报、自动发报和无线广播的系统结构图,图15给出了实验作品实物图。对于每种功能,依次完成信息获取、信息处理和信息传输三个模块,然后再按照图12~15连接三个模块,即可通过收音机收听到发出的电报或声音信号。
实验报告要求
实验报告要求学生完成实验一周内提交,需要反映以下工作:
-
实验需求分析:明确实验内容、实验目的、实验要求和最终要实现的实验效果,并解答预习思考题;
-
实验原理论证:绘制系统框图,阐述信息获取、信息处理、信息传输三个模块的功能以及工作原理;
-
方案选择、电路设计与参数计算:针对每个模块,分析和比较不同实现方案的优缺点和选择依据,给出电路设计思路和绘制电路原理图,分析电路工作的原理;
-
实验代码编写:根据功能要求,介绍代码架构设计思路,给出程序功能模块结构以及接口定义,以伪代码方式分析代码功能,总结代码规范化方面的注意事项;
-
实验过程与结果:记录详细的实验步骤和测试过程中的实验现象,进行合理的分析;
-
实验结果总结:总结实验过程中遇到的问题和解决方案,记录实验中的收获和体会,回答课后思考题。
考核要求与方法(限300字)
考核采用百分制。基本要求和进阶要求为必做内容,同时设置附加分鼓励完成拓展要求和进行作品展示。
-
知识掌握(25%):通过课程在线答题模块和现场检查考核实验原理、元器件功能和实验现象解释;
-
操作技能(15%):考核电路设计、元器件选择的合理性、代码编写的规范性、仪器使用的正确性;
-
实验结果(25%):考核模块输出是否正确、系统是否正常工作、实验结果是否正确,现场修改代码的运行结果是否符合预期;
-
实验报告(35%):考核实验报告的规范性和完整性、结果分析的深入性、思考题的正确性;
-
作品展示(附加5%):考核现场展示和PPT答辩的质量;
-
拓展内容(附加5%):考核拓展问题解决方案的合理性和效果、或对实验进行改进和扩展的质量。
项目特色或创新(可空缺,限150字)
-
有趣有用:实验引导学生进入红色历史情境,使学生感到学有所用;广播电台贴近生活,有助于激发学习兴趣。
-
易于推广:实验对专业知识要求低,适合于低年级认知实验,仅使用Arduino和基本电子元件,易于制作,便于推广。
-
方案多样:为学生提供了更多的思考和实践机会,有助于加深对实验的理解、培养学生的创新思维和探究能力。
是需要设置的比较门限数值,
是方波频率,
是时钟频率(Arduino
UNO为16MHz),
是预分频因子。
的幅度变化来改变高频信号
的幅度。这个过程在通信系统中通常用乘法器来完成两路信号的相乘,如图4a和4b所示。
是PWM频率,