type
status
date
slug
summary
tags
category
icon
password
ESP32-Logs
补充一下数电模电的基础概念
基础知识
数字信号
- VCC 高电平 ⇒ 1
- GND 低电平 ⇒ 0
电阻:限流、分流、分压
电容:滤波、旁路、去耦、储能
封装:0402、0603、0805……(封装大小)
串口波特率:串口通信速率,每秒可以传输多少个二进制位。一般为9600或115200
电子元器件在广义上分为有源器件和无源器件
有源器件需要电源(能量)才能实现其特定的功能,比如运算放大器在有输入信号的前提下,如果不提供电源,运算放大器无法实现其放大功能
无源器件在工作时,不需要外加电源,只要输入信号就能正常工作,比如在信号线上串联33Ω的电阻,无论是否提供电源,只要有信号经过,电阻就能实现限流的作用
I2C总线——SDA、SCL
- SDA:串行数据线,负责在设备间传输串行数据
- SCL:串行时钟线,负责产生同步时钟脉冲
SDA和SCL是I2C总线的信号线
I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上,连接到I2C中总线上的设备既可以用作主设备,也可以用作从设备
主设备负责控制通信,通过对数据传输进行初始化/终止化,来发送数据并产生所需的同步时钟脉冲;从设备则是等待来自主设备的命令,并响应命令的接收,且同步时钟信号只能由主设备产生
SDA和SCL都需接上拉电阻(大小由速度和容性负载决定,一般在3.3K~10K之间),当总线空闲时,SDA和SCL都需处于高电平状态
I2C是半双工,同一时刻只能单向通信
传输过程:
- 当主机要和某个从机通讯时,会先发送一个开始条件,然后发送从机地址和读写控制位,接下来传输数据,数据传输结束时,主机会发送停止条件;传输的每个字节为8位,高位在前,低位在后
传输过程中的电平变化:
- SDA是双向数据线,SCL是时钟线SCL,在I2C总线上传送数据,首先送最高位,由主机发出启动信号,SDA在SCL高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据;数据传送完毕后,由主机发出停止信号,SDA在SCL高电平期间由低电平跳变为高电平
传输过程详解:

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据,数据传输过程中只有在SCL线为低电平期间,SDA上的电平允许变化
从机地址:主机发送的第一个字节为从机地址,高7位表示地址,最低位为R/W读写控制位,1表示读操作,0表示写操作
应答信号:每传输完成一个字节的数据,接收方就需要回复一个ACK(acknowledge);写数据时由从机发送ACK,读数据时由主机发送ACK
当主机读到最后一个字节时,可发送NACK然后跟结束信号
数据:从机地址发送完后可能会发送一些指令,依从机而定,然后开始传输数据,由主机或者从机发送,每个数据为8位,数据的字节数没有限制
在开始信号之后,SDA和SCL先都处于低电平,当要传输数据时SDA先为高,之后SCL再跳变为高,才可进行数据的传输

重复开始信号:在一次通信过程中,主机可能需要和不同的从机传输数据或者需要切换读写操作时,主机可以再发送一个开始信号
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据
上拉电阻/下拉电阻
🤔: 什么是上拉电阻和下拉电阻?
上拉电阻和下拉电阻统称为拉电阻,其作用是将一个不确定电平状态的信号线通过一个电阻拉到高电平或低电平
因为板子在初始上电时,IO口电平是随机的,IO口可能是高电平,也可能是低电平,这样就会产生干扰导致检测误差,所以我们接上一个上拉电阻,初始态即可稳定成高电平
如下图,每个按键都接了一个上拉电阻,因为在初始上电时,由于IO口的电平是不确定的,上拉电阻可以帮助防止IO口漂移到中间电平或低电平状态,它提供了一个默认的高电平状态,确保IO口在没有明确的输入信号时保持在预期的逻辑高电平

🤔: 如何辨别拉电阻?
- 上拉电阻与电源串联
- 下拉电阻与地线串联

工具
焊接工具及必备元器件
- 刀头烙铁
- 锡丝/锡浆/锡膏
- 尖嘴钳
- 镊子
- 排针
- 一些必要电阻和电容
面包板
面包板是实验室中用于搭接电路的重要工具,熟练掌握面包板的使用方法可以提高实验效率,减少实验的故障出现几率



两边的窄条一般用于电源接线,中间的宽条一般用于开发板和其他元器件接线
ESP32-WROOM-32模块概述
引脚定义:

- 电源引脚:该模块有两个电源引脚 5V 和 3.3V ,可以使用这两个引脚来向其他设备和模块供电
- GND引脚:该模块的接地有3个引脚
- 启用引脚(EN):该引脚用于启用和禁用模块。引脚为高电平时启用模块,低电平禁用模块
- 输入/输出引脚(GPIO):可以使用32个GPIO引脚与LED、开关和其他输入/输出设备进行通信
- ADC:此模块上的16个ADC引脚可以将模拟电压(某些传感器的输出)转换为数字电压。其中一些转换器连接到内部放大器,能够以高精度测量小电压
- DAC:ESP32模块有两个数模转换器,精度为8位
- 触摸焊盘:ESP32模块上有10个引脚,对电容变化很敏感。这些引脚可以连接到某些焊盘(PCB上的焊盘),并将它们用作触摸开关
- SPI:该模块上有两个SPI接口,可用于连接显示屏、SD / microSD存储卡模块、外部闪存等
- I2C:SDA和SCL引脚用于I2C通信
- 串行通信(UART):该模块上有两个UART串行接口。使用这些引脚可以在两个设备之间传输高达5Mbps的信息
(UART0还具有CTS和RTS控制)
- PWM:几乎所有ESP32输入/输出引脚都可用于PWM(脉冲宽度调制)。使用这些引脚可以控制电机、LED灯和颜色等
注意:GPIO6至GPIO11引脚(SCK/CLK,SDO/SD0,SDI/SD1,SHD/SD2,SWP/SD3和SCS/CMD引脚)用于模块内部闪存的SPI通信,不建议使用它们
虽然但是,这才是我板子的引脚图……问就是NodeMCU的板子,不是乐鑫的(
而且,板子波特率也不是115200,而是9600……

环境搭建常见问题
A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist
seems like that:

尝试上图左下角有个插头写着Auto的选项,手动选择板子端口,默认是ttyUSB0
如果问题依旧,按照PlatformIO的建议,去修改点东西
大概是少了个包,然后ttyUSB0端口普通用户无权访问,需要将普通用户添加进组
大概步骤如下:
在终端输入
重启udev
如果不是root用户,添加用户进组
最后注销登录或者重启即可
实际操作
点亮一个灯泡
嵌入式开发的HelloWorld😛

点亮一个屏幕

用按键控制灯泡并用屏幕显示
使用按键控制灯泡闪烁,当按键被按下时,屏幕显示一次 “On Click!” ,灯泡闪烁一次

ADC读取电位器电压并在屏幕上显示
转动电位器时,通过ADC读取的电位器电压值在屏幕上实时显示
舵机简单驱动
舵机接外置电源,GND要接在开发板的GND上,简称共地
SG90 180度舵机控制
硬件信息
- 时基脉冲 (频率):20ms / 50Hz
- 高电平范围:0.5ms ~ 2.5ms
- 控制关系:
0.5ms —— 0度;
1.0ms —— 45度;
1.5ms —— 90度;
2.0ms —— 135度;
2.5ms —— 180度;
- 死区:5us
- 反应转速:0.12s / 60度
- 供电电压:3 - 7.2V
控制舵机循环摆动
控制舵机摆动到指定位置
使用电位器控制舵机摆动并在屏幕上显示当前摆动角度
供电不太够……
电压不太稳定……
多半是接触不良
MD破案了,是电位器太垃圾(
接屏幕版
MG90S 360舵机控制
可以用SG90的代码,360度舵机不能控制角度,只能控制转动速度和转动方向
通过Touch引脚模拟触控开关
esp32支持触摸引脚,此引脚可以感知该引脚的电荷变化
10个触摸通道对应引脚:
串口监视器:

视频:
参考文章 https://blog.csdn.net/countofdane/article/details/82561478 (面包板使用简介) https://zhuanlan.zhihu.com/p/429642282(最全讲解上下拉电阻) https://zhuanlan.zhihu.com/p/105178847(ESP32快速入门指南) https://blog.csdn.net/weixin_42880082/article/details/120766154(ESP32电容式触摸传感器引脚实例)
- 作者:sleepfat
- 链接:https://blog.sleepfat.top/ESP32%E5%AD%A6%E4%B9%A0%E6%97%A5%E5%BF%97
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章