ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide

  最近想玩玩ESP32,在某宝上买了个ESP32的板子,40块的价格,带有1.14寸TFT显示屏,WiFi和蓝牙,小飞哥觉得还是可以的。入手,盘他。

完成目标


  • 了解ESP32-ttgo板子资源
  • 学会vscode+platformIO IDE环境搭建
  • 学会新建或者导入工程
  • 学会操作GPIO

硬件环境

  • ESP32-ttgo开发板

软件环境


  • vscode
  • vscode插件platformIO IDE

  先来几张靓照,type-c接口,有电池充电供电电路,用户按键,还是非常小巧的:


ESP32-ttgo T-Display之开发环境搭建及GPIO操作_智能小车_02

某宝价格

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_03

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_04

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.52​25.04​8.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、引脚分配

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_05

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环境会自动安装

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_06  安装完成之后,vscode左侧会出现platformIO IDE logo,感觉像个小蚂蚁头,嘿嘿,在右侧home界面有新建工程,导入工程等。

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_07  环境的搭建比较简单,无非就是可能需要时间等待,下面进行新建工程的介绍,主要关注Board、Framework就可以了



  • board有好几款可以选择,内核都是一样的,选择一款就可以;Framwork:有两种,可以选择Arduino,或者选择官方的ESP-IDF,出于对ESP-IDF比较熟悉,我选择的是ESP32-IDF,当然啦,小伙伴们如果对Arduino比较熟悉,根据自己需要选择就可以了;Location:更改项目存储地址;ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_08  配置完,点击Finish就可以了,但是这个等待的时间太长了,让我一度崩溃,小伙伴们可以试试,不知道是不是小飞哥的网速比较渣。如果也是等了还就还不能创建成功,有另外一种办法是,不选择新建,选择导入例程,里面有不少官方例程,随便导入一个就可以了。ESP32-ttgo T-Display之开发环境搭建及GPIO操作_智能小车_09  测试导入hello world工程,下图是导入的官方源码,修改为每秒打印一次。
  • ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_10


ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_11  然后编译、下载,编译成功ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_12

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_13  下载,下载就不用说了,唯一需要注意的是,下载是通过串口的,所以要注意,串口不要被占用,被占用的话会报如下错误,测试代码,程序已经是完美的运行起来了。

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_14

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_智能小车_15

4、GPIO操作


  以按键为例子,介绍GPIO的操作,硬件电路连接ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_16

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_17

  硬件连接准备好了,ESP-idf库准备好了,如何编写应用程序呢,这时候就需要接口API了,还是上面的网址:

​https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s2/api-reference/index.html​ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_18  介绍还是比较详细的,先来看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);
}

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_ide_19  本次的介绍就到这里啦,后面有更精彩的内容,欢迎大家持续关注嵌入式实验基地!

  如果你觉得对自己有帮助的话,给个赞,点个关注,感谢前进的道路上有你的陪伴!

ESP32-ttgo T-Display之开发环境搭建及GPIO操作_#include_20

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