前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP32-ttgo T-Display之开发环境搭建及GPIO操作

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

作者头像
用户8913398
发布2021-08-16 16:10:24
1K0
发布2021-08-16 16:10:24
举报

  最近想玩玩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

更多介绍:

https://www.jmaker.com.tw/products/ttgo-t-display

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界面有新建工程,导入工程等。

  环境的搭建比较简单,无非就是可能需要时间等待,下面进行新建工程的介绍,主要关注Board、Framework就可以了

  • board有好几款可以选择,内核都是一样的,选择一款就可以; Framwork:有两种,可以选择Arduino,或者选择官方的ESP-IDF,出于对ESP-IDF比较熟悉,我选择的是ESP32-IDF,当然啦,小伙伴们如果对Arduino比较熟悉,根据自己需要选择就可以了; Location:更改项目存储地址;

  配置完,点击Finish就可以了,但是这个等待的时间太长了,让我一度崩溃,小伙伴们可以试试,不知道是不是小飞哥的网速比较渣。如果也是等了还就还不能创建成功,有另外一种办法是,不选择新建,选择导入例程,里面有不少官方例程,随便导入一个就可以了。

  测试导入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方向,也即是输入输出模式,可以配置为仅输入、仅输出、输入输出;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

代码语言:javascript
复制
      ESP_OK Success

      ESP_ERR_INVALID_ARG GPIO error

Parameters

代码语言:javascript
复制
      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

代码语言:javascript
复制
  If the pad is not configured for input (or input and output) the returned value is always 0.

Return

代码语言:javascript
复制
      0 the GPIO input level is 0

      1 the GPIO input level is 1

Parameters

代码语言:javascript
复制
      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);

  按键代码实现及测试效果,按键按下时,打印信息。

代码语言:javascript
复制
#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);
    }

  本次的介绍就到这里啦,后面有更精彩的内容,欢迎大家持续关注嵌入式实验基地!

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小飞哥玩嵌入式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完成目标
  • 硬件环境
  • 软件环境
  • 1、官方规格说明
  • 2、引脚分配
  • 3、开发环境搭建
  • 4、GPIO操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档