ESP32-S3-GEEK 教程

调试工具

数据手册

ESP32官方文档

MicroPython官方文档


产品概述

ESP32-S3-GEEK 是一款微雪 (Waveshare) 为极客设计的开发板,板载USB-A公口、1.14寸LCD屏幕、Mirco SD卡槽等外设,支持 2.4GHz WiFi 和 BLE 5,集成16MB Flash 和2MB PSRAM,提供 I2C 接口、UART 接口和 GPIO 接口,可以为你的项目提供无限可能

产品特性

  • 主芯片采用乐鑫ESP32-S3R2
  • 搭载Xtensa® 32位LX7双核处理器,主频高达240 MHz
  • 内置512 KB SRAM、384KB ROM、2MB的片上PSRAM、板载16MB Flash存储器
  • 板载 1.14 英寸 240×135 像素的 65K 彩色 IPS LCD 显示屏
  • 集成 2.4 GHz Wi-Fi  低功耗蓝牙 Bluetooth 5 (LE)
    • Wi-Fi支持基础结构型网络 (Infrastructure BSS)Station 模式、SoftAP 模式和 Station + SoftAP 模式
    • Wi-Fi支持 1T1R 模式,数据速率高达 150 Mbps
    • 蓝牙支持高功率模式 (20 dBm)
    • 蓝牙与Wi-Fi共存,共用同一个天线
  • 板载 3PIN UART 接口,可用于实现 USB 串口转接器的功能
  • 板载 3PIN GPIO 接口,可用于调试其他模块或ADC采集等功能
  • 板载 4PIN I2C 接口,可用于测试目标板
  • 配备塑料外壳以及相关连接线材
  • 提供完善的开源例程资料,方便编程学习和开发项目

尺寸图



开发环境配置

  • 以下开发系统默认为Windows

ESP-IDF

  • 推荐使用VSC插件进行开发

使用VSCode插件开发

安装VSCode

  1. 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载
  2. 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
    Esp32-vscod-02.jpg
    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode

安装Espressif IDF插件

  • 注:当前插件最新版本为V1.6.0,为体验一致,用户可以选择与我们一样的版本
  1. 打开VSCode,使用快捷键Shift+Ctrl+X,进入插件管理器
    Esp32-vscod-03.jpg
  2. 在搜索栏中,输入Espressif IDF,选择对应的插件点击 install即可
    Esp32-vscod-04.jpg
  3. 使用快捷键F1,输入
    esp-idf: configure esp-idf extension

    Esp32-vscod-05.jpg
  4. 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)Esp32-vscod-06.jpg
  5. 打开后显示该界面
    Esp32-vscod-07.jpg
  6. 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
    Esp32-vscod-08.jpg
  7. 选择想要现在的ESP-IDF版本,我们选择最新的V5.0.1(注意ESP-IDF从V4.4版本后才开始支持ESP32-S3)
    esp32-vscod-09.jpg
  8. 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址,
    Esp32-vscod-10.jpg
    • 注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径
  9. 配置完成后,点击 install 进行下载
    Esp32-vscod-11.jpg
  10. 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可
    Esp32-vscod-11.jpg
  11. 安装完成后,会进入以下界面,说明安装完成
    Esp32-vscod-13.jpg

使用官方例程

创建例程
  1. 使用快捷键F1,输入
    esp-idf:show examples projects

    Esp32-vscod-14.jpg
  2. 选择你当前的IDF版本
    Esp32-vscod-15.jpg
  3. 以Hello world例程为例
    Esp32-vscod-16.jpg
  4. ①选择对应例程
  5. ②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
  6. ③点击创建例程
  7. 选择放置例程的路径,要求无例程同名文件夹
    Esp32-vscod-17.jpg
修改COM口
  1. 此处显示使用对应的COM口,点击可以修改对应COM口
    Esp32-vscod-18.jpg
  2. 我们的CH343的COM为COM5,所以我们选择COM5,请根据自己CH343对应COM口进行选择
    Esp32-vscod-19.jpg
  3. 选择使用的工程或者例程
    Esp32-vscod-20.jpg
  4. 然后我们的COM口就修改好了
修改驱动对象
  1. 此处显示的是使用的驱动对象,点击可以修改对应驱动对象
    Esp32-vscod-21.jpg
  2. 选择使用的工程或者例程
    Esp32-vscod-20.jpg
  3. 点击后需要稍等片刻
    Esp32-vscod-22.jpg
  4. 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3
    Esp32-vscod-23.jpg
  5. 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可
    Esp32-vscod-24.jpg
其余状态栏简介

Esp32-vscod-25.jpg

  • ①SDK 配置编辑器,ESP-IDF很多功能与配置可以在其内修改
  • ②全部清理,清空所有编译文件,
  • ③编译
  • ④当前下载方式,默认为UART
  • ⑤烧录当前固件,请在编译后进行
  • ⑥打开串口监视器,用于查看串口信息
  • ⑦编译,烧录,打开串口监视器 一体按键(调试时最常用)
编译、烧录、串口监视
  1. 点击我们之前介绍的 编译,烧录,打开串口监视器按键
    Esp32-vscod-29.jpg
  2. 编译可能需要较长时间才能完成,尤其是在第一次编译时。
    Esp32-vscod-26.jpg
    • 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
  3. 因为我们使用的是CH343为USB转串口芯片,并且板载自动下载电路,无需手动操作即可自动下载
    Esp32-vscod-27.jpg
  4. 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启
    Esp32-vscod-28.jpg
折叠

Arduino

安装Arduino IDE

  1. 打开官网软件下载页面,选择对应的系统和系统位数下载
    ESP32-S3-Pico-Ar-01.jpg
  2. 可以选择直接下载,也可以选择捐赠并下载
    ESP32-S3-Pico-Ar-02.jpg
  3. 运行安装程序,全部默认安装即可

在线安装arduino-esp32

  1. 打开首选项
    ESP32-S3-Pico-Ar-03.jpg
  2. 添加对应的板管理链接,点击该按键
    ESP32-S3-Pico-Ar-04.jpg
  3. 在第一个空白处,添加下文
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

    ESP32-S3-Pico-Ar-05.jpg
  4. 保存设置
  5. 打开板管理器并搜索输入ESP32
    ESP32-S3-Pico-Ar-06.jpg
  6. 等待下载
    ESP32-S3-Pico-Ar-07.jpg
  7. arduino-esp32下载完成
    ESP32-S3-Pico-Ar-08.jpg

离线安装arduino-esp32(国内推荐)

  1. 离线包(提取码:1r4i)
    • 提取码:1r4i
  2. 将压缩包解压缩
    ESP32-S3-Pico-Ar-18.jpg
  3. 将解压文件放在对应用户的arduino器件包目录
    C:\Users\{用户名}\AppData\Local\Arduino15\packages\
    以用户名为waveshare为例
    C:\Users\waveshare\AppData\Local\Arduino15\packages\
  4. 关闭全部arduino窗口,确保arduino关闭
  5. 打开arduino,并打开板管理器,看到esp32-arduino已经安装即可
    ESP32-S3-Pico-Ar-19.jpg

使用Arduino例程

  1. 选择例程,这里我们选择获取芯片ID的例程
    ESP32-S3-Pico-Ar-09.jpg
  2. 选择我们的板子为 ESP32S3 Dev Moudule
    ESP32-S3-Pico-Ar-12.jpg
  3. 选择我们的端口号,这里我们选择CH343的COM5
    ESP32-S3-Pico-Ar-13.jpg
  4. 点击下载按键,此时会自动编译并下载
    ESP32-S3-Pico-Ar-14.jpg
  5. 下载完成
    ESP32-S3-Pico-Ar-15.jpg
  6. 打开串口监视器
    ESP32-S3-Pico-Ar-16.jpg
  7. 看到循环输出的芯片ID
    ESP32-S3-Pico-Ar-17.jpg

示例程序

WIFI

折叠

01-WIFI_AP_LCD

该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC连接其WIFI后,可以登录IP,在网页端进行控制ESP32-S3-GEEK的LCD显示图片
  • ssid是ESP32-S3-GEEK创建的AP名称(ESP32-S3-GEEK),password则是连接AP的密码(Waveshare)

ESP32-S3-GEEK 001.png

  • 使用PC连接ESP32-S3-GEEK的AP,输入密码Waveshare

ESP32-S3-GEEK wifi02.jpgESP32-S3-GEEK wifi03.jpg

  • LCD会显示HTTP服务器的IP地址,使用浏览器进行登录IP:192.168.4.1

ESP32-S3-GEEK 008.png

  • 通过服务器上的按钮对ESP32-S3-GEEK的LCD进行控制,按下不同按钮,观察LCD变化,更多LCD的显示函数具体可以看LCD程序说明

ESP32-S3-GEEK 009.png

折叠

02-WIFI_TCP_Client

该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,与PC端或者手机端连接同一个WIFI后,作为TCP Client访问PC或手机创建的TCP Server,并且与PC或手机建立TCP通讯,在LCD上显示接收内容
  • 使用NetAssist.exe打开TCP Server,Local host IP为默认,Local host Por为8080,点击“连接”,用于和ESP32-S3-GEEK(TCP Client)进行连接与TCP通讯

ESP32-S3-GEEK 003.png

  • ESP32-S3-GEEK作为STA模式与PC连接同一个WIFI网络(ESP32-S3-GEEK连接的WIFI需要有2.4GHz 频带的,如果没有2.4GHz 频带,可以使用PC打开热点,网络频带选择“任何可用频率”),记得将ssid与password修改成要连接的WIFI名称和密码

ESP32-S3-GEEK 002.png

  • 修改serverIP为刚刚使用NetAssist.exe打开的TCP ServerIP,serverPort为8080,连接成功后,TCP Server会收到ESP32-S3-GEEK发送的TCP消息"Hello world",LCD会显示“Access successful”

ESP32-S3-GEEK 005.png

  • 通过PC端TCP Server发送TCP消息给ESP32-S3-GEEK,若发送成功,ESP32-S3-GEEK作为TCP Client接收到消息会将消息内容显示在LCD上,可以观察到LCD是否显示消息

ESP32-S3-GEEK 006.png

  • 还可以使用手机打开热点,热点名称与密码为ssid和password,2.4GHz 频带,打开热点后使用TCP调试助手与ESP32-S3-GEEK进行TCP通讯

ESP32-S3-GEEK 012.pngESP32-S3-GEEK 013.pngESP32-S3-GEEK 014.png

  • 修改代码中连接的WIFI为手机的热点,serverIP为上图最后手机创建TCPserver的IP(192.168.6.123)

ESP32-S3-GEEK 015.png

  • 烧录代码复位,连接成功后,TCP Server会收到ESP32-S3-GEEK发送的TCP消息"Hello world",LCD会显示“Access successful”,可通过手机端TCP Server发送TCP消息给ESP32-S3-GEEK,若发送成功,ESP32-S3-GEEK作为TCP Client接收到消息会将消息内容显示在LCD上,可以观察到LCD是否显示消息

ESP32-S3-GEEK 016.pngESP32-S3-GEEK 020.pngESP32-S3-GEEK 019.png

折叠

03-WIFI_TCP_Server

该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,连接PC端打开的热点后,创建TCP Server,PC创建TCP Client访问ESP32-S3-GEEK,两者建立TCP通讯,GEEK在LCD上显示接收内容
  • ESP32-S3-GEEK作为STA模式连接同一个Wi-Fi网络(ESP32-S3-GEEK连接的Wi-Fi需要有2.4GHz 频带的,如果没有2.4GHz 频带,可以使用PC打开热点,网络频带选择“任何可用频率”),记得将ssid与password修改成要连接的Wi-Fi名称和密码

ESP32-S3-GEEK 021.png

  • Wi-Fi连接后,LCD上会显示TCP ServerIP,使用SSCOM打开TCP Client,用于和ESP32-S3-GEEK(TCP Server)进行连接与TCP通讯

ESP32-S3-GEEK 022.png

  • 通过TCP Client发送TCP消息给ESP32-S3-GEEK(TCP Server),注意发送时需要勾选回车加换行

ESP32-S3-GEEK 023.png

  • 若发送成功,ESP32-S3-GEEK作为TCP Server接收到消息会将消息内容显示在LCD上,可以观察到LCD是否正确显示接收到的消息

ESP32-S3-GEEK 024.png

折叠

04-WIFI_Web_Server

该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC端连接其WIFI后,打开串口调试助手,通过ESP32-S3-GEEK创建的HTTP网页端发送消息给GEEK,观察串口调试助手与LCD上的接收内容
  • ssid是ESP32-S3-GEEK创建的AP名称,password则是连接AP的密码

ESP32-S3-GEEK 026.png

  • 使用PC连接ESP32-S3-GEEK的AP

ESP32-S3-GEEK wifi02.jpgESP32-S3-GEEK wifi03.jpg

  • LCD会显示HTTP服务器的IP地址,使用浏览器进行登录IP:192.168.4.1

ESP32-S3-GEEK 008.png

  • 使用ESP32-S3-GEEK的UART接口通过USB转UART工具与PC连接,打开串口调试助手

ESP32-S3-GEEK 027.png

  • 可在HTTP Web上输入文本内容并且发送HTTP请求至ESP32-S3-GEEK,可在串口调试助手与LCD上显示接收内容

ESP32-S3-GEEK 028.png
ESP32-S3-GEEK 029.png

BLE

折叠

01-BLE_LCD

该例程可使用ESP32-S3-GEEK打开蓝牙BLE,使用手机打开蓝牙调试助手,连接ESP32-S3-GEEK,与手机进行蓝牙BLE通讯,发送与接收的消息在LCD上显示
  • BLEDevice::init("Waveshare_ESP32S3_GEEK")中Waveshare_ESP32S3_GEEK为蓝牙名称

ESP32-S3-GEEK 030.png

  • 使用手机端打开蓝牙调试助手扫描连接设备

ESP32-S3-GEEK wifi36.jpg
ESP32-S3-GEEK 031.pngESP32-S3-GEEK wifi27.jpg

  • 使用手机蓝牙调试助手发送蓝牙消息至ESP32-S3-GEEK,ESP32-S3-GEEK接收到消息会把消息显示在LCD上

ESP32-S3-GEEK wifi36.jpg
ESP32-S3-GEEK 032.pngESP32-S3-GEEK wifi29.jpg
ESP32-S3-GEEK 033.pngESP32-S3-GEEK wifi30.jpg

  • 手机端的蓝牙调试助手打开接收设置

ESP32-S3-GEEK wifi36.jpg
ESP32-S3-GEEK 034.pngESP32-S3-GEEK wifi38.jpg
ESP32-S3-GEEK 035.pngESP32-S3-GEEK wifi34.jpg

  • ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,发送串口消息转为蓝牙消息至手机,注意发送时要勾选上回车加换行,发送的消息内容会显示在LCD上,在手机端观察是否接收到蓝牙消息

ESP32-S3-GEEK 037.png
ESP32-S3-GEEK 036.pngESP32-S3-GEEK wifi35.jpg

折叠

02-BLE_uart

该例程可使用ESP32-S3-GEEK打开蓝牙BLE,使用手机打开蓝牙调试助手,连接ESP32-S3-GEEK,与手机进行蓝牙BLE通讯,发送与接收的消息在串口上显示
操作与BLE_LCD相同,但是没有开启LCD,使用UART显示消息内容,较大程度将功耗降低
  • BLEDevice::init("Waveshare_ESP32S3_GEEK")中Waveshare_ESP32S3_GEEK为蓝牙名称
  • 使用手机端打开蓝牙调试助手扫描连接设备
  • 使用手机蓝牙调试助手发送蓝牙消息至ESP32-S3-GEEK,ESP32-S3-GEEK接收到消息会把消息显示在串口调试助手上

ESP32-S3-GEEK wifi36.jpg
ESP32-S3-GEEK 032.pngESP32-S3-GEEK wifi29.jpg
ESP32-S3-GEEK 033.pngESP32-S3-GEEK wifi30.jpg
ESP32-S3-GEEK 038.png

  • 手机端的蓝牙调试助手打开接收设置

ESP32-S3-GEEK wifi36.jpg
ESP32-S3-GEEK 034.pngESP32-S3-GEEK wifi38.jpg
ESP32-S3-GEEK 035.pngESP32-S3-GEEK wifi34.jpg

  • ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,发送串口消息转为蓝牙消息至手机,注意发送时要加上回车Enter作为结束符,发送的消息内容会显示在LCD上,在手机端观察是否接收到蓝牙消息

ESP32-S3-GEEK 037.png
ESP32-S3-GEEK 036.pngESP32-S3-GEEK wifi35.jpg

折叠

03-BLE_Keyboard

该例程可将ESP32-S3-GEEK作为蓝牙键盘使用,使用PC蓝牙连接ESP32-S3-GEEK,可以进行一系列键盘单键或组合操作
  • 使用BLE_Keyboard之前需要先将libraries文件夹中ESP32-BLE-Keyboard的Arduino库文件夹先加入到Arduino IDE的安装目录下的libraries中

ESP32-S3-GEEK 041.png
ESP32-S3-GEEK 042.png
ESP32-S3-GEEK 043.png
ESP32-S3-GEEK 044.png

  • 如果之前已经安装好了ESP32-BLE-Keyboard的Arduino库,注意需要在BleKeyboard.c文件进行以下修改:
BLESecurity *pSecurity = new BLESecurity();
pSecurity->setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND);

修改为:
BLESecurity *pSecurity = new BLESecurity();
pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND);
  • ESP32-S3-GEEK为蓝牙键盘的名称

ESP32-S3-GEEK 045.png

  • 使用PC打开蓝牙扫描连接设备

ESP32-S3-GEEK 039.png
ESP32-S3-GEEK 040.png
ESP32-S3-GEEK 048.png

  • 连接成功后会每隔5秒会进行一系列键盘操作(输出“Waveshare”、Ctrl+Alt+Delete)

ESP32-S3-GEEK 049.png

  • 修改为你的开屏密码,则可进行自动锁屏与开屏操作

ESP32-S3-GEEK 046.png

  • 可在libraries文件夹中的BleKeyboard.h文件中查看各个单键的值
const uint8_t KEY_LEFT_CTRL = 0x80;
const uint8_t KEY_LEFT_SHIFT = 0x81;
const uint8_t KEY_LEFT_ALT = 0x82;
const uint8_t KEY_LEFT_GUI = 0x83;
const uint8_t KEY_RIGHT_CTRL = 0x84;
const uint8_t KEY_RIGHT_SHIFT = 0x85;
const uint8_t KEY_RIGHT_ALT = 0x86;
const uint8_t KEY_RIGHT_GUI = 0x87;

const uint8_t KEY_UP_ARROW = 0xDA;
const uint8_t KEY_DOWN_ARROW = 0xD9;
const uint8_t KEY_LEFT_ARROW = 0xD8;
const uint8_t KEY_RIGHT_ARROW = 0xD7;
const uint8_t KEY_BACKSPACE = 0xB2;
const uint8_t KEY_TAB = 0xB3;
const uint8_t KEY_RETURN = 0xB0;
const uint8_t KEY_ESC = 0xB1;
const uint8_t KEY_INSERT = 0xD1;
const uint8_t KEY_PRTSC = 0xCE;
const uint8_t KEY_DELETE = 0xD4;
const uint8_t KEY_PAGE_UP = 0xD3;
const uint8_t KEY_PAGE_DOWN = 0xD6;
const uint8_t KEY_HOME = 0xD2;
const uint8_t KEY_END = 0xD5;
const uint8_t KEY_CAPS_LOCK = 0xC1;
const uint8_t KEY_F1 = 0xC2;
const uint8_t KEY_F2 = 0xC3;
const uint8_t KEY_F3 = 0xC4;
const uint8_t KEY_F4 = 0xC5;
const uint8_t KEY_F5 = 0xC6;
const uint8_t KEY_F6 = 0xC7;
const uint8_t KEY_F7 = 0xC8;
const uint8_t KEY_F8 = 0xC9;
const uint8_t KEY_F9 = 0xCA;
const uint8_t KEY_F10 = 0xCB;
const uint8_t KEY_F11 = 0xCC;
const uint8_t KEY_F12 = 0xCD;
const uint8_t KEY_F13 = 0xF0;
const uint8_t KEY_F14 = 0xF1;
const uint8_t KEY_F15 = 0xF2;
const uint8_t KEY_F16 = 0xF3;
const uint8_t KEY_F17 = 0xF4;
const uint8_t KEY_F18 = 0xF5;
const uint8_t KEY_F19 = 0xF6;
const uint8_t KEY_F20 = 0xF7;
const uint8_t KEY_F21 = 0xF8;
const uint8_t KEY_F22 = 0xF9;
const uint8_t KEY_F23 = 0xFA;
const uint8_t KEY_F24 = 0xFB;

const uint8_t KEY_NUM_0 = 0xEA;
const uint8_t KEY_NUM_1 = 0xE1;
const uint8_t KEY_NUM_2 = 0xE2;
const uint8_t KEY_NUM_3 = 0xE3;
const uint8_t KEY_NUM_4 = 0xE4;
const uint8_t KEY_NUM_5 = 0xE5;
const uint8_t KEY_NUM_6 = 0xE6;
const uint8_t KEY_NUM_7 = 0xE7;
const uint8_t KEY_NUM_8 = 0xE8;
const uint8_t KEY_NUM_9 = 0xE9;
const uint8_t KEY_NUM_SLASH = 0xDC;
const uint8_t KEY_NUM_ASTERISK = 0xDD;
const uint8_t KEY_NUM_MINUS = 0xDE;
const uint8_t KEY_NUM_PLUS = 0xDF;
const uint8_t KEY_NUM_ENTER = 0xE0;
const uint8_t KEY_NUM_PERIOD = 0xEB;

typedef uint8_t MediaKeyReport[2];

const MediaKeyReport KEY_MEDIA_NEXT_TRACK = {1, 0};
const MediaKeyReport KEY_MEDIA_PREVIOUS_TRACK = {2, 0};
const MediaKeyReport KEY_MEDIA_STOP = {4, 0};
const MediaKeyReport KEY_MEDIA_PLAY_PAUSE = {8, 0};
const MediaKeyReport KEY_MEDIA_MUTE = {16, 0};
const MediaKeyReport KEY_MEDIA_VOLUME_UP = {32, 0};
const MediaKeyReport KEY_MEDIA_VOLUME_DOWN = {64, 0};
const MediaKeyReport KEY_MEDIA_WWW_HOME = {128, 0};
const MediaKeyReport KEY_MEDIA_LOCAL_MACHINE_BROWSER = {0, 1}; // Opens "My Computer" on Windows
const MediaKeyReport KEY_MEDIA_CALCULATOR = {0, 2};
const MediaKeyReport KEY_MEDIA_WWW_BOOKMARKS = {0, 4};
const MediaKeyReport KEY_MEDIA_WWW_SEARCH = {0, 8};
const MediaKeyReport KEY_MEDIA_WWW_STOP = {0, 16};
const MediaKeyReport KEY_MEDIA_WWW_BACK = {0, 32};
const MediaKeyReport KEY_MEDIA_CONSUMER_CONTROL_CONFIGURATION = {0, 64}; // Media Selection
const MediaKeyReport KEY_MEDIA_EMAIL_READER = {0, 128};

MQTT

折叠

01-MQTT_sub_pub

该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,连接WIFI后,使用微雪云平台,进行MQTT通讯,订阅与发布主题,实现远距离传输信息

ESP32-S3-GEEK 050.png ESP32-S3-GEEK 056.png

  • 创建完毕后,根据ESP32SDK教程在Arduino IDE中进行相应的配置

ESP32-S3-GEEK wifi47.jpg

  • 配置完毕后,根据微雪云上新建设备的"查看地址"可以看到设备的Client ID、Pub Topic、Sub Topic,可以将它们写入例程中进行赋值,用于ESP32-S3-GEEK连接自己的云平台设备
  • ESP32-S3-GEEK作为STA模式连接同一个Wi-Fi网络(ESP32-S3-GEEK连接的Wi-Fi需要有2.4GHz 频带的,如果没有2.4GHz 频带,可以使用PC打开热点,网络频带选择“任何可用频率”),记得将ssid与password修改成要连接的Wi-Fi名称和密码

ESP32-S3-GEEK 052.png
ESP32-S3-GEEK 053.png

  • 在callback函数中可以修改识别的标识符为我们自己在云平台上创建的设备属性标识符

ESP32-S3-GEEK 057.png
ESP32-S3-GEEK 058.png

  • 安装PubSubClient库,LIBRARY MANAGER -> 搜索PubSubClient -> INSTALL

ESP32-S3-GEEK 054.png

  • 烧录代码,连接上WIFI后,观察微雪云平台上设备是否进入online状态,若没有可以尝试刷新网页与使用USB转UART连接PC通过串口调试助手查看WIFI与MQTT连接情况,并且在LCD屏上也会显示WIFI与MQTT的连接情况

ESP32-S3-GEEK 055.png
ESP32-S3-GEEK 060.png

  • ESP32-S3-GEEK连接微雪云成功之后即可通过Dashboard进行发送MQTT消息

ESP32-S3-GEEK 061.png
ESP32-S3-GEEK 062.png

  • 我们能在LCD和串口调试助手中看到我们对设备属性值(例:"key")的变化进行了不同的反馈,并且在微雪云的设备接收值中看到ESP32-S3-GEEK发送至微雪云设备的数据(接受值为自己的Client ID,后续自己可将key的返回值或者状态发送回微雪云),至此实现了MQTT的数据上行与下行、订阅主题与发布主题

ESP32-S3-GEEK 063.png
ESP32-S3-GEEK 064.png

折叠

02-MQTT_BLE_Keyboard

该例程可使用ESP32-S3-GEEK打开WIFI的STA模式与蓝牙,连接WIFI与蓝牙后,使用微雪云平台,可实现远程蓝牙锁屏与输入密码开屏,还有更多组合键等待您的开发

ESP32-S3-GEEK 050.png ESP32-S3-GEEK 056.png

  • 创建完毕后,根据ESP32SDK教程在Arduino IDE中进行相应的配置

ESP32-S3-GEEK wifi47.jpg

  • 配置完毕后,根据微雪云上新建设备的"查看地址"可以看到设备的Client ID、Pub Topic、Sub Topic,可以将它们写入例程中进行赋值,用于ESP32-S3-GEEK连接自己的云平台设备

ESP32-S3-GEEK 052.png
ESP32-S3-GEEK 065.png

  • ESP32-S3-GEEK作为STA模式连接同一个Wi-Fi网络(ESP32-S3-GEEK连接的Wi-Fi需要有2.4GHz 频带的,如果没有2.4GHz 频带,可以使用PC打开热点,网络频带选择“任何可用频率”),记得将ssid与password修改成要连接的Wi-Fi名称和密码
  • 在callback函数中可以修改识别的标识符为我们自己在云平台上创建的设备属性标识符

ESP32-S3-GEEK 057.png
ESP32-S3-GEEK 066.png

  • 烧录代码,连接上WIFI后,打开PC蓝牙进行连接ESP32-S3-GEEK

ESP32-S3-GEEK 039.png
ESP32-S3-GEEK 040.png
ESP32-S3-GEEK 048.png

  • 观察微雪云平台上设备是否进入online状态,若没有可以尝试刷新网页与使用USB转UART连接PC通过串口调试助手查看WIFI与MQTT连接情况,并且在LCD上也会显示WIFI与MQTT连接情况

ESP32-S3-GEEK 055.png
ESP32-S3-GEEK 070.png

  • ESP32-S3-GEEK连接微雪云成功之后,可通过手机端登录微雪云Dashboard进行远程控制PC进行锁屏与输入密码开屏

Waveshare cloud02.gif Waveshare cloud05.gif

  • 我们能在LCD和串口调试助手中看到我们对设备属性值(例:"key")的变化进行了不同的反馈,后续还可以在callback函数中将按键修改成Ctrl+C、Ctrl+V等组合键,自己DIY属于你的远程控制蓝牙键盘

ESP32-S3-GEEK 071.png

  • 还可通过键盘测试的网站来测试ESP32-S3-GEEK蓝牙控制按下了哪些按键

ESP32-S3-GEEK wifi68.jpg

SD

折叠

01-SD_Test

该例程可使用ESP32-S3-GEEK的SD卡槽,将SD卡插入卡槽,打开串口调试助手,可以看到ESP32-S3-GEEK对SD卡的文件进行增删改查

ESP32-S3-GEEK 072.png

折叠

02-SD_LCD

该例程可使用ESP32-S3-GEEK的SD卡槽读取SD卡中的图片,将照片图片存入SD卡后,把SD卡插入卡槽,ESP32-S3-GEEK可将SD卡中的照片读取并且显示在LCD上,或者刷照片形成动态图
  • 将libraries中TFT_eSPI文件夹复制到Arduino库的安装目录下

ESP32-S3-GEEK 041.png
ESP32-S3-GEEK 042.png
ESP32-S3-GEEK 073.png

  • 安装JPEGDecoder库,LIBRARY MANAGER -> 搜索JPEGDecoder-> INSTALL

ESP32-S3-GEEK 075.png

  • 可将pic中照片存入SD卡中,或者存入自己的照片,将图片尺寸修改成240×135,显示效果最佳

ESP32-S3-GEEK 074.png

  • 这部分注释去除,可播放Waveshare开机动画

ESP32-S3-GEEK 076.png
Waveshare cloud06.gif

LCD

折叠

01-LCD_Button

该例程可使用ESP32-S3-GEEK的boot按键实现短按点亮LCD并切换下一张图片,长按熄灭LCD
  • 安装OneButton库,LIBRARY MANAGER -> 搜索OneButton-> INSTALL

ESP32-S3-GEEK 077.png

折叠

02-LCD_Time

该例程可使用ESP32-S3-GEEK连接WIFI获取当前时间并且把时间日期显示在LCD与串口调试助手上
  • 将ssid和password修改成我们要连接的WIFI名称与密码(ESP32-S3-GEEK连接的Wi-Fi需要有2.4GHz 频带的,如果没有2.4GHz 频带,可以使用PC打开热点,网络频带选择“任何可用频率”),utcOffsetInSeconds为我们需要获取时间的时区,例如:北京,东八区,则为8*60*60=28800

ESP32-S3-GEEK 078.png

  • 烧录代码后,可以看到LCD显示实时时间与日期,ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,可以看到获取的时间和日期打印在串口调试助手上

ESP32-S3-GEEK 079.png

Button

01-OneButton

该例程可使用ESP32-S3-GEEK的boot按键变成一个多功能按键,可进行单击、双击或者长按以执行不同的操作
  • 安装OneButton库,LIBRARY MANAGER -> 搜索OneButton-> INSTALL

ESP32-S3-GEEK 077.png

一旦检测到单击,就会触发:void Click(void *oneButton)
一旦检测到双击,就会触发:void DoubleClick(void *oneButton)
一旦检测到长按,就会触发:void LongPressStart(void *oneButton)

ESP32-S3-GEEK 080.png

UART

01-UART0

该例程可使用ESP32-S3-GEEK打开串口UART0,打开串口调试助手,可以进行串口通信

IIC

01-IIC_BME68X_Sensor

该例程可使用ESP32-S3-GEEK的IIC硬件接口驱动IIC模块

ADC

01-ADC_Read

该例程可使用ESP32-S3-GEEK的GPIO接口,进行ADC采样,读取3.3V范围内的电压,使用时注意共地与不可超出测量范围

Wireless_USB_flash_drive

注意:在使用ESP-IDF例程前,请先检查ESP-IDF环境与下载设置是否正确配置,具体操作可查看ESP-IDF环境配置

01-usb_msc_wireless_disk

该例程可将ESP32-S3-GEEK用作具有无线访问功能的 USB 磁盘,配合SD卡存储可变成一个大容量的无线存储器,同时还可以连接ESP32-S3-GEEK的热点,进行HTTP 文件服务器的上传和下载,极大程度的方便了用户的使用
  • 烧录代码前,请先插入SD卡进SD卡槽中,检查烧录芯片是否为esp32s3,COM口是否对应,烧录方式选择UART

ESP32-S3-GEEK 084.png

  • 烧录成功后,重新插拔ESP32-S3-GEEK,发现识别出一个新的U盘设备

ESP32-S3-GEEK 082.png

  • 打开U盘,可以浏览SD卡中的文件,并且可将进行增删改查

ESP32-S3-GEEK 083.png

  • 打开电脑WIFI,连接ESP32-S3-GEEK的AP,输入密码Waveshare

ESP32-S3-GEEK wifi02.jpgESP32-S3-GEEK wifi03.jpg

  • 连接成功后,打开浏览器,登录IP:192.168.4.1

ESP32-S3-GEEK 008.png

  • 登录成功后,即可进行无线上传和下载文件

ESP32-S3-GEEK 085.png