微型433MHz无线接收模块 您所在的位置:网站首页 无线收发模块流程图解 微型433MHz无线接收模块

微型433MHz无线接收模块

2024-07-16 00:40| 来源: 网络整理| 查看: 265

微型433MHz无线接收模块

原装正品 SYN480R 433M ASK/OOK 无线接收模块资料链接:https://pan.baidu.com/s/1p4Pyi0OCkqQL1Iupo0ClbA 提取码:o9i7无线遥控发射接收模块简介(SYN480R F115 433M )

 

01 无线接收模块 一、前言

  这款大功率433MHz 无线发射模块前天测试过。 由于手边的接收模块都是 315MHz, 所以还无法对其传输距离进行测试。  现在购买的微型433MHz 接收模块到货了。  它的结构极其简单, ·核心是一个SOP8封装的芯片。 晶振的频率为 6.7458MHz,  芯片的信号为 SYN480R。 ·下面对于这款接收模块进行测试。

GM1700456160_1280_720.MPG|_-7

二、接收波形

  在模块上增加一个软件作为接收天线。  其它三个管脚分别是电源、信号输出、地线。 通过面包板给接收模块增加3.3V电压。  示波器显示接收到了脉冲信号。  信号的最窄脉冲宽度为 500微秒, 对应2k 波特率。  发送信号编码芯片为 SC2262。  后面可以通过SC2272, 或者单片机对接收到的编码进行解码。  这样便可以获得发送开关信号了。

GM1700458146_1280_720.MPG|_-7

▲ 图1.2.1 接收到的信号波形

▲ 图1.2.1 接收到的信号波形

三、接收解码

  根据接收到的波形, 编码是由一群宽窄不同的脉冲组成。  每组脉冲之间有一段时间延迟。  可以根据这个延迟将不同编码脉冲群分开。  分割时间比编码脉冲低电平时间长,  大约15毫秒左右。  编码信号的窄信号,  时间为0.5毫秒。  宽信号为15毫秒。 它们分别对应0,1 编码。

GM1700458892_1280_720.MPG|_-8   每组编码脉冲包括有25个脉冲,  对应 25bit。  具体编码方式, 现在可以不用追究。 针对发送 十六中组合进行分别测试。 便可以找到每种状态对应的编码了。

GM1700459086_1280_720.MPG|_-3

四、设计电路板

AD\Test\2023\TestSYN840R.PcbDoc

▲ 图1.4.1 单片机解码电路

▲ 图1.4.1 单片机解码电路

▲ 图1.4.2 单面制版电路PCB

▲ 图1.4.2 单面制版电路PCB

  使用STM32F030 单片机对接收信号进行解码。  昨天还是用这款单片机对于红外遥控信号进行解码。 采用 40kHz 信号对波形进行采样并且进行判断。  使用串口对其进行程序更新。  使用一颗1117 三端稳压芯片提供 3.3V 的工作电源。  接收模块通过 PRF输入。 信号进入 PA0 端口。  使用四个LED显示接收到的 16中编码状态。  设计单面电路图。  一分钟后得到测试电路板。  上面有一个跳线, 使用 0 欧姆电阻进行短路。  下面进行焊接测试。  最终测试这款接收模块可以在多远的距离接收到发送信号。

GM1700461837_1280_720.MPG|_-11   电路比较简单, 焊接非常容易。  焊接完毕之后, 利用洗板水进行清洗。  下面便可以进行测试了。  现在看, 其中还有一个飞线还没有焊接,  使用 0 欧姆的电阻进行飞线, 最终电路便焊接完毕了。

GM1700463044_1280_720.MPG|_-5

五、软件设计

  通过 STM32Cobe MX 软件配置单片机资源。  使用串口辅助程序下载和调试。   PA8驱动工作状态LED。  这四个管脚对应的LED控制。  PA0 输入外部接收信号。  下面再配置其他资源。  设置 定时器1 , 使其处于 40kHz 中断状态。  配置 UART1 的参数。  选择内部时钟源, 频率为 48MHz。  最后生成可以使用的工程文件。

GM1700467260_1280_720.MPG|_-10   在 Time1 的中断中, 反转 LED 管脚, 这里测试出 20kHz 的方波, 验证了Time1 的中断频率为 40kHz。  将接收模块安装在电路板的接口上。 此时, 发送模块还没有工作。  在模块的输出端是一些随机的高低电平变化。  将发送模块打开。  此时便可以接收到发送的编码了。

GM1700469113_1280_720.MPG|_-5

序号设置状态编码100010x03aaaa200100x0caaaa301000x30aaaa410000xc0aaaa500110x0faaaa601010x33aaaa

  通过对接收到的编码进行观察,  可以看到发送模块四个不同的管脚为1,  只是影响最高接收字节。 后面两个字节都是 aa。  由此, 可以推断出,  后面这些字节为地址和校验信息。  前面这八位, 分成四组, 分别对应四个设置管脚的高低电平。 可以根据这个特征来确定接收到的编码是否为合法的编码信息。

GM1700473272_1280_720.MPG|_-6

  现在测试发射端控制端口不同的电瓶配置。 可以看到接收端根据前面分析, 软件实现对应的 LED 等点亮。 验证了前面分析的结果。  到此, 验证了这款微型无线模块接收的特性。 并利用单片机对接收到的 SC2262 编码进行了识别。  这位后面验证功率模块发送能力奠定了基础。

GM1700474908_1280_720.MPG|_-3

D:\zhuoqing\window\ARM\IAR\STM32\Application\Test\2023\SC2262DecodeF030\Core\Src\main.c

 

※ 总  结 ※

  本文对于这款基于 SYN480R 微型无线接受模块进行了初步测试。  利用单片机对接收到的信号进行解码。  后面将进行远距离接收测试, 看一下这个模块接受的灵敏度。

GM1700475061_1280_720.MPG|_-3

■ 相关文献链接:

原装正品 SYN480R 433M ASK/OOK 无线接收模块 无线遥控发射接收模块简介(SYN480R F115 433M )

● 相关图表链接:

图1.2.1 接收到的信号波形图1.4.1 单片机解码电路图1.4.2 单面制版电路PCB 解码相关程序 /* **============================================================================== ** CONTROL.C: -- by Dr. ZhuoQing, 2015-11-29 ** **============================================================================== */ //============================================================================== // //------------------------------------------------------------------------------ extern TIM_HandleTypeDef htim1; void ControlInit(void) { HAL_TIM_Base_Start_IT(&htim1); OUT(LED1); OUT(LED2); OUT(LED3); OUT(LED4); //-------------------------------------------------------------------------- g_ucLastStatus = VAL(INPUT); g_nOffCount = 0; g_nOnCount = 0; g_ucDecodeStatus = DECODE_STATUS_NULL; g_nReceiveCode = 0; g_nReceiveMask = 0x1; g_nReceiveCodeKeep = 0; g_nWaitCount = 0xffff; g_ucUpdateFlag = 0; } //------------------------------------------------------------------------------ void Time1ISR(void) { //-------------------------------------------------------------------------- g_nWaitCount ++; if(g_nWaitCount > 5000) { g_ucDecodeStatus = DECODE_STATUS_NULL; } //-------------------------------------------------------------------------- if(VAL(INPUT)) { // ON(LED); if(g_ucLastStatus == 0) { if(g_ucDecodeStatus == DECODE_STATUS_WAIT) { g_ucDecodeStatus = DECODE_STATUS_BIT; } } g_nOnCount ++; g_nOffCount = 0; g_ucLastStatus = 1; } else { // OFF(LED); if(g_ucLastStatus != 0) { if(g_ucDecodeStatus == DECODE_STATUS_BIT) { if(g_nOnCount > 40) g_nReceiveCode |= g_nReceiveMask; g_nReceiveMask if((nCode & 0xffff) != 0xaaaa) return 0x0; unsigned char ucCode = 0x0; nCode >>= 16; unsigned char ucBit2 = nCode & 0x3; if(ucBit2 == 0x3) ucCode |= 1; else if(ucBit2 != 0x0) return 0; nCode >>= 2; ucBit2 = nCode & 0x3; if(ucBit2 == 0x3) ucCode |= 2; else if(ucBit2 != 0x0) return 0; nCode >>= 2; ucBit2 = nCode & 0x3; if(ucBit2 == 0x3) ucCode |= 4; else if(ucBit2 != 0x0) return 0; nCode >>= 2; ucBit2 = nCode & 0x3; if(ucBit2 == 0x3) ucCode |= 8; else if(ucBit2 != 0x0) return 0; return ucCode; } void SetLEDsCode(unsigned char ucCode) { if(ucCode & 0x1) ON(LED1); else OFF(LED1); if(ucCode & 0x2) ON(LED2); else OFF(LED2); if(ucCode & 0x4) ON(LED3); else OFF(LED3); if(ucCode & 0x8) ON(LED4); else OFF(LED4); } //============================================================================== // END OF THE FILE : CONTROL.C //------------------------------------------------------------------------------ /* **============================================================================== ** CONTROL.H: -- by Dr. ZhuoQing, 2015-11-29 ** ** Description: ** **============================================================================== */ //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ //============================================================================== // //------------------------------------------------------------------------------ void ControlInit(void); void Time1ISR(void); //------------------------------------------------------------------------------ CONTROL_EXT unsigned char g_ucLastStatus, g_ucDecodeStatus, g_ucUpdateFlag; CONTROL_EXT unsigned int g_nOffCount, g_nOnCount; CONTROL_EXT unsigned int g_nReceiveCode, g_nReceiveMask, g_nReceiveCodeKeep; CONTROL_EXT unsigned int g_nWaitCount; unsigned char DecodeCode(unsigned int nCode); void SetLEDsCode(unsigned char ucCode); //============================================================================== // END OF THE FILE : CONTROL.H //------------------------------------------------------------------------------


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有