
红外光通信装置
简介
本设计是一套传输混合信号的红外光通信装置,主要由信号采集模块、红外发射模块、红外中继模块、红外接收模块四部分组成,能实现语音信号和发射端环境温度同时传输,无明显失真条件下最大传输距离达5m。
简介:本设计是一套传输混合信号的红外光通信装置,主要由信号采集模块、红外发射模块、红外中继模块、红外接收模块四部分组成,能实现语音信号和发射端环境温度同时传输,无明显失真条件下最大传输距离达5m。开源协议
:CC-BY 3.0
描述
前言
本设计为中国计量大学校赛获奖作品,较好地完成了赛题要求的参数指标。
团队介绍
成员全部来自中国计量大学,为2020级本科学生,其中两名为电子信息工程专业,一名为通信工程专业。
题目要求
设计并制作一个基于红外光的混合信号传输通信装置。红外光通信装置利用红外发光管和红外光接收管作为收发器件,用来定向传输信号,传输距离为2m,接收的声音无明显失真。增加一路数字信道,实时传输发射端环境温度,并能在接收端显示。数字信号传输时延不超过10s。温度测量误差不超过2℃。语音信号和数字信号能同时传输。再设计并制作一个红外光通信中继转发节点,以改变通信方向90°,延长通信距离2m。
题目分析
根据比赛题目,要求传输的信号可采用话筒或音频插孔线路输入,也可由低频信号源输入;频率范围为300~3400Hz。接收的声音应无明显失真。当发射端输入语音信号改为800Hz单音信号时,在8Ω电阻负载上,接收装置的输出电压有效值不小于0.4V。不改变电路状态,减小发射端输入信号的幅度至0V,采用低频毫伏表测量此时接收装置输出端噪声电压,读数不大于0.1V。同时还要增加一路数字信道,实时传输发射端环境温度。红外光通信中继转发节点设计与发射部分和接收部分类似。系统总体框图如下图所示。
原理图电路设计
1.电路总体框架设计
2.麦克风电路
3.加法电路
4.红外发射电路
5.红外接收及放大电路
6.滤波电路
高通滤波电路
低通滤波电路
7.解调电路
8.功率放大电路
软件说明
主要代码如下。
发射部分代码块:
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
#include "usart.h"
#include "ds18b20.h"
#include "ad9833.h"
#include "HMI.h" ;
char tjcstr[100];
static u8 flag;
int main(void)
{
u16 tem[1];
u16 temperature;
float temp,temp1,temperature_ture;
float t=0;
delay_init(168);
uart_init(4800);
OLED_Init();
LED_Init();//LED初始化
LED0=0;
while(1)
{
delay_ms(50);
if(DS18B20_Init() == 0)
{temperature_ture=DS18B20_Get_Temp()/10;
temperature = DS18B20_Get_Temp()-200;
USART_SendData(USART1,temperature);
}
}
}
接收部分代码块:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Timer.h"
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
#include "Key.h"
#include "usart.h"
int main(void)
{
u32 temp=0;
u16 get_tempareture,get_tempareture_z,get_tempareture_x;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2 //延时函数初始化
uart_init(4800);
LCD_Init();//LCD初始化
LCD_Fill(0,0,240,40,GRAY);
LCD_Fill(0,40,120,240,LGRAY);
LCD_Fill(120,40,240,240,LBBLUE);
LCD_ShowChinese(0,40,"当前温度",BLACK,LGRAY,32,0);
while (1)
{
get_tempareture = USART_ReceiveData(USART1)+200;
get_tempareture_z=get_tempareture/10;
get_tempareture_x= get_tempareture%10;
if(get_tempareture<400)
{LCD_ShowIntNum(140,40,get_tempareture_z,2,BLACK,LBBLUE,32);
LCD_ShowString(175,40,".",BLACK,LBBLUE,32,0);
LCD_ShowIntNum(186,40,get_tempareture_x,1,BLACK,LBBLUE,32);
LCD_ShowChinese(202,40,"℃",BLACK,LBBLUE,32,0);
}
}
}
实物展示
演示视频
见附件。
设计图

BOM


评论