ESP32: Blink 示例(ESP-IDF 开发环境)

Blink示例

本节以Blink示例程序为例,一步步地完成一个简单的ESP-IDF示例程序编译。需要注意的是,本节是通过GPIO的高/低电平来驱动LED的。对于WS2812指示灯,需要使用特殊通信协议,请参考 esp-idf/examples/peripherals/rmt/led_strip 中的示例程序。

TIPS

WS2812是一颗数字LED灯珠,采用单总线通讯,每颗灯珠支持24bit的颜色控制,也即RGB888,信号线通过DIN输入,经过一颗灯珠之后,信号线上前24bit数据会被该灯珠锁存,之后将剩下的数据信号整形之后通过DOUT输出

WS2812B RGB彩灯相关资料

实验最终效果如下图所示:
img

材料准备

材料 数量
ESP32-C3 开发板(这里使用的型号是:ESP32-C3-DevKitM-1 1个
LED灯 1个
杜邦线(母对母) 2条

最好加一个限流电阻:
驱动 LED 的电压约为:2V(有些颜色的LED,驱动电压还要高一点),最大耐电电流约:10mA -30mA,根据欧姆定律,电路中应加入一个限流电阻,其阻值=(3.3v-2v)/0.01A = 130 Ω
该阻值只是当做参考的理论值,再加上电子元器件难免有误差,电源电源不会是精准值的3.3v,每一个LED的耗电量也会略微不同,
为了保护负载(LED),可以取比计算值稍微高一点的电阻,比如:220Ω。

本示例只是为了方便展示电路连线,所有没加限流电阻。

硬件连线

按照下图进行连线:

img
  1. LED灯的正极(针脚比较长的一脚为正极)连接ESP32-C3 开发板的 8 针脚;

  2. LED灯的负极连接ESP32-C3 开发板的 GND 针脚;

  3. 最后使用 USB 线将 ESP32-C3 开发板连接到 PC。

最好LED灯连接一个220欧的电阻,避免电流过大烧坏了开发板针脚和LED,这里就不加了。

创建项目

首先,打开 VS Code 从模板项目创建 Blink 项目,按 F1 或选择顶部菜单【查看/命令面板(Ctrl + Shift + P)】,在命令行中输入:esp-idf show,在显示的下来菜单中选择【展示示例项目】

1676553715607

然后选择当前的 ESP-IDF 开发环境,如下图所示:

1676553766309

然后选择【blink】示例,如下图所示进行操作:

然后选择项目的保存地址,切记项目路径不能包含中文,这样就创建了 blink 项目了,如下图所示:

1676553891835

程序入口

main/blink.c

/* Blink Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"

/* Can use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,
   or you can edit the following line and set a number here.
*/
#define BLINK_GPIO CONFIG_BLINK_GPIO

void app_main(void)
{
    /* Configure the IOMUX register for pad BLINK_GPIO (some pads are
       muxed to GPIO on reset already, but some default to other
       functions and need to be switched to GPIO. Consult the
       Technical Reference for a list of pads and their default
       functions.)
    */
    gpio_reset_pin(BLINK_GPIO);
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
    while(1) {
        /* Blink off (output low) */
        printf("Turning off the LED\n");
        gpio_set_level(BLINK_GPIO, 0);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        /* Blink on (output high) */
        printf("Turning on the LED\n");
        gpio_set_level(BLINK_GPIO, 1);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

打开 idf.py 前端

对于Windows系统,可以直接在程序列表查找并打开 ESP-IDF 4.3 CMDESP-IDF 4.3 PowerShell,终端打开后会自动添加环境变量,执行如下命令,切换到项目根目录:

> cd F:\05-workspace\dev\01-lab\esp32\book-esp32-c3-guide\src\ch04\blink

设置目标设备

使用如下命令将编译目标设置为 ESP32-C3

idf.py set-target esp32c3

这时将自动生成配置文件 sdkconfig

配置 GPIO

接着使用命令

idf.py menuconfig

弹出配置界面:

1676554528360

进入选项配置界面,按向上/向下按键和Enter按键进入Example Configuration,选择【Blink GPIO number】,输入数字将GPIO改为指定引脚,如下图所示,按照提示进行保存即可。

保存后,按【ESC】退出。

TIPS

出现这个配置项,其实因为文件 main/Kconfig.projbuild 中设置了这个选项
sdkconfig 是由编译系统自动生成的,可通过命令 idf.py menuconfig 进行修改并重新生成。menuconfig中的选项主要从工程的 Kconfig.projbuild 以及组件的 Kconfig > 导入,组件的开发者一般通过在 Kconfig 中添加配置项,使组件具有灵活可配置的特性。

main/Kconfig.projbuild 文件的内容如下:

menu "Example Configuration"

    config BLINK_GPIO
        int "Blink GPIO number"
        range 0 34
        default 5
        help
            GPIO number (IOxx) to blink on and off.

            Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink.

            GPIOs 35-39 are input-only so cannot be used as outputs.

endmenu

这时配置文件 sdkconfig的这个配置现在已经修改为8,

CONFIG_BLINK_GPIO=8

同时产生了一个旧的配置文件 sdkconfig.old

选择串口

使用 USB 线将 ESP32 开发板连接到电脑后,然后在 PC 桌面右键单击【此电脑】图标,选择【管理】菜单项,在【计算机管理】中可以查看连接端口,如下图所示:

每个人的串口可能不同,我这里是 COM7, 请记住串口名,您会在后续步骤中使用。

编译工程

然后依次如下命令进行编译

idf.py build              # 编译工程

烧录与监视输出

然后依次如下命令进行烧录与监视输出

idf.py -p COM7 flash monitor # 烧录到设备并监视输出

结果

LED 灯开始闪烁,如下图所示:

img
posted @ 2023-02-16 22:03  easy5  阅读(1862)  评论(0编辑  收藏  举报