
最近想玩玩ESP32,在某宝上买了个ESP32的板子,40块的价格,带有1.14寸TFT显示屏,WiFi和蓝牙,小飞哥觉得还是可以的。入手,盘他。
完成目标
- 了解ESP32-ttgo板子资源
- 学会vscode+platformIO IDE环境搭建
- 学会新建或者导入工程
- 学会操作GPIO
硬件环境
- ESP32-ttgo开发板
软件环境
- vscode
- vscode插件platformIO IDE
先来几张靓照,type-c接口,有电池充电供电电路,用户按键,还是非常小巧的:

某宝价格


1、官方规格说明
| 项目 | 规格 | 
| Chipset | ESPRESSIF-ESP32 240MHz Xtensa® single-/dual-core 32-bit LX6 microprocessor | 
| FLASH | QSPI flash 4MB | 
| SRAM | 520 kB SRAM | 
| USB to TTL | CP2104 | 
| Modular interface | UART、SPI、SDIO、I2C、LED PWM、TV PWM、I2S、IRGPIO、ADC、capacitor touch sensor、DACLNA pre-amplifier | 
| Display | IPS ST7789V 1.14 Inch | 
| Working voltage | 2.7V-4.2V | 
| Working current | About 67MA | 
| Sleep current | About 350uA | 
| Size&Weight | 51.5225.048.54mm(7.81g) | 
| Power Supply | USB 5V/1A | 
| Charging current | 500mA | 
| Battery | 3.7V lithium battery | 
| JST Connector | 2Pin 1.25mm | 
| USB | Type-C | 
| OS | FREERTOS | 
更多介绍:
2、引脚分配

3、开发环境搭建
开发环境真可谓是多种多样,windows,mac,linux都支持,各种环境配置详细见:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s2/get-started/
我使用的是vscode+platformIO IDE平台下开发的,vscode下载安装就不啰嗦了,安装完vscode之后,在扩展应用搜索platformIO IED,然后安装就可以了,可能需要等待一些时间,python环境会自动安装
 安装完成之后,vscode左侧会出现platformIO IDE logo,感觉像个小蚂蚁头,嘿嘿,在右侧home界面有新建工程,导入工程等。
  安装完成之后,vscode左侧会出现platformIO IDE logo,感觉像个小蚂蚁头,嘿嘿,在右侧home界面有新建工程,导入工程等。
 环境的搭建比较简单,无非就是可能需要时间等待,下面进行新建工程的介绍,主要关注Board、Framework就可以了
  环境的搭建比较简单,无非就是可能需要时间等待,下面进行新建工程的介绍,主要关注Board、Framework就可以了
- 
board有好几款可以选择,内核都是一样的,选择一款就可以;Framwork:有两种,可以选择Arduino,或者选择官方的ESP-IDF,出于对ESP-IDF比较熟悉,我选择的是ESP32-IDF,当然啦,小伙伴们如果对Arduino比较熟悉,根据自己需要选择就可以了;Location:更改项目存储地址; 配置完,点击Finish就可以了,但是这个等待的时间太长了,让我一度崩溃,小伙伴们可以试试,不知道是不是小飞哥的网速比较渣。如果也是等了还就还不能创建成功,有另外一种办法是,不选择新建,选择导入例程,里面有不少官方例程,随便导入一个就可以了。 配置完,点击Finish就可以了,但是这个等待的时间太长了,让我一度崩溃,小伙伴们可以试试,不知道是不是小飞哥的网速比较渣。如果也是等了还就还不能创建成功,有另外一种办法是,不选择新建,选择导入例程,里面有不少官方例程,随便导入一个就可以了。 测试导入hello world工程,下图是导入的官方源码,修改为每秒打印一次。 测试导入hello world工程,下图是导入的官方源码,修改为每秒打印一次。
 
 然后编译、下载,编译成功
  然后编译、下载,编译成功
 下载,下载就不用说了,唯一需要注意的是,下载是通过串口的,所以要注意,串口不要被占用,被占用的话会报如下错误,测试代码,程序已经是完美的运行起来了。
  下载,下载就不用说了,唯一需要注意的是,下载是通过串口的,所以要注意,串口不要被占用,被占用的话会报如下错误,测试代码,程序已经是完美的运行起来了。


4、GPIO操作
  以按键为例子,介绍GPIO的操作,硬件电路连接

硬件连接准备好了,ESP-idf库准备好了,如何编写应用程序呢,这时候就需要接口API了,还是上面的网址:
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s2/api-reference/index.html 介绍还是比较详细的,先来看GPIO的操作API,API函数也比较多,本次主要用到下面几个:
  介绍还是比较详细的,先来看GPIO的操作API,API函数也比较多,本次主要用到下面几个:
- 设置GPIO方向,也即是输入输出模式,可以配置为仅输入、仅输出、输入输出;esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) - GPIO set direction. - Configure GPIO direction,such as output_only,input_only,output_and_input - Return - ESP_OK Success
 ESP_ERR_INVALID_ARG GPIO error- Parameters - gpio_num: Configure GPIO pins number, it should be GPIO number. If you want to set direction of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
 mode: GPIO direction
- 获取GPIO电平状态 int gpio_get_level(gpio_num_t gpio_num) - GPIO get input level. - Warning - If the pad is not configured for input (or input and output) the returned value is always 0.- Return - 0 the GPIO input level is 0
 1 the GPIO input level is 1- Parameters - gpio_num: GPIO number. If you want to get the logic level of e.g. pin GPIO16, gpio_num should be GPIO_NUM_16 (16);
按键代码实现及测试效果,按键按下时,打印信息。
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/gpio.h"
void app_main()
{
    //esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)
    if (ESP_OK == gpio_set_direction(GPIO_NUM_35, GPIO_MODE_DEF_INPUT))
    {
        printf("Key1 GPIO Input mode set success\n");
    }
    int i = 0;
    while (1)
    {
        if (!gpio_get_level(GPIO_NUM_35))
        {
            vTaskDelay(20 / portTICK_PERIOD_MS); //延时20ms消抖
            if (!gpio_get_level(GPIO_NUM_35))
            {
                printf("Key GPIO Test\n");
            }
        }
        i++;
        if (i % 50 == 0)
        {
            printf("Hello esp32 ttgo!\n");
            printf("hello world!\n");
        }
        vTaskDelay(10 / portTICK_PERIOD_MS);
    } 本次的介绍就到这里啦,后面有更精彩的内容,欢迎大家持续关注嵌入式实验基地!
  本次的介绍就到这里啦,后面有更精彩的内容,欢迎大家持续关注嵌入式实验基地!
如果你觉得对自己有帮助的话,给个赞,点个关注,感谢前进的道路上有你的陪伴!

欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!










