ESP32-S3-Touch-LCD-1.69是一款微雪(Waveshare)设计的低成本,高性能的微控制器开发板。在较小的板型下,板载了1.69英寸电容LCD屏、锂电池充电芯片、六轴传感器(三轴加速度计与三轴陀螺仪)、RTC等外设,方便开发并嵌入应用到产品中。
ESP32-S3-Touch-LCD-1.69目前提供ArduinoIDE和ESP-IDF两种开发工具和框架,提供了灵活的开发选择,你可以根据项目需求和个人习惯选择适合的开发工具。
ArduinoIDE是一款便捷灵活、方便上手的开源电子原型平台。不需要太多基础,简单学习后,你也可以快速地进行开发。同时,Arduino拥有庞大的全球用户社区,提供了海量的开源代码、项目示例和教程,还有丰富的库资源,封装了复杂功能,让开发者能快速实现各种功能。
ESP-IDF,全称EspressifIDE,是乐鑫科技为ESP系列芯片推出的专业开发框架。它使用C语言开发,包括编译器、调试器、烧录工具等,可在命令行下或使用集成开发环境(如VisualStudioCode配合EspressifIDF插件)进行开发,插件提供代码导航、项目管理、调试等功能。
这两种开发方式各有其优势,开发者可以根据自身需求和技能水平进行选择。Arduino适合初学者和非专业人士,因其简单易学、上手快。而对于有专业背景或对性能要求较高的开发者,ESP-IDF是更好的选择,它提供了更高级的开发工具和更强的控制能力,适用于复杂项目的开发。
【硬件连接】
【代码分析】
if(!gfx->begin()){USBSerial.println("gfx->begin()failed!");}gfx->fillScreen(BLACK);gfx->setCursor(10,10);gfx->setTextColor(RED);gfx->println("HelloWorld!");gfx->setCursor(random(gfx->width()),random(gfx->height()));gfx->setTextColor(random(0xffff),random(0xffff));gfx->setTextSize(random(6),random(6),random(2));gfx->println("HelloWorld!");【运行效果】
gfx->begin();gfx->fillScreen(WHITE);for(inti=0;i<=255;i++){gfx->Display_Brightness(i);gfx->setCursor(30,150);gfx->setTextColor(BLUE);gfx->setTextSize(4);gfx->println("Loadingboard");delay(3);}【运行效果】
if(!gfx->begin()){USBSerial.println("gfx->begin()failed!");}intnumCols=LCD_WIDTH/8;intnumRows=LCD_HEIGHT/10;//标注行编号gfx->setTextColor(GREEN);for(intx=0;x
初始化串口通信;设置WiFi为站点模式并断开连接;初始化显示屏,获取屏幕尺寸并计算各种绘图参数;设置屏幕背景为黑色,绘制标题栏。
扫描WiFi网络并获取网络信息,包括信道、RSSI、BSSID和SSID;统计每个信道上的网络数量、噪声水平和峰值信号强度;清除旧的图形并根据扫描结果绘制新的图形,包括信号强度椭圆和网络信息文本;打印扫描到的网络数量和噪声最小的信道;绘制图形基线和信道编号;根据条件进入低功耗模式。
【运行效果】
voidredraw_hands_cached_draw_and_erase(){gfx->startWrite();draw_and_erase_cached_line(center,center,nsx,nsy,SECOND_COLOR,cached_points,sHandLen+1,false,false);draw_and_erase_cached_line(center,center,nhx,nhy,HOUR_COLOR,cached_points+((sHandLen+1)*2),hHandLen+1,true,false);draw_and_erase_cached_line(center,center,nmx,nmy,MINUTE_COLOR,cached_points+((sHandLen+1+hHandLen+1)*2),mHandLen+1,true,true);gfx->endWrite();}【运行效果】
【新旧版本对比】
【原理分析】
按下PWR之后可以使电池供电,此时系统启动,系统应定义SYS_EN持续输出高电平来维持上电效果,此时松开PWR不会断电。PWR此时的功能即可以拉低SYS_OUT,系统检测SYS_OUT按下、连按和长按,可以自定义关机控制操作,如长按模式下系统设置SYS_EN低电平断开电池供电,即可完成多功能按钮使用。
这个函数是LVGL显示驱动的刷新函数。它负责将LVGL的绘图缓冲区内容刷新到显示屏上;根据不同的颜色格式设置,调用gfx对象的相应函数来绘制位图到特定的区域;最后通知LVGL显示刷新已完成。
调用lv_timer_handler让LVGL处理图形界面的任务;检查qmi(QMI8658传感器对象)是否有新数据准备好。如果有,尝试获取加速度数据和陀螺仪数据,并通过串口输出;同时,将加速度数据更新到LVGL的图表上,以便实时显示加速度在三个轴上的变化情况;通过delay(20)增加数据轮询的频率,以确保及时获取传感器数据并更新显示。
【LVGL组件的使用】
下面是ArduinoIDE的LVGL实际组件调研案例
初始化LVGL,设置任务优先级、栈大小、定时器周期等参数;配置LCD显示屏的参数,并将其添加到LVGL中作为一个显示设备。这样,LVGL就可以在这个显示屏上绘制图形界面。
将默认显示修改为lolin_s3_mini_1_69
接上开发板,选择对应的COM口编译上传
1、当串口被占用时会烧录失败,将串口监视器关闭重新烧录2、当ESP32程序崩溃时,烧录会失败,此时需要将开发模块完全断电,按住BOOT再上电进入强下载模式再进行烧录。烧录完不会自动退出下载模式,所以需要再次进行断电重启
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*来查看所有串口设备的配置信息。
本产品所使用的LCD屏幕显示芯片为ST7789V2,触摸芯片为CST816T(仅带触摸版本),我们提供的lib中有两芯片的驱动,显示驱动可以参考GFX使能,触摸驱动请参阅Arduino_LVGL示例例程