单片机无线发射的原理剖析

目录

一、EV1527编码格式

二、OOK&ASK的简单了解

三、433MHZ

四、单片机的地址ID

五、基于STC15W104单片机实现无线通信


         无线发射主要运用到了三个知识点:EV1527格式;OOk;433MHZ。下面我们来分别阐述:

EV1527是数据的编码格式;OOK是无线发射数据的通信方式;433MHZ是无线发射的载波频率!

一、EV1527编码格式

        EV1527是一种低成本的射频编码芯片,主要运用在遥控系统中(通常作为遥控器)

这是EV1527芯片的电路图,可以看到他除了osc(外接震荡电阻)VCC和GND(电源正负极),和TXD管脚用来输出方波之外,还有四个管脚K1,K2,K3,K4用来接收用户的输入(一般是遥控器的4个按键),当按键没有按下的时候,由于下拉电阻的存在,K1至K4都是低电平状态,当按键按下后呈现高电平,芯片就通过检测这几个管脚的电平组合情况(一共有15种按键组合),从而输出15种预先设定好的不同的方波信号

(像这样的)

当然EV1527芯片仅仅是将用户的按键情况转化成了不同的方波(二进制语言)但是并没有通过电磁波传递出去,于是下面的电路(无线发射电路)便应运而生了,他能够接受到输入进来的方波信号,并且通过433MHZ的电磁波频率,把该方波信号传递成电磁波信号,只要别的主机能够接受到这个信号,就算完成了无线发射的功能

其实说到这里我们仅仅是讲清楚了EV1527将电信号转化成方波的能力,但是并没有讲到他的编码格式是什么样的,下面我们来看看

        所谓的编码格式,其实就是一个二进制信号是按照什么样的规则传递的,比如在传递1的时候高频率电磁波持续的时间是多少?高低频率之间是什么样的顺序?他们的间隔是多少?一共要传递多少个bit位?不同的人可能设计出不同的编码格式,但无论如何,编码格式设计出来都是为了方便人们使用的统一,只要人们用的习惯用的方便,并且硬件容易实现,就是一个好的编码格式。

        比如在这里的EV1527编码格式中:同步起始信号是4个CLK时间的高电平+124CLK时间的低电平,那么主机在接收到这样一个电磁波信号后,就按照我们约定好的EV1527编码格式来解码,从而知道我们要发射的是一个同步起始信号了。至于二进制位的1和0都是一样的道理,只是他们的高低频率信号的持续时间不同罢了。

        而且值得注意的是EV1527标准的编码格式是同步信号+24个bit位,从C0到C19一共20位的地址+D0到D3一共4位的功能信号(关于地址是什么,我们在后面补充说明)

假如芯片内置的地址是 E9700 按下了按键 S1。则输出的数据是 E97001;
整体的数据格式是 同步码+E97001;
同步码 + E97001; 转换成二进制(数据输出单根线,只能通过二进制输出
同步码 + 1110 1001 0111 0000 0000 0001

(当然这只是方便我们理解,他还是要经过无线发射电路将方波转换成电磁波的!)

说到了CLK,我们就不得不提一下下面的这张表格了,他清晰的展示了不同阻值的电阻在使用该无线发射电路的时候每一个CLK周期是多长时间,这就能够帮助我们完成代码的编写了

16LCK的时间长度实际上是和EV1527的供电电源以及振荡电阻这两个因素相关的:

(1)振荡电阻值

        如下图,连接在 1 脚(OSC)的电阻 R2 就是振荡电阻,振荡电阻不一样,CLK 的时间不一样,并且相差比较大。可以对比 47K 和 620K 的时间。比较常用的是:330K 270K 470K

(2)EV1527供电电压

        EV1527 VCC 的供电电压不一样,CLK 的时间不一样。 误差较大,相比震荡电阻误差要小很
多。为什么会有这个误差呢?我猜测是因为这个芯片比较便宜,使用的方案比较廉价,所以制作出来就有误差。

二、OOK&ASK的简单了解

        如果说EV1527编码格式是将二进制语言转换成方波的话,那么OOK&ASK就是无线发射电路的格式,他们决定了无线发射电路是如何将方波信号转换成电磁波信号的。

ASK如何区分0和1?

0:发送 433.92Mhz 无线波形(载波频率)振幅低
1:发送 433.92Mhz 无线波形(载波频率)振幅高

OOK 如何区分 0 和 1?(OOK 是 ASK 的一种特殊形式)
0:不发送数据(振幅为0)
1:发送 433.92Mhz 无线波形(载波频率)

三、433MHZ

四、单片机的地址ID

从官方文档中我们可以看到,每一个单片机都具有唯一的身份证号码,我们也把他叫做ID号,并且程序存储器的最后7个字节单元保存的就是其ID号,只不过被隐藏起来了,用户只能通过地址去访问,但是并不能修改。

我们从stc-isp这个软件中发现最后七个字节是空白的!这就与我们之前所说的相符合了。(为什么最后七个字节是00FF9h呢?因为我们的STC15系列单片机只有4k的程序存储器,当我们从00000h开始存放程序,一直到00FFFh就是第4096个字节了,所以最后七个字节是从00FF9h开始的啦)

五、基于STC15W104单片机实现无线通信

       

 这是一款门磁探测器中的无线发射电路模块,他仅仅只有一块STC15W104单片机和一个无线发射电路,但是却并没有EV1527芯片,这是为什么呢?

        原来为了生产上成本的减少,通常都能够省一点就省一点,所以我们可以直接使用单片机的IO口来模拟实现本来应该由EV1527芯片完成的方波,那么有人会问?没有了EV1527芯片,我们如何来控制高低电平之间的时间呢?别忘了,我们还有定时器!用定时器来控制CLK的时间还有许多优点咧。

(1)CLK 时间长度稳定,不受芯片的供电电压影响
(2)EV1527 数据固定 20(地址码)+4(功能码),单片机可以按照自己的需求来定义地址码和功能码的长度可以自定义私有协议( 24+8 或 28+4 或 32+8 ......)(因为EV1527芯片的输出格式是固定了的)

        下面我们就来看看具体的实现过程

同步头波形输出:

程序流程:
第 1 步:P3.2 输出高电平
第 2 步:通过定时器实现 400us 的精准延时 TH0 TL0 2 个字节
第 3 步:P3.2 输出低电平 (或 P3.2 反正 !P3.2)
第 4 步:通过定时器实现 12.4ms 的精准延时 TH0 TL0 2 个字节

数据 1 波形输出:

高电平+低电平 = 1.2ms + 400us ( 3:1)
程序流程:
第 1 步:P3.2 输出高电平
第 2 步:通过定时器实现 1.2ms 的精准延时 TH0 TL0 2 个字节
第 3 步:P3.2 输出低电平 (或 P3.2 反正 !P3.2)
第 4 步:通过定时器实现 400us 的精准延时 TH0 TL0 2 个字节

数据0波形输出:

高电平+低电平 = 400us + 1.2ms ( 1:3)
第 1 步:P3.2 输出高电平
第 2 步:通过定时器实现 400us 的精准延时 TH0 TL0 2 个字节
第 3 步:P3.2 输出低电平 (或 P3.2 反正 !P3.2)
第 4 步:通过定时器实现 1.2ms 的精准延时 TH0 TL0 2 个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/378386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android AOSP源码研究之万事开头难----经验教训记录

文章目录 1.概述2.Android源下载1.配置环境变量2.安装curl3.下载repo并授权4.创建一个文件夹保存源码5.设置repo的地址并配置为清华源6.初始化仓库7.指定我们需要下载的源码分支并初始化 2.1 使用移动硬盘存放Android源码的坑2.2 解决方法 3.Android源码编译4.Android源烧录 1.…

外卖单店小程序模板/小程序前端模板

外卖单店小程序模板简介:外卖单店小程序前端模板 外卖单店小程序模板截图

visual studio code could not establish connection to *: XHR failed

vscode远程连接服务器时,输入密码,又重新提示输入密码,就这样循环了好几次,然后会报上述的错误。由于我是window系统,我用cmd,然后ssh */你的IP地址/*发现可以远程到服务器上,但是通过Vscode就不…

高仿原神官网UI 纯html源码

高仿原神官网UI源码介绍 如果您希望打造一个与原神官方网站相似的外观和用户体验,但又不想使用复杂的框架或模板,那么我们的高仿原神官网UI源码将是一个完美的选择。它采用纯HTML5构建,无需任何额外的CSS或JavaScript库支持,即可…

浅析Linux内核模块自加载机制

文章目录 概述Linux内核模块管理内核模块存放目录modules系列文件 阻止模块启动时加载 systemd-module-load.service配置文件内核启动参数 udev动态加载机制udev工作流程udev配置示例:网卡重命名 相关参考 概述 模块自加载用于配置系统在启动时自动加载所需要的模块…

『运维备忘录』之 Ansible 自动化运维工具

一、简介 Ansible是基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能的自动化运维工具,广泛用于配置管理、应用部署以及任务协…

为什么要设置止损

2024年1月至2月7日,A股最令人瞩目的事件就是代表小微盘的中证500和中证1000雪球连续敲入,以及万得微盘指数的崩塌(1个月下跌50%)。 这次的这个过程中,止损很重要。一般情况下,如果设置了20%回撤止损的话&am…

Linux版Black Basta勒索病毒针对VMware ESXi服务器

前言 Black Basta勒索病毒是一款2022年新型的勒索病毒,最早于2022年4月被首次曝光,主要针对Windows系统进行攻击,虽然这款新型的勒索病毒黑客组织仅仅才出来短短两个多月的时间,就已经在其暗网平台上已经公布了几十个受害者之多&…

寒假作业-day6

1>请编程实现二又树的操作 1.1二又树的创建 1.2二又树的先序遍历 1.3二又树的中序遍历 1.4二又树的后序遍历 1.5二又树各个节点度的个数 1.6二叉树的深度 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h>typedef char datat…

[项目管理] 如何使用git客户端管理gitee的私有仓库

最近发现即使翻墙也无法g使用ithub了&#xff0c;需要把本地的项目搬迁到新的git托管平台。 gitee 是一个国内开源项目托管平台&#xff0c;是开源开发者、团队、个人进行 git 代码管理和协作的首选平台之一。本文将详细介绍如何向 gitee 提交私有项目。 注册 Gitee 账号并创建…

【芯片设计- RTL 数字逻辑设计入门 14 -- 使用子模块实现三输入数的大小比较】

文章目录 三输入数的大小比较问题分析verilog codeTestBench Code综合图仿真波形图 三输入数的大小比较 在数字芯片设计中&#xff0c;通常把完成特定功能且相对独立的代码编写成子模块&#xff0c;在需要的时候再在主模块中例化使用&#xff0c;以提高代码的可复用性和设计的层…

centos安装harbor

安装docker yum install epel-release yum-utils#docker官网源 yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce -y 安装docker-compose curl -SL https://github.com/docker/compose/releases/download/v2…

【buuctf--被偷走的文件】

将 ftp 流量过滤下来&#xff0c;追踪 ftp 流量&#xff0c;得到下图 先解释一下这四行什么意思&#xff1a; PASV&#xff1a; 这是FTP的命令&#xff0c;用于告知服务器在数据连接中使用被动模式&#xff08;Passive Mode&#xff09;。在被动模式下&#xff0c;数据连接的…

【开源】JAVA+Vue+SpringBoot实现公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

Merging of neural networks

Merging of neural networks 论文链接&#xff1a;https://arxiv.org/pdf/2204.09973v2.pdf源码链接&#xff1a;https://github.com/fmfi-compbio/neural-network-merging 简介 典型的神经网络训练从随机初始化开始&#xff0c;并进行训练&#xff0c;直到在某些局部最优中…

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏&#xff1a;https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…

提速MySQL:数据库性能加速策略全解析

提速MySQL&#xff1a;数据库性能加速策略全解析 引言理解MySQL性能指标监控和评估性能指标索引优化技巧索引优化实战案例 查询优化实战查询优化案例分析 存储引擎优化InnoDB vs MyISAM选择和优化存储引擎存储引擎优化实例 配置调整与系统优化配置调整系统优化优化实例 实战案例…

midnightsun-2018-flitbip:任意地址写

题目下载 启动脚本 启动脚本如下&#xff0c;没开启任何保护 #!/bin/bash qemu-system-x86_64 \-m 128M \-kernel ./bzImage \-initrd ./initrd \-nographic \-monitor /dev/null \-append "nokaslr root/dev/ram rw consolettyS0 oopspanic paneic1 quiet" 2>…

Bpmn-js自定义Palette元素

Bpmn-js作为一个流程编辑器&#xff0c;常规的我们可以将其划分为几个功能区域&#xff0c;每个区域对应的负责不同的功能实现&#xff0c;bpmn-js的设计给我们留下了大量的留白和可扩展区域&#xff0c;其每一部分都可进行组合拼装&#xff0c;同时也支持我们的各种不同层次需…

龙年到,好运绕!想在春节期间开融资融券账户,哪家证券公司支持且利率最低?

融资融券交易是一种杠杆交易&#xff0c;投资者可以借入资金进行股票交易&#xff0c;这样可以放大投资收益的同时也增加了风险。下面是一些融资融券交易的技巧&#xff1a; 选择合适的股票&#xff1a;选择具有投资价值和潜在增长空间的股票进行交易&#xff0c;同时要关注市场…