可见光通信(毕业设计)

Posted Top嵌入式

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可见光通信(毕业设计)相关的知识,希望对你有一定的参考价值。

一、设计目的

课题的主要目的是设计一对可见光语音通信原型机,通过可见光通信技术传递音频信息并播放,用于验证空间光通信的可行性。任务的主要设计内容为设计一对光信号收发装置,进行双工通信,将音频数据发送到另外一个设备进行播放,同时设置一个控制交互单元,用于控制发送的数据内容和接收的数据内容,整个系统运行一个简单的交互界面,便于用户进一步测试空间光通信的功能。

二、设计框架

根据设计目的进行任务方案设计,设计两个通信设备,设备1和设备2的关系框架如下:

图 2.1通信系统设备关系框架

设备1主控单元通过串口将需要发射数据通过TTL电平信号加载到发射电路,发射电路将TTL电平的电信号转化为驱动电压加载在激光二极管(LD)上,LD根据驱动电压的大侠将电信号转化为光信号,光信号经过空间光路传播后通过平面凸透镜聚集到APD雪崩二极管上,APD根据光信号的强度输出光电流,接收电路采集APD输出的电流信号并作处理,经过IV转换等电路还原出串口TTL电平信号,设备2的串口接收信号并解析数据,完成设备1和设备2的空间光通信,设备1和设备2有两条光路用于传输,以完成全双工通信。该设计方案中有诸多设计要点,具体可分为硬件电路设计以及软件设计:

硬件电路设计:

  1. 发射转换电路:将电信号转化为光信号。
  2. 接收转换电路:将光信号还原为电信号。
  3. 核心处理电路:处理发送以及接收的光信号。

软件设计:

  1. 外设驱动编写:调试芯片外设驱动。
  2. 任务调度框架:移植RTOS实时系统,完成系统操作逻辑。
  3. 图形化交互界面:移植图形界面,为系统提供人机交互。

三、硬件设计

核心处理电路用于为整个光通信系统提供硬件层支持,实现板载资源的基本控制和调度功能,该处理电路使用意法半导体的STM32F407VET6芯片作为核心,设计最小系统电路,同时为片上外设设计外围电路,实现其他必要功能,系统主控电路的整体设计框图如下:

图 3.1主控功能框图

其中音频接口用于解码音频数据然后播放声音,这里使用IIS与音频芯片进行通信,在主控板上设计出IIS接口用于与音频芯片进行通信:

图 3.2音频接口

为了便于进行测试信息传输功能,主控预留了SPI接口用于驱动TFT,进行UI显示:

图 3.3 LCD接口

核心电路板载了LED用于指示一些运行状态,同时集成了SDIO接口驱动SD卡,用于存取部分数据,便于实现软件层一些第三方框架:

图 3.4 SD卡接口

核心电路板设计了按键用于进行人机交互,整个系统设置了2个按键和一个拨盘电位器,2个按键一个用于确认一个用于返回,拨盘电位器用于进行左右选择,具体按键电路原理图设计如下:

图 3.5按键电路

STM32芯片的UART2接口则用于连接光通信电路进行通讯,控制核心电路包含一个单限比较器用于进一步将APD输出的信号进行阈值处理,使输入的信号符合TTL电平标准,能够被UART2识别到,具体的单限比较器电路如下,使用TI公司的TLV3501芯片作为运放比较芯片,TLV3201是单通道比较器,该电平转换快(40ns)且功耗低,支持轨对轨输入,低偏置电压只有1 mV,且具有大输出驱动电流等功能。 该芯片适合应用在响应时间要求较高的场景中,具体的设计电路如下:

图 3.6 TTL转换电路

R1和RP1提供一个比较电压与输入电压进行比较,比较后的输出只有0和3.3V两个范围,符合UART2的TTL电平标准。

核心控制电路最终的整体原理图设计方案如下:

图 3.7项目整体原理图设计

设计完原理图后,对主控进行PCB设计,PCB设计三维图如下:

图 3.8主控PCB三维图

设计完成后将PCB进行加工制作,制作完PCB实物如下:

 

图 3.9主控PCB实物图

发射转换电路将信号加载至光源上,实现电信号到光信号的转换,本项目设计中采用的LD激光二极管作为发射光源,LD激光二极管另外一个名字叫做半导体激光二极管,因为其准直性高,激光强度大,故可以直接作为可见光通信使用的光源,可以很好的传递光信息,一般LD工作电压在4-6V,故需要设计驱动电路将TTL电平转化为LD工作电压范围内的驱动信号来驱动LD二极管发射激光,该驱动电路的设计包括放大电路部分和偏置电路部分,目前的设计如下图:

图 3.10发射电路原理图

设计电路的采用TI公司的OP690作为运算放大器,该放大器的单位增益稳定,运放内部采用电压反馈,使用TI公司设计的内部结构提供转换速率,支持单电源供电,具有150ma的驱动电流以及150Mhz的带宽,适合高速IV转换电路。TTL信号输入后,经过R7和C10构成滤波电路,滤除输入信号的低频噪声,同时将输入的交流高频信号叠加到由R2和R3分压获得的参考直流电压上,防止输入信号失真。运放电路中的R5与R8加RP2的比值确定了电压的放大倍数,对输入的交流信号进行放大。

在输入的TTL信号放大叠加后还需要经过偏置电路调整输出电压范围,使输出电压满足激光二极管的工作范围,驱动LD正常运行,完成将电信号转换到光信号的过程,偏置电路如下:

图 3.11偏置电路原理图

偏置电路的设计原理是一个同相加法电路,通过调节RP1电

位器对加法电路的输入电压进行调整,达到调节最终输出电压的功能,此处使用的运放芯片为OPA690,带宽可达200M,可以满足串行通信波特率为1M时的发射速率。

发射电路最终设计的原理图如下:

图 3.12整体发射电路原理图

    设计完成原理图后使用AD设计PCB,最终PCB模型如下:

图 3.13发射电路PCB设计图

最终制作出来的发射电路PCB实物如下:

 

图 3.14发射电路实物图

接收电路的主要功能是完成光信号到电信号的转换,具体原理通过光电探测器件,将光信号通过APD雪崩二极管转化为电流信号然后进行处理。本次可见光音频通信系统采用APD雪崩二极管作为光电探测器件转化光信号到电信号,当在APD的PN节上加入足够高的正常工作电压时,在PN节耗尽层内运动的载流子,会雪崩式的增加,获得很高的平均电流增益,适合于检测光强大小。一般情况下APD的正常工作电压较高(约100V),普通直流电源电路无法获得这么高的电压,所以该接收电路需要使用特殊的高压产生电路,因此本项目使用boost自举电路获得一个较高的工作电压维持APD的工作。在APD将所检测的光信号转换为电流信号后,系统还需要将其转换为核心主控电路可以识别的电压信号,故需要设计一个高速IV转换电路,将电流信号转化为电压信号。本系统的电压倍增电路采用开关电源boost电路,具体电路设计如下:

图 3.15 TPS升压电路

该电路使用TI公司的TPS55340芯片作为电压IC,该芯片是一款内置了40V、5A开关电源的电源稳压芯片,外围电路配合自举升压二极管、自举升压电容等元件使电容的放电电压和电源的电压叠加,可以对输出电压进行多级放大,使最终的输出电压可以达到70-160V这一范围,以满足APD的正常工作。芯片输出端的L2,L3,C11,C12元件组成滤波电路,设计时放在输出电压后面,可以有效的减小纹波过大导致升压时间常数过大,防止后级电路烧坏自举二极管。

APD正常工作时,会将光强度转化为输出电流,需要引入IV转换电路,本项目中的 IV 转换电路采用TI公司的芯片OPA657,该运放芯片具有低噪声、高增益的特点,IV转换电路原理图如下:

图 3.16 IV转换电路

IV转换电路采用电压并联负反馈的连接方式,将APD 产生的微小电流信号转换为电压信号,还原出电压波形,电路中的C21补偿电容用于移动主极点到低频段以消除自激,其中 R11为该转换电路的核心电阻,整体电路的交流输出电压公式为:

𝑉𝑜𝑢𝑡=−𝐼∙𝑅11

最终输出的电信号经C19进行耦合后传递到下一级处理电路。电路设计的PCB原理图如下:

图 3.17接收电路原理图

使用AD设计出来的PCB三维图如下:

图 3.18接收电路PCB模型图

制作出来的接收电路PCB实物如下:

 

图 3.19 接收电路实物图

整个发射、接受、主控电路需要提供电源,为了方便调试,电源板单独分成一块PCB,通过与其他开发板连接的铜柱进行供电,电源板的电压输出分为12V、5V、3.3V以及GND,同时考虑到音频芯片对电源的要求较高,所以将音频芯片及其外围电路的设计放到电源板上,设计如下:

电源总输入接口通过一个磁吸接头输入一个12V的电压,使用磁吸接头可以便于快速接入电源,同时磁吸头自身带有一定阻抗,可以起到一定的模数隔离作用,磁吸接口设计电路如下:

图 3.20 电源接口原理图

磁吸接口输入的12V电压需要降压到5V,以提供一个5V的电源电压,因为12V到5V的电压压差较大,所以使用DC-DC开关电源降压电路,以获取一个较大的电源转化效率,DC-DC降压电路采用TPS5430芯片,TPS5430是TI公司推出的一款典型的电源管理IC,其具有输出纹波小、散热性高等特点,适合为本课题的整个系统进行供电,TPS5430降压到5V电路原理图如下:

图 3.21 DC-DC降压电路

在通过降压获取到5V的电压后,电源电路还需要通过LDO将5V降压到3.3V,以获得3.3V的电压源为一些功能IC供电,此处的LDO线性降压电路使用AMS1117作为降压芯片,降压电路如下:

图 3.22 LDO降压电路

同时电源板集成了音频播放电路用于连接音响后播放音频,此处音频芯片采用的是欧盛公司的WM8978, WM8978是一款功耗低、播放质量高的立体声音频编解码芯片,专门为一些便携式音频场景的应用而设计,如数码相机、MP3、音响或数码摄像机等。 该芯片集成了差分立体前置麦克风放大器,输出端包括扬声器、耳机以及立体声输出驱动器,可以满足绝大部分音频播放需求;本项目的音频电路设计原理图如下:

图 3.23音频播放电路

音频电路通过对外接口与主控的IIS接口连接,以实现音频播放功能,整体电源电路的设计如图:

图 3.24电源电路整体设计图

PCB三维模型图如下:

图 3.25电源电路PCB模型图

制作出来的PCB实物如下:

 

图 3.26电源电路实物图

四、软件设计

核心电路使用的是意法半导体的STM32F407单片机,该单片机拥有丰富的硬件资源,为此引入RTOS实时操作系统对整体的资源进行调度,本项目选择使用华为公司的开鸿(OpenHarmony)操作系统,引入其LiteOS-M调度内核到本项目中,OpenHarmony LiteOS-M内核是华为公司面向物联网领域推出的小型操作系统内核,具有小体积、低功耗、高性能的特点,该操作系统内核代码简单,主要包括内核基本功能、内核抽象层(KAL)、可选组件,内核可分为硬件有关层与无关层,内核的硬件有关层提供统一的HAL(Hardware Abstraction Layer)接口,降低内核代码移植时的适配难度,同时不同编译工具链和芯片架构的组合分类,方便拓展软件到不同硬件上。

本次课题的开发工具选用VSCode作为系统软件开发IDE,使用开源的ARM-GCC编译器进行编译,程序的下载调试则使用开源工具OpenOCD进行下载调试。使用OpenHarmony作为软件任务调度框架,发挥OpenHarmony互联的特性,为光通信设备提供强力的软件层支持,进一步推动国产系统发展,为国产开源生态提供一份助力,项目整体任务调度框架如下:

图 4.1系统任务框图

整个RTOS系统软件中设置了5个任务,分别为LED提示任务、LCD交互任务、串口测试任务、音频播放任务以及ADC采集任务,各大任务功能如下:

LED提示任务:LED提示任务用于控制LED显示当前系统的运行状态,如果系统未正常运行则LED灯剧烈闪烁。

LCD交互任务:LCD交互任务运行时使用到SD卡、LCD显示屏以及输入按键资源,用于维护LVGL图形框架,实现图形界面的交互逻辑。

串口维护任务:串口测试任务使用到芯片的串口1资源,用于通过板载的USB转TTL电路和上位机进行通讯,方便过程中进行数据打印测试,观察记录系统运行状态;同时串口任务也会通过串口2发送和接收音频信息,通过可见光通信电路传递信息。

音频播放任务:音频播放任务用于播放串口二接收到的音频信息,将信息通过IIS发送到音频播放电路进行音频播放。

ADC采集任务:系统运行过程中需要采集一些电压信息,所以单独设置一个ADC任务用于采集系统电压信息,内部CPU温度,以及更新拨码开关的键值。

软件项目中需要使用到各种单片机外设资源,为了快速进行开发,项目外设资源的配置使用意法半导体公司出品的代码生成器软件 STM32CubeMX,它的图形化工具界面可以让使用者可视化地选择所需的芯片,按照用户的需求设置芯片的任一个引脚和任意一个外设。除此之外STM32CubeMX软件可以识别冲突的引脚,自动配置选择的STM32芯片时钟树,对芯片运行时的功耗进行预测以及判断内存使用情况等功能。项目中使用STM32CubeMX软件可以很大程度的减轻工作量,加快开发速度。

STM32CubeMX生成的代码使用的是 HAL(Hardware Abstraction Layer)库,即硬件抽象层。HAL库的本质是内核层与硬件层中间的关联层,我们可以容易地在HAL中编程来操作内核,硬件抽象层的易于移植性也让在不同内核下的编程不再复杂。本项目中使用STM32CubeMX生成MakeFile工程加入到OpenHarmony源码中使用make工具进行编译,STM32CubeMX配置的工程如下:

图 4.2 STM32CubeMX配置图

为了方便进行人机交互,项目移植了开源的LVGL图形框架制作图形界面,LittleVGL是一个开源的图形开发框架,底层代码由C语言实现,LVGL可以实现与嵌入式硬件的最大的兼容性,同时借助NXP公司推出了LVGL模拟器,可以让LVGL开发者在电脑上进行嵌入式GUI设计。除此之外,LVGL作为一个开放完整的图形库,为开发者提供了多种便捷的小工具使用。这些强大的工具按钮搭配上非常丝滑的动画以及平滑滚动的图形,可以为嵌入式硬件提供一个完美的视觉交互;更重要的是LVGL对硬件有着不高的配置要求并且开源免费,这两点显著的优势使得LVGL一度成为最热门的嵌入式GUI项目,成为广大开发者在选择GUI时的第一选择。

因为其种种优势,故本项目使用LVGL作为UI界面的框架支持,使用NXP开放的GUI-Guider图形化界面配置工具完成界面设计,生成代码后添加到调度内核框架内进行编译调用,实现UI界面的交互,项目使用GUI-Guider软件工具设计界面如下:

图 4.3 UI界面设计图

最终移植到核心电路板效果如下:

图 4.4 UI界面最终设计效果

五、系统测试

电源电路板是整个系统的核心单元,制作完成后首先对其进行测试,确定各个输出电压能否正常工作:

测试12V电压输出并查看纹波:

 

图 5.1 12V电压波形

可以看到12V电源输出正常,但由于直接使用的外部电源接入,纹波较大,但因为每个使用12V电源的IC都加了纹波抑制电路,故影响不大。下面测试电源板5V输出和3.3V输出:

 

图 5.2 3.3V电压波形

 

图 5.3 5V电压波形

5V输出和3.3V电压输出正常,且因为使用TPS芯片进行降压,纹波极小。

电源板供电正常后,对主控电路板进行测试,编写测试程序,分别测试SWD下载1、串口、TFT、LED、按键、ADC、SDIO、IIS、USB以及Flash等功能,编写测试程序,将测试结果打印在串口上,测试结果如下:

图 5.4外设测试串口打印图

主控和电源测试完成后开始测试收发电路,由主控电路从串口连续发送一段TTL电平数据,经过发射电路,加载到激光二极管上,激光二极管将输入的电信号以激光的形式传递出去,另外一端的接收电路将光信号还原成电信号,再经过比较器电路转换为TTL电平,为了直观看到测试效果,使用示波器测试整个链路中各个点的波形。

测试场景如下,将两个测试设备对准:

 

图 5.5对接测试环境

原始输出的串口波形如下:

 

图 5.6设备1输入的TTL波形

经过发射电路后加载在激光二极管上的波形:

 

图 5.7设备1加载在LD上的电压波形

接受电路IV转换后的波形:

 

图 5.8设备2接收到的电压波形

经过比较器复原出的TTL波形:

 

图 5.9设备2经过电压比较后还原的波形

可以看到测试输入的TTL和复原出的TTL电平基本一致,达到测试效果。

在TTL电平传输测试正常后就可以进行音频数据传输的测试,音频数据的传输流程就是一个设备从SD卡中读取WAV音频信息,通过串口将音频信息发送,另外一个设备接收到音频信息后,将音频信息通过IIS发送到音频芯片中进行播放,实现可见光音频通信的功能,因为场地限制,只测试了近距离音频通信和5.3米距离音频通信,音频传输播放正常,测试场景如下:

图 5.10音频传输测试场景

以上是关于可见光通信(毕业设计)的主要内容,如果未能解决你的问题,请参考以下文章

通信算法之四十六:OFDM系统波形设计

通信算法之四十六:OFDM系统波形设计

如何手画三相电相(线)电压(流)波形图

通信算法之三十九:单载波频域均衡系统波形设计

脉冲经过高通和低通滤波器后的波形

请问大家,我用28335如何实现对电路的输入电压采样的C程序的编写?