ESP32嵌入式人工智能中的GPIO与LED按键应用详解

1、ESP32引脚

ESP32 38脚与30脚的主要区别在于引脚数量和功能。‌选择38脚的ESP32开发板通常能提供更多的功能和更好的扩展性,‌适合需要连接多种传感器和外设以及进行复杂通信的应用。‌而30脚的ESP32开发板则可能更适合简单应用或成本敏感的项目。

SP32的引脚图通常包含芯片的外形轮廓、各个引脚的编号和名称、以及引脚的功能说明。引脚按照功能可以分为几类,包括GPIO(通用输入输出)、ADC(模数转换器)、UART(通用异步收发器)、I2C(双向同步串行总线)、SPI(串行外设接口)等。

1. GPIO引脚:GPIO引脚是ESP32最基本的引脚类型,可以用于数字信号的输入和输出。这些引脚可以通过软件配置为输入模式、输出模式或者中断模式,实现与外部设备的通信和控制。

2. ADC引脚:ADC引脚用于模拟信号的采集,可以将外部的模拟信号转换为数字信号进行处理。ESP32的ADC引脚支持多个通道的采样,可以同时采集多个模拟信号。

3. UART引脚:UART引脚用于串行通信,可以实现与其他设备的异步数据传输。ESP32的UART引脚支持多种波特率和数据位配置,可以满足不同的通信需求。

4. I2C引脚:I2C引脚用于连接I2C总线设备,可以实现主从设备之间的双向数据传输。ESP32的I2C引脚支持多个从设备的连接,可以通过软件配置主从模式、数据传输速率等参数。

 2、ESP32的GPIO引脚

ESP32总共有48个GPIO引脚,但其中只有25个被拆引出到开发板两侧的插头。这些引脚可以分配给各种外围职责,包括:

●    15个ADC通道 –  15个12位SAR ADC的通道。 ADC范围可以在固件中设置为0-1V,0-1.4V,0-2V或0-4V

●    2个UART接口 –  2个UART接口。一个用于串口加载代码。它们具有流控制,并支持IRDA!

●    25个PWM输出 –  25个用于调光LED或控制电动机的PWM引脚通道。

●    2个DAC通道 –  8位DAC可产生真正的模拟电压。

●    SPI、I2C和I2S接口 – 有3个SPI和1个I2C接口,可连接各种传感器和外围设备,如果您想在项目中添加声音,则有两个I2S接口。

●    9个触摸引脚-  9个GPIO具有电容触摸感应。

绿色突出显示的管脚可以使用。黄色突出显示的可以使用,但您需要注意,因为它们可能在启动时有意外行为。不建议将红色突出显示的管脚用作输入或输出。

GPIO34到39是GPIO–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出。请注意不要把按键接G34-39.

因此我们把G16接按键,G19、G18、G5、G17接LED1-4,电源接3.3,GND接GND。

3、MicroPython代码

我歪打正着的找了个中文的参考代码网站关于 ESP32 端口的一般信息 —MicroPython中文 1.17 文档,

MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。但凡学过Python,不要1分钟,什么LED的点亮,闪烁,流水分分钟搞定啊。

from machine import Pin
import time

#LED灯点亮
# P0 = Pin(19, Pin.OUT)  
# P0.value(0)
#==================================================================
#LED灯闪烁
# P0 = Pin(19, Pin.OUT)    # create output pin on GPIO0
# 
# while True:
#     P0.on()                 # set pin to "on" (high) level
#     time.sleep(0.5)
#     P0.off()                # set pin to "off" (low) level
#     time.sleep_ms(500) 
#==================================================================
#LED流水
P0 = Pin(19, Pin.OUT)  
P1 = Pin(18, Pin.OUT)
P2 = Pin(5, Pin.OUT)
P3 = Pin(17, Pin.OUT) 
LED_List = [P0,P1,P2,P3]
def Led_Flow():
    for i in LED_List:
        print(i)
        i.value(0)
        time.sleep(0.1)
    for i in LED_List:
        i.value(1)
    time.sleep(0.1)
       
while True:
    Led_Flow()
    

感觉还是Python简单啊,随心所欲的写写就实现了。

Key1 = Pin(16,Pin.IN,Pin.PULL_UP)
Led0 = Pin(19, Pin.OUT)
state =0
while True:
    if Key1.value()==0:
        time.sleep(0.15)
        if Key1.value()==0:
            state= not state
            Led0.value(state)
    else:
        time.sleep(0.15)

这个是按键实现按一下led灯灭灯亮。基本和树莓派Python实现差不多。

作者:u010152658

物联沃分享整理
物联沃-IOTWORD物联网 » ESP32嵌入式人工智能中的GPIO与LED按键应用详解

发表回复