ESP32-S3-GEEK
| ||||||||||||||||||||||
| ||||||||||||||||||||||
产品介绍
产品简介
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 接口,可用于测试目标板
- 配备塑料外壳以及相关连接线材
- 提供完善的开源例程资料,方便编程学习和开发项目
资源简介
1、USB-A 接口 2、UART 接口子 3、GPIO 接口 4、I2C 接口 5、Micro SD 卡槽 |
6、W25Q128JVSIQ 7、ESP32-S3 8、BOOT 按键 9、天线 |
接口说明
产品尺寸
使用说明
ESP32-S3-GEEK 目前提供 Arduino IDE , ESP-IDF 和MicroPython三种开发工具和框架,提供了灵活的开发选择,你可以根据项目需求和个人习惯选择适合的开发工具。
开发工具介绍
这两种开发方式各有其优势,开发者可以根据自身需求和技能水平进行选择。Arduino 和 MicroPython适合初学者和非专业人士,因其简单易学、上手快。而对于有专业背景或对性能要求较高的开发者,ESP-IDF 是更好的选择,它提供了更高级的开发工具和更强的控制能力,适用于复杂项目的开发。
器件准备
- ESP32-S3-GEEK x1
- SD卡 x1
- BME680环境传感器 x1
- USB转UART通用串口通信模块 x1
注意事项
- 开发板使用USB下载程序,如果出现无法识别到端口,请进入boot模式(摁住boot按键后,再连接电脑,然后松开boot按键),下载程序后,按 RESET 按键运行程序
Arduino开发
本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。
环境搭建
下载和安装 Arduino IDE
- 点击访问Arduino官网,选择对应的系统和系统位数下载。Arduino IDE的版本需要≥1.8,安装的路径不能出现中文,否则编译时会出现错误。
- 运行安装程序,全部默认安装即可。
安装 ESP32 开发板
- ESP32相关主板在Arduino IDE使用,须先安装“esp32 by Espressif Systems”开发板的软件包
- 根据板安装要求进行安装,一般推荐“在线安装”, 若在线安装失败,则使用“离线安装”
- 安装教程,详见:Arduino 板管理教程
- “esp32 by Espressif Systems”开发板离线软件包,点击此处下载:esp32_package_2.0.7_arduino 离线包
板名称 | 板安装要求 | 版本号要求 |
---|---|---|
esp32 by Espressif Systems | “离线”安装/“在线”安装 | 2.0.7 |
安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件
对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。 - 库安装教程,详见:Arduino 库管理教程
- ESP32-S3-GEEK 库文件存放于示例程序中,点击此处跳转: ESP32-S3-GEEK示例程序
库名称 | 说明 | 版本 | 库安装要求 |
---|---|---|---|
ESP32-BLE-Keyboard-master | ESP32 的蓝牙键盘库 | v0.3.2 | “离线”安装 |
TFT_eSPI | TFT 显示屏驱动库 | v2.4.78 | “离线”安装 |
PubSubClient | MQTT 消息订阅发布库 | v2.8.0 | “在线”安装或“离线”安装 |
JPEGDecoder | JPEG 图像解码库 | v2.0.0 | “在线”安装或“离线”安装 |
OneButton | 单按钮事件处理库 | v2.5.0 | “在线”安装或“离线”安装 |
BME68x Sensor library | BME68x 传感器驱动库 | v1.1.40406 | “在线”安装或“离线”安装 |
ArduinoJson | 轻量 JSON 库 | v7.2.1 | “在线”安装或“离线”安装 |
运行第一个 Arduino 程序
新建工程
void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: Serial.println("Hello, World!"); delay(2000); }
- 保存代码工程,选择
File
->Save As...
;在弹出的菜单选择保存工程路径,并输入工程名,如 Hello_World,点击保存
示例程序
示例程序 | 基础例程说明 | 依赖库 |
---|---|---|
01_OneButton | 按钮交互与 LCD 显示 | OneButton |
02_ADC_Read | ADC采样 | - |
03_IIC_BME68X_Sensor | 驱动I2C模块 | BME68x Sensor library |
04_UART0 | 串口通信 | - |
05_LCD_Button | 按钮操作切换图像、控制背光 | OneButton,TFT_eSPI |
06_LCD_Time | 在 LCD 显示日期时间 | TFT_eSPI |
07_SD_Test | 对SD卡的文件进行增删改查 | - |
08_SD_LCD | 读取 SD 卡上 JPEG 图片并在屏幕显示 | TFT_eSPI,JPEGDecoder |
09_BLE_LCD | ESP32-S3 与 BLE 和 LCD 交互,可作为 BLE 服务器收发数据并在 LCD 显示 | TFT_eSPI,ESP32-BLE-Keyboard-master |
10_BLE_UART | ESP32-S3 与 BLE 交互,可作为 BLE 服务器收发数据并使用UART显示消息内容 | ESP32-BLE-Keyboard-master |
11_BLE_Keyboard | 模拟 BLE 键盘 | ESP32-BLE-Keyboard-master |
12_WIFI_AP_LCD | 与 Wi-Fi 和 LCD 交互,可作为 Wi-Fi 接入点与客户端通信并在 LCD 显示 | TFT_eSPI |
13_WIFI_TCP_Client | 与 Wi-Fi 和 LCD 交互,连接 Wi-Fi 后尝试连接服务器,收发数据并在 LCD 显示 | TFT_eSPI |
14_WIFI_TCP_Server | 与 Wi-Fi 和 LCD 交互,作为 Wi-Fi 服务器,接收客户端数据并在 LCD 显示 | TFT_eSPI |
15_WIFI_Web_Server | 与 Wi-Fi 和 LCD 交互,作为 Wi-Fi 接入点服务器,处理客户端请求 | TFT_eSPI |
16_MQTT_sub_pub | 与 Wi-Fi、MQTT 和 LCD 交互,连接 Wi-Fi 和 MQTT 服务器,收发 JSON 数据并在 LCD 显示 | ArduinoJson,PubSubClient,TFT_eSPI |
17_MQTT_BLE_Keyboard | 集成 BLE 键盘、Wi-Fi 和 MQTT,控制 LCD 显示 | ArduinoJson,PubSubClient,TFT_eSPI,ESP32-BLE-Keyboard-master |
01_OneButton
【程序说明】
- 该例程可使用ESP32-S3-GEEK的boot按键变成一个多功能按键,可进行单击、双击或者长按以执行不同的操作。适用于学习 ESP32-S3 的按钮交互与 LCD 显示,可通过按钮操作观察 LCD 变化,测试其可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- button.attachLongPressStart(LongPressStart, &button) :按钮事件绑定
button.attachLongPressStart(LongPressStart, &button)
等语句将特定的函数绑定到按钮的不同事件上,使得当按钮被长按、单击或双击时,能够自动调用相应的处理函数
- button.tick():持续监测
button.tick()
不断检查按钮的状态,判断是否有按钮事件发生。如果有事件发生,就会根据事件类型调用相应的回调函数
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 烧录代码
02_ADC_Read
【程序说明】
- 该例程使用ESP32-S3-GEEK的GPIO接口,进行ADC采样,读取3.3V范围内的电压,使用时注意共地与不可超出测量范围。适用于学习 ESP32-S3 的模拟输入,可读取特定引脚模拟值,观察变化并测试稳定性
【硬件连接】
- 将开发板接入电脑
- 将 SH1.0 3PIN 杜邦线的两端分别连接到开发板和待测电压源
- 开发板GPIO6所连引脚用于读取所测电压
- 开发板GND引脚(IIC或UART接口的GND都可以)连接到待测电压源GND引脚 ,确保与待测电压源的地端连接在一起
【代码分析】
- setup()
- 初始化背光控制引脚为低电平
- 开启串口通信,设置波特率为 115200
- 设置 ADC 分辨率为 12 位
- loop()
- 定义变量存储 ADC 的原始值和电压值
- 读取指定引脚的 ADC 原始值和电压值
- 通过串口输出 ADC 值
- 引入 100 毫秒延迟
03_IIC_BME68X_Sensor
【程序说明】
- 该例程可使用ESP32-S3-GEEK的IIC硬件接口驱动I2C模块,例程使用BME680传感器进行演示,通过串口输出打印数据。适用于学习 ESP32-S3 与 BME68X 传感器交互,可设置引脚和通信模式,读取多种数据,测试兼容性与稳定性
【代码分析】
- setup()
- 使用
analogWrite
将背光控制引脚PIN_BL
设置为 0,关闭背光。 - 使用
Wire.begin(PIN_SDA, PIN_SCL)
初始化 I2C 通信(注释中的SPI.begin()
表示也可以使用 SPI 模式,但这里未启用)。 - 初始化串口通信,设置波特率为 115200。
- 等待串口连接准备好。
- 根据配置的通信方式(这里是 I2C)初始化 BME68X 传感器。如果初始化过程中出现错误或警告,会在串口输出相应的信息。
- 设置传感器的温度、压力和湿度测量配置,并设置加热器配置。
- 在串口输出数据的标题行,包括时间戳、温度、压力、湿度、气体电阻和状态
- 使用
- loop()
- 创建一个
bme68xData
结构体对象data
来存储传感器数据。 - 设置传感器工作模式为强制模式(
BME68X_FORCED_MODE
)。 - 根据传感器的测量持续时间延迟一段时间,确保数据准备好。
- 如果成功获取到数据,使用
bme.getData(data)
将数据存储到data
结构体中,并在串口输出时间戳、温度、压力、湿度、气体电阻和状态信息
- 创建一个
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 设置开发板参数:使能
USB CDC On Boot
- 烧录代码
04_UART0
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开串口UART0,打开串口调试助手,可以进行串口通信。适用于学习 ESP32-S3 串口通信,可接收数据并输出,测试稳定性与准确性。
【代码分析】
- setup()
- 使用
analogWrite
函数将引脚DEV_BL_PIN(7)
的模拟输出设置为 0,用于关闭设备的背光 - 初始化串口通信,设置波特率为 115200
- 使用
- loop()
- 检查串口是否有数据可读。如果有数据可读,进入循环处理输入数据。
- 创建一个字符数组
buffer
用于存储输入数据,以及一个变量bufferSize
用于记录缓冲区中的数据大小。 - 在循环中,每次读取一个字符并存储到缓冲区中,同时增加缓冲区大小。
- 当缓冲区已满(达到数组大小)或者读取到换行符时,将缓冲区中的数据通过串口输出,然后延迟 10 毫秒。
- 最后,重置缓冲区大小为 0,并使用
memset
函数将缓冲区清零,为下一次输入做准备
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 烧录代码
05_LCD_Button
【程序说明】
- 该例程可使用ESP32-S3-GEEK的boot按键实现短按点亮LCD并切换下一张图片,长按熄灭LCD。适用于学习 ESP32-S3 的按钮交互和 LCD 图像显示,可通过按钮操作切换图像、控制背光,测试稳定性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- setup()
- 在这个程序中,
setup()
函数在程序启动时执行一次。它首先初始化串口通信为波特率 115200,为后续可能的调试输出做准备。接着调用Config_Init()
和LCD_Init()
对特定硬件配置和 LCD 进行初始化,确保 LCD 能正常工作。然后通过LCD_Clear(BLACK)
将 LCD 屏幕清空为黑色,为显示内容提供干净背景。设置 LCD 背光亮度为 1000 确保屏幕亮度足够。创建新图像对象并绘制初始图像gImage_pic1
。同时为按钮对象设置长按开始和点击的回调函数分别指向LongPressStart
和Click
函数,并设置按钮长按时间间隔为 1000 毫秒,为程序的交互操作做好准备
- 在这个程序中,
- Click(void *oneButton)
- 当按钮被点击时,此函数被调用。它首先设置 LCD 背光亮度为 1000,接着创建新的黑色图像对象,然后通过增加
click
变量的值并进行循环控制,根据不同的click
值切换显示不同的图像(gImage_pic1
、gImage_pic2
、gImage_pic3
),为用户提供了通过按钮点击切换 LCD 显示图像的交互功能
- 当按钮被点击时,此函数被调用。它首先设置 LCD 背光亮度为 1000,接着创建新的黑色图像对象,然后通过增加
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 烧录代码
06_LCD_Time
【程序说明】
- 该例程可使用ESP32-S3-GEEK连接WIFI获取当前时间并且把时间日期显示在LCD与串口调试助手上。适用于学习 ESP32-S3 的 Wi-Fi 连接与时间同步,可连接特定网络并同步时间,在 LCD 显示日期时间,测试稳定性与准确性
【硬件连接】
- 将开发板接入电脑
【其余准备】
【代码分析】
setup()
:- 在 LCD 上显示 “Wifi Connecting...”,向用户提示设备正在尝试连接 Wi-Fi,通过WiFi.begin(ssid, password)使用指定的网络名称和密码启动连接过程,进入循环等待连接成功,在这个过程中,每隔 1000 毫秒就在串口打印 “Connecting to WiFi...”,让用户了解连接进度。一旦连接成功,就清空 LCD 屏幕并显示 “Wifi Connected”,为后续依赖网络的操作做好准备
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 设置开发板参数:使能
USB CDC On Boot
- 烧录代码
07_SD_Test
【程序说明】
- 该例程可使用ESP32-S3-GEEK的SD卡槽,将SD卡插入卡槽,打开串口调试助手,可以看到ESP32-S3-GEEK对SD卡的文件进行增删改查。适用于学习 ESP32-S3 与 SD 卡交互,可进行多种文件操作,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
- 将SD卡装入开发板
【代码分析】
- setup()
- 首先将连接到
DEV_BL_PIN
的设备输出设为 0,初始化串口通信,启动 HSPI 总线并设置时钟分频,然后尝试初始化连接在特定引脚上的 SD 卡,若成功,确定 SD 卡类型并显示其容量大小。之后进行一系列对 SD 卡的文件系统操作,如列出目录、创建和删除目录、读写文件、重命名文件以及测试读写性能,同时输出 SD 卡总空间和已用空间
- 首先将连接到
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 设置开发板参数:使能
USB CDC On Boot
- 烧录代码
08_SD_LCD
【程序说明】
- 该例程可使用ESP32-S3-GEEK的SD卡槽读取SD卡中的图片,将照片图片存入SD卡后,把SD卡插入卡槽,ESP32-S3-GEEK可将SD卡中的照片读取并且显示在LCD上,或者刷照片形成动态图。适用于学习 ESP32-S3 与 SD 卡及 TFT 屏交互,可读取 SD 卡上 JPEG 图片并在屏幕显示,测试稳定性与可靠性
【SD卡准备】
- 可将..\ESP32-S3-GEEK-Demo\Arduino\pic路径下的照片用读卡器存入SD卡中,或者存入自己的照片,将图片尺寸修改成240×135,显示效果最佳
【硬件连接】
- 使用USB线把板子接入电脑
- 将SD卡装入开发板
【代码分析】
- setup()
- 初始化串口和 TFT 显示屏
- 配置 SD 卡 SPI 通信并尝试挂载 SD 卡
- 确定 SD 卡类型并输出容量信息
- drawSdJpeg()
- 打开图像文件,用 JPEG 解码器解码,若成功则显示图像信息并调用
jpegRender
- 打开图像文件,用 JPEG 解码器解码,若成功则显示图像信息并调用
- jpegRender()
- 处理图像在 TFT 上的显示,包括边缘情况,记录显示时间
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
- 设置开发板参数:使能
USB CDC On Boot
- 烧录代码
09_BLE_LCD
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开蓝牙BLE,使用手机打开蓝牙调试助手,连接ESP32-S3-GEEK,与手机进行蓝牙BLE通讯,发送与接收的消息在LCD上显示。适用于学习 ESP32-S3 与 BLE 和 LCD 交互,可作为 BLE 服务器收发数据并在 LCD 显示,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- setup()
- 初始化相关配置和 LCD 显示屏
- 启动串口通信,设置波特率为 115200
- 清空 LCD 为黑色背景,设置背光亮度
- 创建图像缓冲区并绘制预定义图像
- 初始化 BLE 设备并设置名称
- 创建 BLE 服务器及回调函数
- 创建 BLE 服务和发送、接收特性,并设置属性和回调函数
- 启动服务和开始广告,在串口输出提示信息等待客户端连接
- loop()
- 串口数据读取和发送:
- 若串口有数据可读,循环读取并添加到缓冲区,遇到换行符处理数据并发送到 BLE 客户端,同时在串口输出发送信息,清空缓冲区为下一次读取做准备
- 低功耗操作(可扩展部分):可在此添加低功耗操作代码
- 延迟 10 毫秒降低功耗和提高稳定性
- BLE 连接状态处理:
- 若从连接变为断开,延迟后重新开始广告
- 若从断开变为连接,可添加处理新连接的代码
- 串口数据读取和发送:
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 设置开发板参数:使能
USB CDC On Boot
- 烧录代码
【运行效果】
BLEDevice::init("Waveshare_ESP32S3_GEEK")
中 Waveshare_ESP32S3_GEEK 为蓝牙名称
- 使用手机端打开手机蓝牙调试助手扫描连接设备
- 使用手机蓝牙调试助手发送蓝牙消息至ESP32-S3-GEEK,ESP32-S3-GEEK接收到消息会把消息显示在LCD上,串口调试助手打印消息内容
- 手机端的蓝牙调试助手打开接收设置,ESP32-S3-GEEK使用USB转UART连接PC,打开串口调试助手,发送串口消息转为蓝牙消息至手机,注意发送时要勾选上回车加换行,发送的消息内容会显示在LCD上,在手机端观察是否接收到蓝牙消息
10_BLE_UART
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开蓝牙BLE,使用手机打开蓝牙调试助手,连接ESP32-S3-GEEK,与手机进行蓝牙BLE通讯,发送与接收的消息在串口上显示。操作与09_BLE_LCD相同,但是没有开启LCD,使用UART显示消息内容,较大程度将功耗降低。操作请看09_BLE_LCD
11_BLE_Keyboard
【程序说明】
- 该例程可将ESP32-S3-GEEK作为蓝牙键盘使用,使用PC蓝牙连接ESP32-S3-GEEK,可以进行一系列键盘单键或组合操作,此示例程序会使电脑反复锁屏解锁,按下boot键重新上电便可退出程序。适用于 ESP32-S3-GEEK 模拟 BLE 键盘,可发送文本和按键指令,测试稳定性与可靠性
- pc端可进行自动锁屏与开屏操作,按下boot键重新上电便可退出程序
【硬件连接】
- 将开发板接入电脑
【代码分析】
- setup()
- 启动串口通信,设置波特率为 115200,用于输出调试信息。
- 在串口输出提示信息 “Starting BLE work!”。
- 初始化蓝牙键盘对象
bleKeyboard
,传入设备名称、制造商名称和电池电量报告间隔等参数,然后调用begin
方法启动蓝牙键盘
- loop()
- 判断蓝牙键盘是否连接,如果连接:
- 在串口输出提示信息 “Sendin 'Waveshare'...”,然后使用
print
方法发送字符串 “waceshare”。 - 延迟 500 毫秒。
- 在串口输出提示信息 “Sendin Enter key...”,然后使用
write
方法发送回车键(KEY_RETURN
)。 - 延迟 500 毫秒。
- 在串口输出提示信息 “Sendin Ctrl+Alt+Delete...”,依次按下左 Ctrl、左 Alt 和 Delete 键,延迟 100 毫秒后释放所有按键。
- 在串口输出提示信息 “Sendin 'Waveshare'...”,然后使用
- 在串口输出提示信息 “Waiting 5 seconds...”,然后延迟 5000 毫秒,等待下一次循环
- 判断蓝牙键盘是否连接,如果连接:
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- 使用PC打开蓝牙扫描连接设备
- 连接成功后会每隔5秒会进行一系列键盘操作(输出“Waveshare”、Ctrl+Alt+Delete)
- pc端可进行自动锁屏与开屏操作,按下boot键重新上电便可退出程序
- 可在libraries文件夹中的BleKeyboard.h文件中查看各个单键的值
12_WIFI_AP_LCD
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC连接其WIFI后,可以登录IP,在网页端进行控制ESP32-S3-GEEK的LCD显示图片。适用于学习 ESP32-S3-GEEK 与 Wi-Fi 和 LCD 交互,可作为 Wi-Fi 接入点与客户端通信并在 LCD 显示,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- setup()
- 调用
Config_Init()
和LCD_Init()
初始化相关配置和 LCD 显示屏。 - 启动串口通信,设置波特率为 115200,用于输出调试信息。
- 设置 LCD 的背光亮度为 100。
- 创建新的图像缓冲区,设置旋转角度为 90 度,并清空 LCD 显示屏为特定颜色(0x000f)。
- 调用
WIFI_AP_Init()
初始化 Wi-Fi 接入点
- 调用
- loop()
- 通过
WiFiClient client = server.available();
监听是否有客户端连接到服务器。 - 调用
WIFI_LCD_Control(client)
函数处理连接的客户端,可能进行与 LCD 显示相关的操作,具体功能取决于该函数的实现
- 通过
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- ssid是ESP32-S3-GEEK创建的AP名称(ESP32-S3-GEEK),password则是连接AP的密码(Waveshare)
- 使用PC连接ESP32-S3-GEEK的AP,输入密码Waveshare
- 烧录成功但PC识别不到wifi时,给开发板重新上电再尝试
- LCD会显示HTTP服务器的IP地址
- 使用浏览器进行登录IP:192.168.4.1,通过服务器上的按钮对ESP32-S3-GEEK的LCD进行控制,按下不同按钮,观察LCD变化,更多LCD的显示函数具体可以看LCD程序说明
13_WIFI_TCP_Client
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,与PC端或者手机端连接同一个WIFI后,作为TCP Client访问PC或手机创建的TCP Server,并且与PC或手机建立TCP通讯,在LCD上显示接收内容。适用于学习 ESP32-S3-GEEK 与 Wi-Fi 和 LCD 交互,连接 Wi-Fi 后尝试连接服务器,收发数据并在 LCD 显示,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- intToIpAddress()
- 使用
sprintf
函数将传入的 IP 地址整数按照点分十进制的格式转换为字符串,并存储在result指针指向的字符数组中
- 使用
- setup()
- 模块初始化:
- 调用
Config_Init()
和LCD_Init()
初始化相关配置和 LCD 显示屏 - 启动串口通信,设置波特率为 115200
- 设置 LCD 的背光亮度为 100
- 创建新的图像缓冲区,设置旋转角度为 90 度,并清空 LCD 显示屏为特定颜色(0x000f)
- 调用
- Wi-Fi 连接:
- 设置 Wi-Fi 模式为 STA(客户端模式),并关闭 Wi-Fi 休眠以提高响应速度
- 使用
WiFi.begin(ssid, password)
尝试连接到指定的 Wi-Fi 网络 - 在连接过程中,通过循环不断在 LCD 上显示连接状态,并在串口输出连接状态信息
- 当 Wi-Fi 连接成功后,清空 LCD 显示屏,获取本地 IP 地址,将其转换为字符串并显示在 LCD 上,同时在串口输出连接成功和 IP 地址信息
- 模块初始化:
- loop()
- 连接服务器尝试:
- 在 LCD 上显示正在尝试连接服务器的信息,并在串口输出相应信息
- 服务器连接成功:
- 如果成功连接到服务器,清空 LCD 显示屏,显示连接成功信息
- 向服务器发送 “Hello world!” 数据
- 进入循环,只要客户端连接或有可用数据,就进行以下操作:
- 如果有数据可读,读取数据直到遇到回车符,将读取的数据在串口输出,并将其显示在 LCD 上,同时将接收到的数据发送回服务器
- 在串口输出关闭当前连接的信息,并停止客户端连接
- 连接失败:
- 如果连接服务器失败,在串口输出连接失败信息,并停止客户端连接
- 延迟:
- 每次循环结束后,延迟 5000 毫秒
- 连接服务器尝试:
【代码修改】
①. 使用PC打开热点,网络频带选择“任何可用频率”,程序中ssid与password与要连接的WIFI名称和密码保持一致
②. 下载网络调试助手,修改为你的本地IP地址(以下的192.168.137.1为示例IP地址)
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- 此时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显示消息
- 还可以使用手机打开热点,热点名称与密码同上,选择2.4GHz 频带
- 打开热点后使用 TCP调试助手与ESP32-S3-GEEK进行TCP通讯
- 修改代码中serverIP为最后手机创建TCPserver的IP(192.168.6.123)
- 烧录代码,连接成功后,TCP Server会收到ESP32-S3-GEEK发送的TCP消息"Hello world",LCD会显示“Access successful”,可通过手机端TCP Server发送TCP消息给ESP32-S3-GEEK,若发送成功,ESP32-S3-GEEK作为TCP Client接收到消息会将消息内容显示在LCD上,可以观察到LCD显示消息
14_WIFI_TCP_Server
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,连接PC端打开的热点后,创建TCP Server,PC创建TCP Client访问ESP32-S3-GEEK,两者建立TCP通讯,GEEK在LCD上显示接收内容。适用于学习 ESP32-S3-GEEK 与 Wi-Fi 和 LCD 交互,作为 Wi-Fi 服务器,接收客户端数据并在 LCD 显示,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- intToIpAddress()
- 使用
sprintf
函数将传入的 IP 地址整数按照点分十进制的格式转换为字符串,并存储在result指针指向的字符数组中
- 使用
- setup()
- 模块初始化:
- 调用
Config_Init()
和LCD_Init()
初始化相关配置和 LCD 显示屏。 - 启动串口通信,设置波特率为 115200。
- 设置 LCD 的背光亮度为 100。
- 创建新的图像缓冲区,设置旋转角度为 90 度,并清空 LCD 显示屏为特定颜色(0x000f)。
- 调用
- Wi-Fi 连接:
- 设置 Wi-Fi 模式为 STA(客户端模式),并关闭 Wi-Fi 休眠以提高响应速度。
- 使用
WiFi.begin(ssid, password)
尝试连接到指定的 Wi-Fi 网络。 - 在连接过程中,通过循环不断在 LCD 上显示连接状态,并在串口输出连接状态信息。
- 当 Wi-Fi 连接成功后,清空 LCD 显示屏
- 模块初始化:
- loop()
- Wi-Fi 连接状态确认和服务器启动:
- 获取本地 IP 地址,将其转换为字符串并在串口输出,同时显示在 LCD 上。
- 使用
server.begin(8080)
启动服务器,监听端口 8080。
- 等待客户端连接:
- 创建一个
WiFiClient
对象client
,并通过server.available()
尝试获取连接的客户端。 - 在 LCD 上显示连接状态信息,并在串口输出相应信息。
- 创建一个
- 客户端连接成功后的处理:
- 如果有客户端连接,进入循环处理客户端的数据。
- 当有数据可读时,读取数据直到遇到换行符,然后去除数据末尾的回车和换行符,显示在 LCD 上。
- 当客户端断开连接后,停止当前连接并在串口输出断开连接的信息
- Wi-Fi 连接状态确认和服务器启动:
【代码修改】
- 使用PC打开热点,网络频带选择“任何可用频率”,程序中ssid与password与要连接的WIFI名称和密码保持一致
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- 烧录成功,LCD显示
- Wi-Fi连接后,LCD上会显示TCP ServerIP,使用串口调试助手打开TCP Client,用于和ESP32-S3-GEEK(TCP Server)进行连接与TCP通讯
①. 修改端口号为"TCPClient" ,修改远程地址为LCD屏幕上显示的IP,端口号8080,点击连接
②. 加回车换行
③. 输入信息
①. 发送信息
- 消息成功发送,LCD屏幕显示
15_WIFI_Web_Server
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC端连接其WIFI后,打开串口调试助手,通过ESP32-S3-GEEK创建的HTTP网页端发送消息给GEEK,观察串口调试助手与LCD上的接收内容。适用于学习 ESP32-S3-GEEK 与 Wi-Fi 和 LCD 交互,作为 Wi-Fi 接入点服务器,处理客户端请求,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- setup()
- 调用
Config_Init()
和LCD_Init()
初始化相关配置和 LCD 显示屏。 - 启动串口通信,设置波特率为 115200,用于输出调试信息。
- 设置 LCD 的背光亮度为 100。
- 创建新的图像缓冲区,设置旋转角度为 90 度,并清空 LCD 显示屏为特定颜色(0x000f)。
- 调用
WIFI_AP_Init()
初始化 Wi-Fi 接入点
- 调用
- loop()
- 通过
WiFiClient client = server.available();
监听是否有客户端连接到服务器。 - 调用
WIFI_Web_Server(client)
函数处理连接的客户端,具体功能取决于该函数的实现,可能涉及提供网页服务或处理特定的网络请求
- 通过
【代码修改】
- 使用PC打开热点,网络频带选择“任何可用频率”,程序中ssid与password与要连接的WIFI名称和密码保持一致
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- 烧录成功,使用PC连接ESP32-S3-GEEK的AP
- LCD会显示HTTP服务器的IP地址,使用浏览器进行登录IP:192.168.4.1
- 使用ESP32-S3-GEEK的UART接口通过USB转UART工具与PC连接,打开串口调试助手
- 可在HTTP Web上输入文本内容并且发送HTTP请求至ESP32-S3-GEEK,可在串口调试助手与LCD上显示接收内容
16_MQTT_sub_pub
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,连接WIFI后,使用微雪云平台,进行MQTT通讯,订阅与发布主题,实现远距离传输信息。适用于学习 ESP32-S3-GEEK 与 Wi-Fi、MQTT 和 LCD 交互,连接 Wi-Fi 和 MQTT 服务器,收发 JSON 数据并在 LCD 显示,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- callback()
- 将接收到的字节数组转换为字符串
inputString
。 - 在字符串中查找特定的 JSON 字段,如
"data"
和"key"
(可根据实际情况修改为特定的数据标识符)。 - 提取出
"builtIn"
字段的值,并根据该值进行不同的操作。如果值为 0,则在 LCD 上显示 “close!”,否则显示 “open!”,同时在串口输出相应信息
- 将接收到的字节数组转换为字符串
- setup_wifi()
- 在 LCD 上显示 “Wifi Connecting...”。
- 在串口输出正在连接的 Wi-Fi 网络名称。
- 设置 Wi-Fi 模式为 STA(客户端模式),并使用指定的 SSID 和密码尝试连接。
- 在连接过程中,通过循环不断在串口输出连接状态信息,直到连接成功。
- 连接成功后,清空 LCD 屏幕并显示 “Wifi Connected”,同时在串口输出本地 IP 地址
【代码修改】
- 开启的热点名称与密码要与代码中一致
- 微雪云平台账号注册与创建设备后,根据微雪云上新建设备的"查看地址"可以看到设备的Client ID、Pub Topic、Sub Topic,将它们写入例程中进行赋值,用于ESP32-S3-GEEK连接自己的云平台设备
- 在callback函数中可以修改识别的标识符为我们自己在云平台上创建的设备属性标识符
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- 烧录代码,连接上WIFI后,观察微雪云平台上设备是否进入online状态,若没有可以尝试刷新网页与使用USB转UART连接PC通过串口调试助手查看WIFI与MQTT连接情况,并且在LCD屏上也会显示WIFI与MQTT的连接情况
- ESP32-S3-GEEK连接微雪云成功之后即可通过Dashboard进行发送MQTT消息
- 我们能在LCD和串口调试助手中看到我们对设备属性值(例:"key")的变化进行了不同的反馈,并且在微雪云的设备接收值中看到ESP32-S3-GEEK发送至微雪云设备的数据(接受值为自己的Client ID,后续自己可将key的返回值或者状态发送回微雪云),至此实现了MQTT的数据上行与下行、订阅主题与发布主题
17_MQTT_BLE_Keyboard
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的STA模式与蓝牙,连接WIFI与蓝牙后,使用微雪云平台,可实现远程蓝牙锁屏与输入密码开屏,还有更多组合键等待您的开发。适用于 ESP32-S3-GEEK 集成 BLE 键盘、Wi-Fi 和 MQTT,控制 LCD 显示,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- callback()
- 作为 MQTT 订阅的回调函数,用于处理接收到的消息。
- 打印接收到的消息的主题,然后将接收到的字节数组转换为字符串。
- 在字符串中查找特定的 JSON 字段 “key”,如果你的标识符不是 “key”,需要修改代码。
- 提取出 “key” 字段的值,并根据值为 “1” 或其他情况分别调用
Screen_ON
或Screen_OFF
函数
- setup_wifi()
- 在 LCD 上显示 “Wifi Connecting...”。
- 在串口输出正在连接的 Wi-Fi 网络名称。
- 设置 Wi-Fi 模式为 STA(客户端模式),并使用指定的 SSID 和密码尝试连接。
- 在连接过程中,通过循环不断在串口输出连接状态信息,直到连接成功。
- 连接成功后,清空 LCD 屏幕并显示 “Wifi Connected”,同时在串口输出本地 IP 地址
【代码修改】
- 开启的热点名称与密码要与代码中一致(2.4GHZ或任何可用频率)
- 微雪云平台账号注册与创建设备后,根据微雪云上新建设备的"查看地址"可以看到设备的Client ID、Sub Topic,将它们写入例程中进行赋值,用于ESP32-S3-GEEK连接自己的云平台设备
- 连接的蓝牙名称与密码要与代码中一致
- 在callback函数中可以修改识别的标识符为我们自己在云平台上创建的设备属性标识符
- 修改为自己的开屏密码
【代码烧录】
- 选择开发板型号ESP32S3 Dev Module与端口
- 烧录代码
【运行效果】
- 烧录代码,连接上WIFI后,打开PC的蓝牙功能以配对连接设备,观察微雪云平台上设备是否进入online状态,若没有可以尝试刷新网页与使用USB转UART连接PC通过串口调试助手查看WIFI与MQTT连接情况,并且在LCD屏上也会显示WIFI与MQTT的连接情况
- ESP32-S3-GEEK连接微雪云成功之后,可通过手机端登录微雪云Dashboard进行远程控制PC进行锁屏与输入密码开屏
- 我们能在LCD和串口调试助手中看到我们对设备属性值(例:"key")的变化进行了不同的反馈,后续还可以在callback函数中将按键修改成Ctrl+C、Ctrl+V等组合键,自己DIY属于你的远程控制蓝牙键盘
- 还可通过键盘测试的网站来测试ESP32-S3-GEEK蓝牙控制按下了哪些按键
- 打开键盘测试此界面,用手机端锁屏开屏,键盘测试界面可显示按下了哪些按键
ESP-IDF开发
本章介绍 ESP-IDF 环境搭建,包括 Visual Studio、Espressif IDF插件的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。
环境搭建
下载和安装 Visual Studio
- 打开VScode官网的下载页面,选择对应系统和系统位数进行下载
- 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
- 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
- 第三项开启后,选择打开方式时,可以直接选择VSCode
安装Espressif IDF插件
- 国内部分区域安装,一般推荐“在线安装”, 若因网络因素无法在线安装,则使用“离线安装”。
- 安装Espressif IDF插件教程,详见:安装Espressif IDF插件教程
运行第一个 ESP-IDF 程序
新建项目
创建例程
- 使用快捷键 F1 ,输入esp-idf:show examples projects
- 选择你当前的IDF版本
- 以Hello world例程为例
①选择对应例程
②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
③点击创建例程
- 选择放置例程的路径,要求无例程同名文件夹
修改COM口
- 此处显示使用对应的COM口,点击可以修改对应COM口
- 请根据设备对应COM口进行选择(可通过设备管理器查看)
- 若出现下载失败的情况请点击复位按键1秒以上或进入下载模式,等待 PC 端重新识别到设备后再次下载
修改驱动对象
- 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3
- 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可
其余状态栏简介
①.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,常被称作小火苗
编译、烧录、串口监视
- 点击我们之前介绍的 编译,烧录,打开串口监视器按键
- 编译可能需要较长时间才能完成,尤其是在第一次编译时
- 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿
- 若是新工程首次烧录程序,将需要选择下载方式,选择 UART
- 后续也可在 下载方式 处进行修改(点击即可弹出选项)
- 因为板载自动下载电路,无需手动操作即可自动下载
- 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启
使用IDF 示例程序
软件内部打开
- 打开 VScode 软件,选择文件夹打开示例
- 选择提供的 ESP-IDF 下的示例,点击选择文件(位于 示例程序/Demo/ESP-IDF 路径下)
软件外部打开
- 正确选择工程目录,打开工程,否则会影响后续程序编译烧录
- 连接设备后,选择好COM口和型号,点击下方编译并烧录即可实现程序控制
ESP-IDF工程项目详解
- 组件(Component):ESP-IDF中的组件是构建应用的基本模块,每个组件通常是相对独立的代码库或库,能实现特定的功能或服务,可以被应用程序或是其他组件重复使用,类似于Python开发中的库的定义。
- 组件的引用:Python开发环境中引入库只需要“import 库名或路径”即可,而ESP-IDF基于C语言基础,引入库是通过
CMakeLists.txt
进行配置和定义的。 - CmakeLists.txt的作用:ESP-IDF编译时编译工具
CMake
会首先通过读取工程目录的顶层CMakeLists.txt
的内容来读取构建规则,识别需要编译的内容。当在CMakeLists.txt
中引入了需要的组件、程序后,编译工具CMake
会根据索引导入每个所需要编译的内容。编译过程如:
- 组件的引用:Python开发环境中引入库只需要“import 库名或路径”即可,而ESP-IDF基于C语言基础,引入库是通过
示例程序
示例程序 | 基础例程说明 |
---|---|
Wireless_USB_flash_drive | 可将ESP32-S3-GEEK用作具有无线访问功能的 USB 磁盘 |
Wireless_USB_flash_drive
【程序说明】
- 该例程可将ESP32-S3-GEEK用作具有无线访问功能的 USB 磁盘,配合SD卡存储可变成一个大容量的无线存储器,同时还可以连接ESP32-S3-GEEK的热点,进行HTTP 文件服务器的上传和下载,极大程度的方便了用户的使用。适用于学习 ESP32 的 USB MSC 功能,可作为存储设备连接 USB 主机,支持不同存储方式,有回调函数处理各种事件,测试稳定性与可靠性
- 按下boot键重新上电便可退出程序
【硬件连接】
- 将SD卡装入开发板
- 将开发板接入电脑
【代码分析】
- init_fat() :初始化 FAT 文件系统,根据配置选择内部闪存或外部 SD 卡进行挂载
- 如果使用内部闪存,根据 ESP-IDF 版本选择特定函数挂载
- 如果使用外部 SD 卡,根据接口类型(SPI 或 SDIO)进行相应初始化和挂载
- app_main () :主函数,协调程序各部分初始化,包括文件存储、Wi-Fi(若配置)和 USB MSC
- 调用
init_fat
初始化文件存储 - 若配置 Wi-Fi,进行初始化并启动文件服务器
- 初始化 tinyUSB 并安装驱动
- 调用
【代码烧录】
- 确保SD卡已装入
- 选择型号(esp32s3)与端口
- UART下载
- 烧录程序
【运行效果】
- 烧录成功后,重新插拔ESP-S3-GEEK开发板,此时电脑识别出一个新的U盘设备
- 打开U盘,可以浏览SD卡中的文件,并且可对文件进行增删改查
- 打开电脑WIFI,连接ESP32-S3-GEEK的AP,输入密码Waveshare
- 连接成功后,打开浏览器,登录IP:192.168.4.1
- 登录成功后,即可进行无线上传和下载文件
MicroPython开发
本节围绕 MicroPython 开发环境搭建展开,主要涉及烧录固件以及安装和 Thonny。对于安装 Thonny 部分,详细阐述了其安装步骤与使用说明,为开发者构建 MicroPython 开发环境提供全面且清晰的指导。
环境搭建
下载和安装 Thonny
- 打开Thonny官网的下载页面,选择对应系统和系统位数进行下载
- 选择对应的系统和版本,以windows64位为例,鼠标要移动到windows处,才会显示对应的信息,点击下载安装
- 其余默认安装即可
烧录固件
- 目前开发板使用定制的固件进行开发,固件在ESP32-S3-GEEK 示例程序中,固件合并成单个文件,注意下载地址是0x00位置
- 固件路径:
...\ESP32-S3-GEEK-Demo\Firmware\MicroPython-bin
- 烧录固件教程,详见:Flash固件的烧录与擦除教程
- factory-bin文件夹下的bin文件为测试板载功能的文件,在此处无需烧录
Thonny使用说明
示例程序
示例程序 | 基础例程说明 |
---|---|
lcd_example.py | 使用ESP32-S3-GEEK打开LCD屏幕,显示文字信息与显示bmp图片 |
Uart0.py | 串口通信 |
WS_Bluetooth.py | 可打开ESP32-S3-GEEK的蓝牙,使用蓝牙与手机蓝牙调试助手进行通讯 |
WIFI_AP.py | 打开WIFI的AP模式,PC可以连接其WIFI |
WIFI_STA.py | 打开WIFI的STA模式,其可以连接PC打开的热点或者其他WIFI |
上传例程及特殊例程
LCD
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开LCD屏幕,显示文字信息与显示bmp图片
- 运行时请运行 lcd_example.py
【硬件连接】
- 将开发板接入电脑
【代码分析】
- lcd_example.py主要定义了一个用于控制特定尺寸的 LCD 显示屏的类
LCD_1inch14
。它包含了初始化显示屏硬件、发送命令和数据到显示屏、对显示屏缓冲区进行操作以及显示图像和文本等功能。- 首先创建了一个
BMPReader
对象img
,并传入一个 BMP 图像文件路径'./ESP32-S3-GEEK.bmp'
。这调用了第二段代码中BMPReader
类的构造函数,该构造函数又调用了_read_img_info
方法来读取图像文件的相关信息。 - 然后通过一个循环,调用
img.get_buf(270, 270*x)
方法从 BMP 图像中读取特定长度的数据,并将其插入到 LCD 的帧缓冲区中(通过调用第一段代码中LCD_1inch14
类的ins
方法实现)。这里 get_buf 方法的参数data_len
和start
用于控制读取的数据长度和起始位置,确保正确地从 BMP 图像中提取数据并显示在 LCD 上
- 首先创建了一个
- bmp_reader.py定义了一个BMPReader类,用于读取 BMP 图像文件。它能够解析 BMP 文件的特定信息,并从文件中提取特定位置和长度的数据,将其转换为特定格式(RGB565)的字节数组返回
SD
【程序说明】
- 该例程可读取ESP32-S3-GEEK的SD卡槽,直接打开ESP32-S3-GEEK的sd文件夹可浏览SD卡中的文件,使用前需要先将SD卡插入卡槽中。适用于 ESP32 与 SD 卡交互,初始化 SD 卡并挂载文件系统,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
- 将SD卡装入开发板
【代码分析】
- boot.py:
- 通过设置芯片选择(CS)引脚和初始化 SPI 总线来连接到 SD 卡
- 创建
sdcard.SDCard
实例并将其挂载到文件系统中,使用uos.mount(sd, '/sd')
。一旦挂载成功,可以使用os.listdir('/sd')
等文件系统操作来查看 SD 卡中的内容,遍历文件和目录、读取文件内容等
- sd_card.py
- 定义了SDCard类,该类提供了与 SD 卡进行交互的方法,初始化 SD 卡、发送命令、读取和写入数据块等。
- 这段代码本身没有直接显示 SD 卡内容的功能,但它为上层代码提供了底层的操作接口。通过这些接口,可以实现读取 SD 卡上的文件并将其内容显示出来,例如可以读取特定文件的内容并打印出来
- 两段代码共同协作,实现了在 MicroPython 环境下对 SD 卡的访问和内容显示。第一段代码通常是用户使用的部分,通过调用第二段代码中实现的功能来完成具体的任务
Uart0.py
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开串口UART0,打开串口调试助手,可以进行串口通信。适用于 MicroPython 与 UART 交互,初始化 UART,可发送和接收数据,测试稳定性与可靠性
【代码分析】
- 模块导入和 UART 初始化
import machine
:导入 MicroPython 的machine
模块,用于控制硬件资源。- 创建一个 UART 对象
uart
,指定使用 UART1,设置波特率为 115200,通过指定发送引脚为machine.Pin(43)
和接收引脚为machine.Pin(44)
来配置 UART 的硬件连接
- 定义函数
send_data
函数:接受一个数据参数,使用 UART 的write方法发送数据。receive_data
函数:检查 UART 是否有可读数据,如果有,则读取数据并打印出来
WS_Bluetooth.py
【程序说明】
- 该例程可打开ESP32-S3-GEEK的蓝牙,使用蓝牙与手机蓝牙调试助手进行通讯
【硬件连接】
- 将开发板接入电脑
【代码分析】
- ble_irq:蓝牙中断处理函数,根据不同的事件进行相应的处理
- 如果事件为连接(事件值为 1),调用
connected
函数 - 如果事件为断开连接(事件值为 2),调用
disconnected
函数 - 如果事件为接收数据(事件值为 3),读取接收特征的值并打印
- 如果事件为连接(事件值为 1),调用
- advertiser
- 将设备名称转换为字节数组,并构建广播数据
- 使用蓝牙实例的
gap_advertise
方法进行广播
- Bluetooth_Init
- 初始化蓝牙设备
- 创建蓝牙实例,激活蓝牙,设置设备名称,注册中断处理函数,注册服务并广播设备信息
WIFI_AP.py
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的AP模式,PC可以连接其WIFI。适用于 ESP32-S3-GEEK 在 MicroPython 下创建 Wi-Fi 接入点,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- redian
- 创建一个 Wi-Fi 接入点(Access Point,AP)对象
ap
,使用network
.WLAN(network.AP_IF)创建了一个基于接入点模式的网络接口 - 激活接入点
ap.active(True)
,使设备开始作为一个 Wi-Fi 热点工作 - 通过
ap.config
设置接入点的参数,包括网络名称(ESSID)为 'ESP32-S3-GEEK',认证模式为network.AUTH_WPA_WPA2_PSK
(即 WPA/WPA2-PSK 加密),以及密码为 'Waveshare' - 打印出接入点的 IP 地址,通过
ap.ifconfig()[0]
获取接入点的 IP 地址并显示
- 创建一个 Wi-Fi 接入点(Access Point,AP)对象
WIFI_STA.py
【程序说明】
- 该例程可使用ESP32-S3-GEEK打开WIFI的STA模式,其可以连接PC打开的热点或者其他WIFI。适用于 ESP32 在 MicroPython 下连接特定 Wi-Fi 网络,测试稳定性与可靠性
【硬件连接】
- 将开发板接入电脑
【代码分析】
- do_connect:程序主入口,初始化显示屏并展示三种字体名称
- 创建一个 Wi-Fi 客户端接口对象
wlan
,使用network.WLAN(network.STA_IF)
创建了一个基于站点模式(Station Interface)的网络接口。 - 激活 Wi-Fi 接口
wlan.active(True)
,使设备能够连接到外部的 Wi-Fi 网络。 - 如果设备当前没有连接到网络,打印出 “connecting to network...” 的提示信息,并尝试连接到指定的 Wi-Fi 网络,这里的网络名称是 'ESP32-S3-GEEK',密码是 'Waveshare'。
- 通过一个循环不断检查是否连接成功,直到
wlan.isconnected()
返回True
。 - 一旦连接成功,打印出当前的网络配置信息,包括 IP 地址、子网掩码、网关地址等,通过
wlan.ifconfig()
获取并打印
- 创建一个 Wi-Fi 客户端接口对象
Flash固件的烧录与擦除
- 当前示例程序有提供测试固件,可通过直接烧录测试固件来测试板载设备功能正常与否
- bin文件路径:
..\ESP32-S3-GEEK-Demo\Firmware\factory-bin
资料
原理图
示例程序
数据手册
ESP32-S3
- ESP32-S3数据手册(中文)
- ESP32-S3技术参考手册(中文)
- ESP32-S3-WROOM-1数据手册(中文)
- ESP32-S3数据手册(英文)
- ESP32-S3技术参考手册(英文)
- ESP32-S3-WROOM-1数据手册(英文)
其他器件
软件工具
Arduino
VScode
Thonny
调试工具
固件烧录工具
其他资料链接
FAQ
①烧录时可长按Boot按键插入USB后再松开按键,ESP32-S3-GEEK进去Download mode才开始烧录,
烧录完重新插拔USB则可以进入SPI_FAST_FLASH_BOOT mode,运行程序。
②可尝试关闭PC的蓝牙开关,直接烧录运行(说明蓝牙驱动与ESP32-S3-GEEK的COM驱动有冲突导致)
- 首次编译很慢属于正常情况,耐心等待即可
- 部分AppData文件夹是默认隐藏的,可以设置为显示。
- 英文系统:资源管理器->View->勾选“Hidden items”
- 中文系统:文件资源管理器->查看->显示->勾选“隐藏的项目”
- 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*来查看所有串口设备的配置信息。
- 安装MAC 驱动程序后重新烧录。
请检查Pub Topic、Sub Topic是否正确填入,设备在微雪云中是否为在线状态
可以的,需要烧录无线U盘程序,SD卡映像中 SPIFS只支持32GB以下。
1.14LCD的驱动芯片为ST7789P3。
- 查看原理图,针对不同开发板的Type-C接口,对应代码处理输出不同:
- USB直出的开发板,支持printf函数打印输出,若想支持Serial函数打印输出则需要使能USB CDC On Boot功能或者HWCDC声明
- UART转USB的开发板,支持printf函数和Serial函数打印输出,无需使能USB CDC On Boot
技术支持
联系人:常工
EMAIL:2355861364@qq.com
QQ:2355861364
微信:扫下方二维码添加