ESP32-S3-GEEK V2
产品介绍
| ||||||||||||||||||||||
| ||||||||||||||||||||||
产品简介
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 接口,可用于测试目标板
- 配备塑料外壳以及相关连接线材
- 提供完善的开源例程资料,方便编程学习和开发项目
产品尺寸
使用说明
环境说明
Arduino开发
Arduino 开发环境是一个为 Arduino 硬件平台量身打造的集成开发环境。它具备直观的图形界面,即使是编程新手也能轻松上手,其使用的编程语言类似 C/C++ 但语法更为简化。Arduino 开发板有多种型号,可满足不同项目需求,且能与各种传感器、执行器和扩展模块便捷连接。同时,Arduino 拥有庞大的全球用户社区,提供了海量的开源代码、项目示例和教程,还有丰富的库资源,封装了复杂功能,让开发者能快速实现各种功能,并且具有跨平台性,可在 Windows、macOS 和 Linux 等多个操作系统上运行。
MicroPython开发
MicroPython 是在微控制器上运行的 Python 实现。它充分发挥了 Python 简洁易读的语法优势,开发效率高,用少量代码就能实现复杂功能,如在 ESP8266 和 ESP32 等芯片上可轻松实现物联网应用。通常使用文本编辑器配合特定插件进行开发,插件提供代码高亮、自动补全、远程调试等功能。MicroPython 为学生和初学者提供了很好的入门途径,让他们在熟悉的语言环境中学习嵌入式开发。
ESP-IDF开发
ESP-IDF 是乐鑫科技为 ESP32 和 ESP8266 等系列芯片推出的专业开发框架。它功能强大,支持多种通信协议,可实现设备间无线通信,还提供低功耗模式和实时操作系统支持等。使用 C 语言进行开发,开发者能充分发挥 C 语言的高效性和灵活性,直接访问底层硬件资源进行精细控制和优化。ESP-IDF 工具链完整,包括编译器、调试器、烧录工具等,可在命令行下或使用集成开发环境(如 Visual Studio Code 配合 Espressif IDF 插件)进行开发,插件提供代码导航、项目管理、调试等功能。乐鑫科技还提供了详细的文档和教程,社区中也有很多开发者分享经验和项目示例。
准备事项
- Windows 10 以上电脑
- ESP32-S3-GEEK开发板及其配件
- USB 读卡器以及 SD 卡
注意事项
尊敬的用户: 在您开始操作之前,我们建议您先浏览目录,以便快速了解文档结构。同时,为了确保您能够顺利进行操作,我们建议您仔细阅读FAQ(常见问题解答),以便对可能遇到的问题有所准备。 为了方便您的使用,文档中所需的所有资料均已以超链接形式提供,您可以直接点击下载。此外,所有资料的汇总链接也已放置在文档末尾,供您参考。
Arduino开发
环境搭建
本节涵盖 Arduino 环境搭建步骤,包括下载安装 Arduino、安装 ESP32 开发板及库,还提供更多学习链接,为用户深入学习和使用 Arduino 提供了全面的指导。
下载和安装Arduino
- 打开官网软件下载页面,选择对应的系统和系统位数下载
- 可以选择直接下载,也可以选择捐赠并下载
- 运行安装程序,全部默认安装即可
安装ESP32开发板
本节详细介绍了 ESP32 开发板的两种安装方式:在线安装和离线安装。用户可根据自身的网络环境、安全需求和开发场景来选择合适的安装方法。
安装说明
- 离线安装适用情况
- 网络不稳定,避免因网络问题导致安装失败。
- 安全要求高的环境,降低外部网络带来的风险。
- 大规模部署时可节省时间和网络资源。
- 在线安装适用情况:
- 新手快速开始,操作便捷且安装迅速。
- 获取最新版本,利用新功能提高开发效率和稳定性。
- 方便更新,无需手动下载更新包。
安装步骤
离线安装
- 离线包(提取码:1r4i)
- 提取码:1r4i
- 将压缩包解压缩
- 将解压文件放在对应用户的arduino器件包目录
C:\Users\{用户名}\AppData\Local\Arduino15\packages\
以用户名为waveshare为例C:\Users\waveshare\AppData\Local\Arduino15\packages\
- 关闭全部arduino窗口,确保arduino关闭
- 打开arduino,并打开板管理器,看到esp32-arduino已经安装即可
在线安装
- 打开首选项
- 添加对应的板管理链接,点击该按键
- 在第一个空白处,添加下文
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- 保存设置
- 打开板管理器并搜索输入ESP32
- 等待下载
- Arduino-esp32下载完成
安装库
本节对示例程序中所用到的库文件进行了简要说明,并提供了库安装的详细步骤。
库文件说明
- ESP32-BLE-Keyboard库
- ESP32-BLE-Keyboard 的 Arduino 库是一个极具实用性的工具。它赋予了 ESP32 模拟蓝牙键盘的强大能力,使得 ESP32 能够与众多支持蓝牙的设备进行交互。这个库的功能十分丰富,开发者可以通过简单的函数调用,轻松地模拟按下单个按键、释放按键的操作,还能发送特定的按键组合以及整段文本。比如,可以方便地让 ESP32 模拟按下 “Ctrl+C” 这样的组合键来实现复制功能,或者发送一段预先设定好的文本消息,极大地提高了输入的便利性。此外,该库还支持对媒体键的操作,像播放 / 暂停、音量调节等,为用户在控制多媒体设备时提供了更多的选择。它具有广泛的兼容性,能够与包括 Android、Windows、#*Linux、macOS X 和 iOS 等多种操作系统良好配合,为不同设备上的应用开发带来了极大的灵活性和通用性。
- 该库为开发者提供强大支持,可用于创建快捷键设备、远程控制应用等,充分发挥 ESP32 潜力,助力打造创新实用项目。
- PubSubClient库
- PubSubClient 库是为 Arduino 和 ESP8266/ESP32 等平台打造的重要工具。它以轻量级著称,在资源受限的微控制器环境中也能高效运行。其简洁的 API 设计让开发者可以快速上手,轻松实现 MQTT 通信功能。无论是连接 MQTT 代理服务器,还是进行主题的订阅与发布,都变得极为便捷。
- 在实际应用中,PubSubClient 库发挥着巨大作用。在物联网项目里,它助力设备之间实现高效的通信和数据交换;智能家居系统中,它使得不同设备能够联动并接受远程控制;远程监控系统里,它负责将监控数据上传并接收控制命令。凭借其高可靠性和广泛的适用性,成为众多开发者在 MQTT 通信领域的首选库。
- JPEGDecoder库
- JPEGDecoder 库是一个用于 Arduino 和 ESP8266/ESP32 等平台的实用库。它能够高效地解码 JPEG 图像,将存储在数组、SD 卡文件或 SPIFFS 文件中的 JPEG 图像数据解码为适合显示的格式。该库具有内存占用低、易于使用等特点,并且支持多种显示屏库,广泛应用于嵌入式项目、物联网设备以及电子制作项目中,为这些场景带来了丰富的图像显示功能。
- 在实际应用中,JPEGDecoder 库发挥着重要作用。它可以帮助开发者在资源受限的微控制器环境中实现图像的解码和显示,例如在智能家居系统中,用于显示摄像头拍摄的图像;在工业自动化领域,用于显示设备的状态图像等。此外,该库还支持不同的图像压缩比率和分辨率,可以根据实际需求进行调整和优化。
- OneButton库
- OneButton 库是为 Arduino 设计的实用库,可处理单个按钮输入,能检测单击、双击、长按等事件,有 OneButtonTiny 类适应小处理器,采用状态机设计,通过实例化和 tick () 函数跟踪按钮状态,可附加不同事件回调。
- 该库优势明显,支持单按钮多事件,减少硬件需求,兼容性好,API 简单易用,可自定义事件间隔时间。应用广泛,如用户界面、物联网设备和教育实验等场景。
- BME68x库
库安装步骤
- ESP32-BLE-Keyboard库
BLESecurity *pSecurity = new BLESecurity(); pSecurity->setAuthenticationMode(ESP_LE_AUTH_REQ_SC_MITM_BOND); 修改为: BLESecurity *pSecurity = new BLESecurity(); pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND);
- PubSubClient库
- JPEGDecoder库
- OneButton库
- BME68x库
Arduino 更多学习链接
Demo功能测试
本节详述了 Arduino 例程和 Demo 的功能测试步骤,对各示例程序先进行功能阐释,强调测试前了解功能特性的重要性,同时提供了测试结果。
Arduino 例程
- 选择例程,以获取芯片 ID 的例程为例进行说明
- 选择 ESP32S3 Dev Module 作为我们的开发板
- 选择端口号时,此处选定 ESP32-S3 USB 口对应的 COM12 端口
需注意,每个人的端口号各不相同,应选择与自己设备对应的正确端口号 - 点击下载按键,此时系统会自动进行编译并下载操作
若下载失败,请按住 boot 键,对设备重新上电后松开 boot 键,随后再次进行下载 - 下载完成后打开串口监视器,通过串口监视器能够看到循环输出的芯片 ID
Button
01-OneButton
该例程可使用ESP32-S3-GEEK的boot按键变成一个多功能按键,可进行单击、双击或者长按以执行不同的操作。
- 在所下载的示例程序中,找到要烧录的文件,双击运行
- 配置参数,开发板为ESP32S3 Dev Moudule,端口号各有不同,若只有一个COM口正在使用,直接选择就可以,若有多个COM口,请在设备管理器中确认我们要使用的COM口。
- 确认开发板和COM口是否正确,正确点击下载,开始烧录程序
- 烧录完成
- 对按键进行单击、双击或者长按查看LCD显示即可
- 可在以下的代码中修改不同操作的处理函数,更多操作与具体说明可查看:https://github.com/mathertel/OneButton
一旦检测到单击,就会触发:void Click(void *oneButton) 一旦检测到双击,就会触发:void DoubleClick(void *oneButton) 一旦检测到长按,就会触发:void LongPressStart(void *oneButton)
ADC
01-ADC_Read
该例程可使用ESP32-S3-GEEK的GPIO接口,进行ADC采样,读取3.3V范围内的电压,使用时注意共地与不可超出测量范围。
IIC
01-IIC_BME68X_Sensor
该例程可使用ESP32-S3-GEEK的IIC硬件接口驱动IIC模块,例程使用BME680传感器进行演示,通过串口输出打印数据。
- 将BME680环境传感器与ESP32-S3-GEEK开发板进行硬件连接
- 烧录程序
- 通过串口监视器查看打印的数据
UART
01-UART0
该例程可使用ESP32-S3-GEEK打开串口UART0,打开串口调试助手,可以进行串口通信。
LCD
01-LCD_Button
该例程可使用ESP32-S3-GEEK的boot按键实现短按点亮LCD并切换下一张图片,长按熄灭LCD。
02-LCD_Time
该例程可使用ESP32-S3-GEEK连接WIFI获取当前时间并且把时间日期显示在LCD与串口调试助手上。
- 使用PC打开热点,网络频带选择“任何可用频率”,将ssid与password修改成要连接的WIFI名称和密码。utcOffsetInSeconds为我们需要获取时间的时区,例如:北京,东八区,则为8*60*60=28800
在此说明:ESP32-S3-GEEK作为STA模式与PC连接同一个WIFI网络时,ESP32-S3-GEEK连接的WIFI需要有2.4GHz 频带的,如果没有2.4GHz 频带,那网络频带就选择“任何可用频率”,这边我们直接选择“任何可用频率” - 烧录代码后,可以看到LCD显示实时时间与日期,ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,选择正确的COM口,打开串口,可以看到获取的时间和日期打印在串口调试助手上
- 程序异常分析
SD
01-SD_Test
该例程可使用ESP32-S3-GEEK的SD卡槽,将SD卡插入卡槽,打开串口调试助手,可以看到ESP32-S3-GEEK对SD卡的文件进行增删改查。
02-SD_LCD
该例程可使用ESP32-S3-GEEK的SD卡槽读取SD卡中的图片,将照片图片存入SD卡后,把SD卡插入卡槽,ESP32-S3-GEEK可将SD卡中的照片读取并且显示在LCD上,或者刷照片形成动态图。
- 可将pic中照片用读卡器存入SD卡中,或者存入自己的照片,将图片尺寸修改成240×135,显示效果最佳
- 烧录程序,可在串口监视器查看循环打印的图片信息,此时LCD屏幕循环显示SD卡中的图片
- 这部分注释去除,可播放Waveshare开机动画
BLE
01-BLE_LCD
该例程可使用ESP32-S3-GEEK打开蓝牙BLE,使用手机打开蓝牙调试助手,连接ESP32-S3-GEEK,与手机进行蓝牙BLE通讯,发送与接收的消息在LCD上显示。
- 烧录程序BLE_LCD.ino
- BLEDevice::init("Waveshare_ESP32S3_GEEK")中Waveshare_ESP32S3_GEEK为蓝牙名称
- 使用手机端打开蓝牙调试助手扫描连接设备
- 使用手机蓝牙调试助手发送蓝牙消息至ESP32-S3-GEEK,ESP32-S3-GEEK接收到消息会把消息显示在LCD上
- 手机端的蓝牙调试助手打开接收设置,ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,发送串口消息转为蓝牙消息至手机,注意发送时要勾选上回车加换行,发送的消息内容会显示在LCD上,在手机端观察是否接收到蓝牙消息
02-BLE_UART
该例程可使用ESP32-S3-GEEK打开蓝牙BLE,使用手机打开蓝牙调试助手,连接ESP32-S3-GEEK,与手机进行蓝牙BLE通讯,发送与接收的消息在串口上显示。操作与BLE_LCD相同,但是没有开启LCD,使用UART显示消息内容,较大程度将功耗降低。
- 烧录程序BLE_UART.ino
- BLEDevice::init("Waveshare_ESP32S3_GEEK")中Waveshare_ESP32S3_GEEK为蓝牙名称
- 使用手机端打开蓝牙调试助手扫描连接设备,使用手机蓝牙调试助手发送蓝牙消息至ESP32-S3-GEEK,ESP32-S3-GEEK接收到消息会把消息显示在串口调试助手上
- 手机端的蓝牙调试助手打开接收设置
- ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,发送串口消息转为蓝牙消息至手机,注意发送时要加上回车Enter作为结束符,发送的消息内容会显示在LCD上,在手机端观察是否接收到蓝牙消息
03-BLE_Keyboard
该例程可将ESP32-S3-GEEK作为蓝牙键盘使用,使用PC蓝牙连接ESP32-S3-GEEK,可以进行一系列键盘单键或组合操作,此示例程序会使电脑反复锁屏解锁,按下boot键重新上电便可退出程序。
- 烧录程序BLE_Keyboard.ino
- ESP32-S3-GEEK为蓝牙键盘的名称
- 使用PC打开蓝牙扫描连接设备
- 连接成功后会每隔5秒会进行一系列键盘操作(输出“Waveshare”、Ctrl+Alt+Delete)
- 修改为你的开屏密码,则可进行自动锁屏与开屏操作,按下boot键重新上电便可退出程序
- 可在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};
WIFI
01-WIFI_AP_LCD
该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC连接其WIFI后,可以登录IP,在网页端进行控制ESP32-S3-GEEK的LCD显示图片。
- 烧录程序WIFI_AP_LCD.ino
- 程序异常分析
- 解决办法:①烧录时可长按Boot按键插入USB后再松开按键,ESP32-S3-GEEK进去Download mode才开始烧录, 烧录完重新插拔USB则可以进入SPI_FAST_FLASH_BOOT mode,运行程序。重新上电后要再次确认板子和COM口是否正确。②可尝试关闭PC的蓝牙开关,直接烧录运行(说明蓝牙驱动与ESP32-S3-GEEK的COM驱动有冲突导致)
- ssid是ESP32-S3-GEEK创建的AP名称(ESP32-S3-GEEK),password则是连接AP的密码(Waveshare)
- 使用PC连接ESP32-S3-GEEK的AP,输入密码Waveshare
- LCD会显示HTTP服务器的IP地址,使用浏览器进行登录IP:192.168.4.1
- 通过服务器上的按钮对ESP32-S3-GEEK的LCD进行控制,按下不同按钮,观察LCD变化,更多LCD的显示函数具体可以看LCD程序说明
02-WIFI_TCP_Client
- 该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,与PC端或者手机端连接同一个WIFI后,作为TCP Client访问PC或手机创建的TCP Server,并且与PC或手机建立TCP通讯,在LCD上显示接收内容
- 在所下载的示例程序中,找到WIFI_TCP_Client.ino文件,双击打开
- 下载运行NetAssist.exe
- 修改示例程序中的"IPAddress serverIP"中的值为NetAssist中"本地IP地址"的值。不同用户NetAssist的"本地IP地址"是不同的,所以修改程序中的"serverIP"与自己的本地IP地址相同。
- 使用PC打开热点,网络频带选择“任何可用频率”,将ssid与password修改成要连接的WIFI名称和密码。
- 配置参数,开发板为ESP32S3 Dev Moudule,端口号各有不同,若只有一个COM口正在使用,直接选择就可以,若有多个COM口,请在设备管理器中确认我们要使用的COM口。
- 确认开发板和COM口是否正确,正确点击下载,开始烧录程序。
- 烧录完成
- 此时LCD屏幕显示尝试连接,片刻之后显示已连接。
- 修改NetAssist参数,协议类型为TCP Server,本地IP地址默认,无需修改,本地端口号为8080,点击“连接”,用于和ESP32-S3-GEEK(TCP Client)进行连接与TCP通讯
- 连接成功后,TCP Server会收到ESP32-S3-GEEK发送的TCP消息"Hello world",LCD会显示“Access successful”
- 通过PC端TCP Server发送TCP消息给ESP32-S3-GEEK,若发送成功,ESP32-S3-GEEK作为TCP Client接收到消息会将消息内容显示在LCD上,可以观察到LCD是否显示消息
- 还可以使用手机打开热点,热点名称与密码为ssid和password,2.4GHz 频带
- 打开热点后使用TCP调试助手与ESP32-S3-GEEK进行TCP通讯
- 修改代码中连接的WIFI为手机的热点,serverIP为上图最后手机创建TCPserver的IP(192.168.6.123)
- ①检查开发板和COM口是否正确②检查示例程序中的热点名称密码是否与手机热点名称密码保持一致③检查示例程序中"IPAddress serverIP"是否与调试助手中的"IP address"保持一致④检查无误,确认烧录
- 烧录代码复位,连接成功后,TCP Server会收到ESP32-S3-GEEK发送的TCP消息"Hello world",LCD会显示“Access successful”,可通过手机端TCP Server发送TCP消息给ESP32-S3-GEEK,若发送成功,ESP32-S3-GEEK作为TCP Client接收到消息会将消息内容显示在LCD上,可以观察到LCD是否显示消息
03-WIFI_TCP_Server
该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,连接PC端打开的热点后,创建TCP Server,PC创建TCP Client访问ESP32-S3-GEEK,两者建立TCP通讯,GEEK在LCD上显示接收内容。
- 在所下载的示例程序中,找到WIFI_TCP_Client.ino文件,双击运行
- 使用PC打开热点,网络频带选择“任何可用频率”,将ssid与password修改成要连接的WIFI名称和密码。
- 配置参数,开发板为ESP32S3 Dev Moudule,端口号各有不同,若只有一个COM口正在使用,直接选择就可以,若有多个COM口,请在设备管理器中确认我们要使用的COM口。
- ①检查开发板和COM口是否正确②检查示例程序中的热点名称密码是否与手机热点名称密码保持一致③检查无误,确认烧录。
- 烧录成功,屏幕显示。
- Wi-Fi连接后,LCD上会显示TCP ServerIP,使用SSCOM打开TCP Client,用于和ESP32-S3-GEEK(TCP Server)进行连接与TCP通讯。
04-WIFI-Web_Server
该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC端连接其WIFI后,打开串口调试助手,通过ESP32-S3-GEEK创建的HTTP网页端发送消息给GEEK,观察串口调试助手与LCD上的接收内容。
- 烧录程序WIFI-Web_Server.ino
- LCD屏幕显示
- 使用PC连接ESP32-S3-GEEK的AP,ssid是ESP32-S3-GEEK创建的AP名称,password则是连接AP的密码
- 使用ESP32-S3-GEEK的UART接口通过USB转UART工具具与PC连接,具体接线如图所示
- 打开SSCOM串口调试助手,①修改端口号②开启串口
- LCD会显示HTTP服务器的IP地址,使用浏览器进行登录IP:192.168.4.1,可在HTTP Web上输入文本内容并且发送HTTP请求至ESP32-S3-GEEK,可在串口调试助手与LCD上显示接收内容
- 串口调试助手接受内容显示和LCD屏幕显示
MQTT
微雪云平台账号注册与创建设备
- 首次登录微雪云平台进行注册,按照教程进行创建新设备
- 创建完毕后,根据ESP32SDK教程在Arduino IDE中进行相应的配置
01-MQTT_sub_pub
该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,连接WIFI后,使用微雪云平台,进行MQTT通讯,订阅与发布主题,实现远距离传输信息。
- 登录微雪云账号并创建新设备后,根据微雪云上新建设备的"查看地址"可以看到设备的Client ID、Pub Topic、Sub Topic,可以将它们写入例程中进行赋值,用于ESP32-S3-GEEK连接自己的云平台设备
- 在callback函数中可以修改识别的标识符为我们自己在云平台上创建的设备属性标识符
- 烧录代码,连接上WIFI后,观察微雪云平台上设备是否进入online状态,若没有可以尝试刷新网页与使用USB转UART连接PC通过串口调试助手查看WIFI与MQTT连接情况,并且在LCD屏上也会显示WIFI与MQTT的连接情况
- ESP32-S3-GEEK连接微雪云成功之后即可通过Dashboard进行发送MQTT消息
- 我们能在LCD和串口调试助手中看到我们对设备属性值(例:"key")的变化进行了不同的反馈,并且在微雪云的设备接收值中看到ESP32-S3-GEEK发送至微雪云设备的数据(接受值为自己的Client ID,后续自己可将key的返回值或者状态发送回微雪云),至此实现了MQTT的数据上行与下行、订阅主题与发布主题
02-MQTT_BLE_Keyboard
该例程可使用ESP32-S3-GEEK打开WIFI的STA模式与蓝牙,连接WIFI与蓝牙后,使用微雪云平台,可实现远程蓝牙锁屏与输入密码开屏,还有更多组合键等待您的开发。
- 登录微雪云账号并创建新设备后,根据微雪云上新建设备的"查看地址"可以看到设备的Client ID、Sub Topic,可以将它们写入例程中进行赋值,用于ESP32-S3-GEEK连接自己的云平台设备
- 在callback函数中可以修改识别的标识符为我们自己在云平台上创建的设备属性标识符,二者需要一致
- 在烧录代码并确保ESP32-S3-GEEK已连接到PC的热点后,打开PC的蓝牙功能以配对连接设备。
- 请检查微雪云平台上的设备是否已连接在线。如果设备未在线,您可以尝试刷新网页或使用USB转UART连接到PC,并利用串口调试助手检查WIFI和MQTT的连接状态。同时,LCD屏幕也会显示WIFI和MQTT的连接状态。
- ESP32-S3-GEEK连接微雪云成功之后,可通过手机端登录微雪云Dashboard进行远程控制PC进行锁屏与输入密码开屏
- 我们能在LCD和串口调试助手中看到我们对设备属性值(例:"key")的变化进行了不同的反馈,后续还可以在callback函数中将按键修改成Ctrl+C、Ctrl+V等组合键,自己DIY属于你的远程控制蓝牙键盘
- 还可通过键盘测试的网站来测试ESP32-S3-GEEK蓝牙控制按下了哪些按键
打开键盘测试此界面,用手机端锁屏开屏,键盘测试界面可显示按下了哪些按键
MicroPython开发
环境搭建
本节围绕 MicroPython 开发环境搭建展开,主要涉及烧录固件以及安装 Thonny。对于安装 Thonny 部分,详细阐述了其安装步骤与使用说明,为开发者构建 MicroPython 开发环境提供全面且清晰的指导。
烧录固件
- 下载MicroPython固件:烧录器与固件或 micropython官网固件
- 将刚刚下载的解压包解压并进入
- 长按ESP32-S3-GEEK按键连接电脑USB后,再松开boot按键
- 进入flash_download_tool_3.9.4文件夹,打开flash_download_tool_3.9.4.exe
- 选择对应的芯片,这里选择ESP32-S3、USB
- 选择对应的COM口,我们已经为你配置好其他信息,点击Start开始下载即可
- 等待烧录完成
安装Thonny
Thonny安装步骤
- 打开Thonny官网
- 选择对应的系统和版本,这里我选择windows,鼠标要移动到windows处,才会显示对应的信息
- 其余默认安装即可
- 安装完成
Thonny使用说明
- 下载安装最新 Thonny IDE后,打开Thonny IDE -> Configure interpreter...,如下图所示
- 选择ESP32与选择对应的COM口
- 点击该按钮,可看到shell中输出语句,则说明开发板固件成功使用
- 如何找到您想要的示例程序,如果最开始没有files这一栏,我们可以在view里面找到。
Demo功能测试
本节详述了Demo 的功能测试步骤,对各示例程序先进行功能阐释,强调测试前了解功能特性的重要性,同时提供了测试结果。
获取例程
- 点击此处下载例程
- 解压例程压缩包
运行例程
- 打开thonny,并选择配置解释器
- 选择MicroPython(ESP32)为解释器
- 点击OK进行保存
- 点击Stop按键,或者快捷键 Ctrl+F2
- 此时命令行可以看到 MicroPython的版本信息与板名
- 打开文件串口
- 选择我们的例程文件,并打开一个例程,这里我们选的是lcd_example.py例程
- ①当前本机文件目录
- ②我们要打开的例程 lcd_example.py
- ③点击运行按键,或者快捷键 F5
- 稍等片刻,可以看到ESP32-S3-GEEK的LCD屏幕显示ESP32-S3-GEEK.bmp图片
LCD
该例程可使用ESP32-S3-GEEK打开LCD屏幕,显示文字信息与显示bmp图片。
- 将LCD文件夹下的所有文件上传至ESP32-S3-GEEK中
- 进入ESP32-S3-GEEK中的lcd_example.py,点击运行按键,观察LCD屏幕显示变化
- 运行另一份文件时要先点击红色stop按钮暂停程序,再双击打开另一个程序,才可正常运行。
SD
该例程可读取ESP32-S3-GEEK的SD卡槽,直接打开ESP32-S3-GEEK的sd文件夹可浏览SD卡中的文件,使用前需要先将SD卡插入卡槽中。
UART
该例程可使用ESP32-S3-GEEK打开串口UART0,打开串口调试助手,可以进行串口通信。
- 把UART文件夹下的Uart0.py上传至ESP32-S3-GEEK中,同之前上传步骤一样
- 进入ESP32-S3-GEEK中的Uart0.py文件,点击STOP按键,再点击运行按键,打开串口调试助手进行串口通信
- Thonny端打印接收数据
BLE
该例程可打开ESP32-S3-GEEK的蓝牙,使用蓝牙与手机蓝牙调试助手进行通讯。
- 把BLE文件夹下的WS_Bluetooth.py文件上传至ESP32-S3-GEEK中,同之前上传步骤一样
- ESP32-S3-GEEK为创建的蓝牙名称
- 进入ESP32-S3-GEEK中的WS_Bluetooth.py文件,点击STOP按键,再点击运行按键,成功打开蓝牙会打印蓝牙名称
- 使用手机蓝牙调试助手进行连接
- 使用手机蓝牙调试助手发送消息,ESP32收到消息并且打印出来
- 程序异常分析
- 重新插拔USB,再点击红色STOP按钮
WIFI
WIFI_AP
该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC可以连接其WIFI。
- 把WIFI文件夹下的WIFI_AP.py文件上传至ESP32-S3-GEEK中,同之前上传步骤一样
- essid是ESP32-S3-GEEK创建的AP名称(ESP32-S3-GEEK),password则是连接AP的密码(Waveshare)
- 进入ESP32-S3-GEEK中的WIFI_AP.py文件,点击STOP按键,再点击运行按键
- 打开PC的WIFI进行连接,输入密码Waveshare
- 连接成功
WIFI_STA
该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,其可以连接PC打开的热点或者其他WIFI。
- 把WIFI文件夹下的WIFI_STA.py文件上传至ESP32-S3-GEEK中,同之前上传步骤一样
- ESP32-S3-GEEK在STA模式下会连接ssid为ESP32-S3-GEEK,密码为Waveshare的WIFI
- 进入ESP32-S3-GEEK中的WIFI_STA.py文件,点击STOP按键,再点击运行按键
- PC打开ssid为ESP32-S3-GEEK,密码为Waveshare的热点,将ssid与password修改成要连接的WIFI名称和密码,上传程序至ESP32-S3-GEEK后点击运行
- 连接成功
ESP-IDF开发
环境搭建
本文介绍 ESP-IDF 开发环境搭建方法,推荐使用 Visual Studio Code(VS Code)插件进行开发。主要步骤包括下载安装 VS Code,以及安装 Espressif IDF 插件,为开发者快速构建 ESP-IDF 开发环境提供指引。
下载安装VS Code
- 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载
- 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验
第三项开启后,可以直接选择打开方式
安装Espressif IDF插件
注:当前插件最新版本为V1.6.0,为体验一致,用户可以选择与我们一样的版本
- 打开VSCode,使用快捷键Shift+Ctrl+X,进入插件管理器
- 在搜索栏中,输入Espressif IDF,选择对应的插件点击 install即可
- 使用快捷键F1,输入
esp-idf: configure esp-idf extension
- 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)
- 打开后显示该界面
- 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
- 选择想要现在的ESP-IDF版本,我们选择最新的V5.3.1(注意ESP-IDF从V4.4版本后才开始支持ESP32-S3)
- 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址
注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径 - 配置完成后,点击 install 进行下载
- 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可
- 安装完成后,会进入以下界面,说明安装完成
Demo功能测试
本节介绍 Demo 功能测试的 ESP 官方例程。可在 ESP-IDF 中使用,仅提供查找方法,如 hello_world 例程。使用要注意设备细节。“Wireless_USB_flash_drive”可将 ESP32-S3-GEEK 变无线 U 盘,方便用户。强调了解功能特性重要性并提供测试结果。
ESP官方例程
可在ESP-IDF中使用官方例程进行编程,仅提供官方例程的查找使用方法,具体开发需要用户自行学习与编程,我们以hello_world示例程序为例,官方例程的使用方法可参见例程使用方法,我们使用时需要注意查看设备COM口,芯片选择与烧录方式是否正确。
创建例程
- 使用快捷键F1,输入
esp-idf:show examples projects
- 选择你当前的IDF版本
- 以Hello world例程为例:①选择对应例程②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)③点击创建例程
- 选择放置例程的路径,要求无例程同名文件夹
状态栏简介
- ESP-IDF开发环境版本管理器,当我们的工程需要区分开发环境版本时,可以通过安装不同版本的ESP-IDF来分别管理,当工程使用特定版本时,可以通过使用它来切换
- 设备烧录COM口,选择以将编译好的程序烧录进芯片上
- set-target 芯片型号选择,选择对应的芯片型号,如:ESP32-P4-Nano需要选择 esp32p4 为目标芯片
- menuconfig,点击修改sdkconfig配置文件内容
- fullclean 清理按钮,当工程编译报错或其他操作污染编译内容时,通过点击清理全部编译内容
- Build 构建工程,当一个工程满足构建时,通过此按钮进行编译
- 当前下载方式,默认为UART
- flash烧录按钮,当一个工程Build构建通过时,选择对应开发板COM口,点击此按钮可以将编译好的固件烧录至芯片
- monitor开启烧录口监控,当一个工程Build-->flash后,可通过点击此按钮查看烧录、调试口输出的l0g,以便观察应用程序是否正常工作
- Debug调试
- Build Flash Monitor 一键按钮,用于连续执行Build-->Flash-->Monitor,常被称作小火苗
修改COM口
修改驱动对象
- 此处显示的是使用的驱动对象,点击可以修改对应驱动对象
- 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3
- 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可
- 选择下载方式,默认为UART
编译,烧录,串口监视
- 点击我们之前介绍的 编译,烧录,打开串口监视器按键
- 编译可能需要较长时间才能完成,尤其是在第一次编译时。在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
- 下载失败可按住boot按键上电后再松开按键,然后进行烧录下载
- 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启
Wireless_USB_flash_drive
该例程可将ESP32-S3-GEEK用作具有无线访问功能的 USB 磁盘,配合SD卡存储可变成一个大容量的无线存储器,同时还可以连接ESP32-S3-GEEK的热点,进行HTTP 文件服务器的上传和下载,极大程度的方便了用户的使用。
- 正确选择工程目录,打开工程,否则会影响后续程序编译烧录
- 烧录代码前,请先插入SD卡进SD卡槽中,检查烧录芯片是否为esp32s3,COM口是否对应,烧录方式选择UART
- 烧录成功后,重新插拔ESP32-S3-GEEK,发现识别出一个新的U盘设备
- 打开U盘,可以浏览SD卡中的文件,并且可将进行增删改查
- 打开电脑WIFI,连接ESP32-S3-GEEK的AP,输入密码Waveshare
- 连接成功后,打开浏览器,登录IP:192.168.4.1
- 登录成功后,即可进行无线上传和下载文件
资料
原理图
程序
软件
Arduino
Micropython
图文取模
调试工具
数据手册
- ESP32-S3数据手册(中文)
- ESP32-S3技术参考手册(中文)
- ESP32-S3-WROOM-1数据手册(中文)
- ESP32-S3数据手册(英文)
- ESP32-S3技术参考手册(英文)
- ESP32-S3-WROOM-1数据手册(英文)
ESP32官方文档
MicroPython官方文档
FAQ
①烧录时可长按Boot按键插入USB后再松开按键,ESP32-S3-GEEK进去Download mode才开始烧录,
烧录完重新插拔USB则可以进入SPI_FAST_FLASH_BOOT mode,运行程序。
②可尝试关闭PC的蓝牙开关,直接烧录运行(说明蓝牙驱动与ESP32-S3-GEEK的COM驱动有冲突导致)
请检查Pub Topic、Sub Topic是否正确填入,设备在微雪云中是否为在线状态
可以的,需要烧录无线U盘程序,SD卡映像中 SPIFS只支持32GB以下。
1.14LCD的驱动芯片为ST7789P3。
Windows系统:
①通过设备管理器查看:
按下Windows + R键打开“运行”对话框;
输入devmgmt.msc并按回车键打开设备管理器;
展开“端口(COM和LPT)”部分,这里会列出所有的COM端口及其当前状态。
②使用命令提示符查看:
打开命令提示符(CMD);
输入mode命令,这将显示所有COM端口的状态信息。
③查看硬件连接:
如果你已经连接了外部设备到COM口,通常设备会占用一个端口号,可以通过查看连接的硬件来确定使用的是哪个端口。
Linux系统:
①使用dmesg命令查看:
打开终端。
②使用ls命令查看:
输入ls /dev/ttyS*或ls /dev/ttyUSB*来列出所有的串口设备。
③使用setserial命令查看:
输入setserial -g /dev/ttyS*来查看所有串口设备的配置信息。