在之前的文章中,我们简单地介绍了ESP32的引脚最基本的控制,用来控制一个引脚的电平高低变化来控制一个LED的亮灭。在这种情况下,相当于我们是控制ESP32的引脚来发送了一个数字信号。但在ESP32中,可以发送或接收的并不仅仅是数字信号,所以在介绍更多关于代码方面的知识前,我们首先应该先了解ESP32引脚(GPIO)信号方面的知识,因为在物联网中,ESP32大部份情况下,都是通过引脚来控制其它设备或读取其它设备发送的信号。
数字信号是指二进制形式的电子信号,信号的电压水平仅有高电平或低电平两种状态。这与模拟信号不同,模拟信号的电压水平可以任意变化,不仅仅是高电平或低电平。因此,数字信号可以进行高速传输和处理,但模拟信号则不能,模拟信号需要通过数字信号转换(模数转换)设备将其转换为数字信号。
电平是一个电学概念,用来表示一个电信号的大小。它是用来描述电压(Volt)的一个数字。一般来说,我们可以把电平分为高电平和低电平。高电平通常对应于较大的电压,而低电平对应于较小的电压。在数字电路中,高电平通常表示为1,而低电平表示为0。
在大部份教程中,对于电平的描述都是3.3V或5V为高电平,0V为低电平。但在实际应用和测试中,有的时候发现电压不足3.3V,比如2.5V时,ESP32同样可以识别为高电平。通常在电子工程中,高电平和低电平的临界点是定义在一定的电压范围内的,通常是3.3V或5V。具体的临界点数值取决于系统的设计和使用的芯片。通常,高电平的数值大于2.5V,低电平的数值小于0.5V,具体的数值最好通过测试研究来确定。 所以,如果要接收一个数字信号,必须要先了解该信号在高低电平时的电压和电流的值来确定ESP32是否可以正确接收。在ESP32中,大部份引脚都可以接收数字信号。
模拟信号是一种连续变化的电信号,其中电压或电流与时间相关。模拟信号通常用于记录、分析、传输和处理模拟信息,如音频、视频、温度、光线、加速度等。对于模拟信号来说,很难用一个特定的值来表示,例如,我们常用的电位器(可变电阻)就是一种模拟信号,当我们把100欧姆电位器转动到两端的正中间时,我们用万用表可以测到电阻为50欧姆,但如果这个万用表的精度足够高,我们可能测到的电阻更可能是50.00......欧姆。这里省略的数值也许是一个无限不循环的值。但在大多数情况下,我们并不需要这么高的精度。
ESP32对于模拟信号的处理,需要使用模拟电路和模拟信号处理芯片,如模拟前置放大器、模数转换器(ADC)、模拟数字转换器(DAC)等。
ESP32拥有多个内置的模数转换(ADC)通道,这些通道可以捕捉到电压的变化并将其转换为数字信号。ADC的输入电压范围一般在0V至3.3V之间,并且具有一定的分辨率,例如12位或16位等。 ESP32的ADC功能可以用于捕捉各种外部传感器的输入信号,如温度传感器,湿度传感器,光敏电阻等,并将其读取为数字信号进行处理。
ESP32的ADC通道的分辨率一般为12位,因为每个位可以对应2个值,所以,可以计算出,它的分辨率转换为十进制数值可以用2的12次方(2^12)来计算,结果就是2^12 = 4096。范围为0~4095。
模拟信号也存在一些缺点,如容易受到外界的干扰,信号传输的质量难以控制等。ESP32内置的ADC功能在官方文档中,也明确说明了该功能在精度和防干扰方面是比较差的。所以,如果在需求较高的情况下,可以使用更专业的ADC芯片。
PWM (Pulse Width Modulation) 是一种用来生成周期性数字信号的技术,通过改变占空比来模拟模拟信号。 PWM 信号的周期性电平以恒定频率交替变化,用来控制占空比的比例越长,则对应的平均电压越高。因此,PWM 信号可以用来控制设备的亮度,调整电机的速度等等。
通过 PWM,我们可以通过定义占空比来计算平均电压,从而控制设备。在ESP32中,我们可以使用内置的PWM输出功能来生成PWM信号,并通过该信号控制各种硬件设备。在实际运用中,从简单的用来控制LED的明亮变化,到复杂的用来发送红外线信号传输协议都有广泛的应用。又或者,我们可以自定义一个自已的一个信号传输协议并通过该协议来控制各种硬件设备。
PWM信号的频率指的是一个周期中的脉冲数。一般来说,PWM信号的频率越高,所表示的模拟信号就越平滑。PWM信号的频率可以在设备设置或编程时调整。不同的应用场合对PWM信号的频率有不同的要求,一般来说,PWM信号的频率越高,硬件的处理负担就越大,因此通常在需要与外界通信的应用中,PWM信号的频率要比在控制传动系统等内部控制应用中的频率要低。
在ESP32的PWM信号输出中,有几个比较重要的参数
通道:ESP32具望多达16个PWM通道,每个通道可以独立配置和控制。
频率:PWM信号的频率是指在指定时间内(如1秒)电平高低变化的次数,可以由用户自行设置,通常的频率范围为1 Hz到1 MHz,具体的频率取决于应用的需求。
分辨率:ESP32的占空比分辨率,分辨率越高,精度越高。该值决定后面 占空比可写值,该值写8,则占空比最大可写255,该值写10,则占空比最大可写1023,值写成12,则占空比最大4095。
占空比:PWM信号的占空比表示高电平电压占总周期电压的比例,占空比可以自行设置,一般范围为0到100%。占空比越高,高电平时间就越长,相应的,低电平时间就越短。
我们用一张图来说明一下频率,占空比之间的关系
如图:
一、在第一个波形和第二个波形中,占空比都为50%,但是他们在同样的时间(1秒)中,电平的高低电平变化分别为10和20,这时,他们的占空比虽然一样,但是他们的频率分别是10和20
二、在第二个波形和第三个波形中,频率都为20,但他们的占空比分别为50%和30%,这时,他们的频率虽然一样,但是因为它们的高低电平的时间是有区别的,第二个波形每个频率时间里,50%为高电平,50%为低电平;在第三个波形每个频率时间里,30%为高电平,70%为低电平。
以上就是ESP32中常用的三种信号,也是在物联网的开发中比较重要的三种信号。对于该开发板提供的其它协议的信号(如SPI/I2C/UART/I2S),在以后的文章中会在实际运用中给于详细的介绍
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L
目录一、inout在设计文件中的使用方法1.1、inout的第一种使用方法1.2、inout实现的第二种使用方法1.3、inout使用总结 二、inout在仿真测试中的使用方法一、inout在设计文件中的使用方法在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPIFlash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。1.1、inout的第一种使用方法 实际上,双向信号的本质是由一个三态门组成的,三态门可以输出高电平,低电
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景 最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记