ESP32 引脚说明
ESP32
共有 38
个引脚如下所示:
引脚功能分类
功能简介 | 引脚编号 |
---|---|
ADC : 模拟信号采样 | 32, 33, 34, 35, 36, 39 |
DAC : 模拟信号输出 | 25, 26 |
UART : 串行通信 | 1(TX0),3(RX0) ; 10(TX1),9(RX1) ; 17(TX2),16(RX2) |
TOUCHPAD : 触摸传感器(检测手指接触引脚产生的电容差) | 0, 2, 4, 12, 13, 14, 15, 27, 32, 33 |
SPI : SPI总线接口 | hspi(14,12,13,15) vspi(23,19,18,5) |
I2C : I2C总线接口 | SDA(21) SCL(22) |
只能作为输入的引脚
除了 GPIO34, GPIO35, GPIO36, GPIO39 这四个 GPIO
引脚只能作为输入,而无法作为输出外,其他所有 GPIO
引脚都能进行双向输入输出
信息-数据-信号
理解使用引脚接收传感器数据的过程,首先要理解 信息
, 数据
和 信号
的概念:
信息是对现实事物存在方式或运动状态的描述,信息的表现形式可以是数学、文字、语言、图形及动画等,信息使这些表示形式包含了具体的内容和意义。
数据是信息的载体,它是信息的表示形式,可以是数字、字符、符号等。单独的数据没有实际的含义。数据和信息既有区别又有联系,数据是独立的,虽然数据本身并没有含义,但把数据按一定规则、形式组织起来时,就可以传达某种意义,这种具体意义的数据集合就是信息。例如,单独的英文字母:“h”,“o”,“r”,“s”,“e”,是没有意义的,但我们把它们组合起来成为一个单词“horse”时,它就具有“马”这样一个信息的意义了。
信号是数据在传输过程中的具体物理表示形式,具有确定的物理描述,如电压、磁场强度等。
使用引脚的目的是为了发送或者接收一些信息,而这些信息是用数据表示的.计算机底层是没有办法理解数据的,但是能理解电平的高低,所以数据最终要以信号的方式从引脚流入或者流出,然后通过程序的处理转换为数据,被人类使用.也就是说信号是运载数据的工具,信号是数据的载体。信号包含光信号、声信号和电信号等.在今天的计算机内部处理中主要是 电信号
(不是全部,比如计算机网络中的光纤是光信号).
电信号
电信号的本质是随着时间而改变电压或电流大小.电信号主要分为两种,一种是数字信号,另一种是模拟信号.
数字信号: 电压或者电流的取值是离散的,幅值表示被限制在有限个数值之内。最常用的二进制码就是一种数字信号。在这种二进制体系中,用
0
表示低电平
,1
表示高电平
.(在编程的时候直接控制引脚高电平
和低电平
就可以了,具体高低电平对应什么电压,雨我无瓜)模拟信号: 电压或者电流的取值是连续的.
假设横轴为时间可以把两种信号的波形化成下面的图展示出来:
Pin 类的使用
MicroPython
通过 machine
模块的 Pin
类控制各类 GPIO
引脚.
定义一个 Pin
定义 Pin
可以传入以下参数:
id:任意引脚号
mode:引脚模式(输入,输出)
pull:是否接入上拉\下拉电阻
value:引脚电平状态(0 —低电平,1 —高电平)
1 | pin = Pin(12, mode=Pin.OUT, pull=None, value=0) |
Pin.init([mode[, pull]])
在pin
定义中 id
为必填参数,其他参数可以通过 init
方法传入. init
方法用于初始化引脚
1 | from machine import Pin |
Pin.value([value])
通过 value
方法,控制引脚发出的信号.
1 | pin = Pin(12, mode=Pin.OUT, pull=None, value=0) |
Pin.irq(trigger, handler)
设置引脚的中断处理程序,在引脚的电平满足条件时运行回调函数
trigger
可选的参数有:
Pin.IRQ_FALLING — 下降沿触发
Pin.IRQ_RISING — 上升沿触发
handler
为中断被触发之后的回调函数
1 | pin = Pin(32, Pin.IN) |
然后用手触摸 32
号引脚之后,可以在终端看到输出.
数字信号示例: 闪烁LED灯
使用 ESP32
开发板点亮上面的 LED
灯.点亮 LED
灯两种方式:
- 灯正极接输出端, 灯负极接板子的
GND
, 当输出端输出高电平时灯点亮; - 灯负极接输出端, 灯正极接板子的
V5
, 当输出端输出低电平时灯点亮.
首先从 machine
模块中导入了 Pin
这个类. 然后定义引脚为输入类型还是输出类型, 最后通过给引脚写入高低电平来控制 LED
灯的亮暗:
1 | from machine import Pin |