esp32s3&arduino&PlatformIO环境配置&st7789点屏&lvgl学习笔记

翻开一看又是半年没有写什么东西了

想着行动力行动力但是下班之后就好想睡觉

彻底变成了社畜的模样

但是哪怕迷茫也要前进呀

趁着年前熟悉一下很久就想学但是一直没学两三年没碰都快要忘干净了的一些事吧

比如怎么用单片机和一块彩屏画出一个好看的UI?也熟悉一下比较新的器件和开发方式吧

权当是复健咯

想了想还是尽量写写blog做笔记吧 方便日后又忘得差不多了的时候翻来复习?虽然也有用OneNote来记录的习惯但是还是太零散了 翻找起来也麻烦

关于mcu和开发板

现在新鲜的mcu真挺多

有时候感觉自己还在几年前的f103c8t6小蓝板的时代

也确实是太久没玩什么新东西了

虽然esp32s3也算不上什么太新的玩意 不过生态也比较成熟 资料挺多 性能也够强,想要推屏幕的话,想着还是要找个主频高内存大的片子,就用它吧

image-20240216173601424

乐鑫的产品线真够乱的(摔

img

去某宝随便买了个看着顺眼的核心板长得很像小蓝板很亲切

这里是资料:https://wiki.luatos.com/chips/esp32s3/board.html

原理图也很简单

image-20230109142605987

image-20230109142929589

开发环境

esp32主流的开发环境应该算是有两套

一个是官方的esp-idf的C sdk,功能齐全资料也完善,不过听说在win下配环境比较麻烦,学习起来也略微繁琐

另一个就是arduino固件的支持,写起来简单,兼容arduino库用起来方便,但是对mcu底层就没那么好操控了

因为是初步入门复健所以还是先用简单的arduino吧

arduino IDE环境

下了个最新的arduino IDE

不得不说虽然2.0的arduino界面变了很多 但是难用这一点上还是一如既往

配置倒是很简单 点开开发板管理器 搜esp32 然后直接装这个官方的包就好了

不过要自备魔法手段 网络并不太好 包挺大的得装一会(装不上的话还有各种手段 这里不谈

image-20240216175723742

装完之后随便选一个esp32s3的板子

image-20240216175937562

看下上面的开发板pinmap,GPIO10和11就是两颗LED 想想如果脑子正常的话esp32的gpio和arduino的gpio号应该是一样的吧(应该?)别跟树莓派那样有好几种编号就好

于是随便撸了一个hello world试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void setup() {
// put your setup code here, to run once:
Serial.begin(921600);
Serial.print("hello world!\n");
pinMode(11,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(11,HIGH);
delay(500);
digitalWrite(11,LOW);
delay(500);
}

插上usb,可以自动识别com号,编译,下载

image-20240216180430952

闪灯ok,串口输出ok

image-20240216180539203

第一步算是跑起来了

碎碎念

本来还想的很复杂 因为这块合宙的开发板默认推荐的开发环境是他们自家的sdk(猜应该也是一种上层封装的固件吧,没仔细研究)

还想着是不是还得需要先去刷入arduino的固件,刷bootloader什么的

照着网上搜的arduino环境配置方法去先这样直接点了下载也只是想先尝试一下

没想着能成功的

结果一遍就刷进去了 草

看起来似乎这个arduino的工作方式不是以前传统AVR的那种通过bl支持的?是直接用arduino库编译了一个普通的esp32固件然后用串口isp烧录进去就ok了吗

好吧 先不管了 总之是搞定了 这方面的细节就之后有机会再学习了吧

尝试点屏

关于屏幕

练手就从最简单经典的搞起吧

去x宝买了块最经典的st7789的2寸320x240全彩tft

感慨下现在屏幕也挺便宜了 这种全彩的十块上下就能买到了

还记得以前黑白12864都是珍贵东西要二三十的年代…

image-20240217184500156

image-20240217184321744

没啥可说的 很简单的玩意

懒得打板所以顺便搞了个fpc转接板然后用杜邦线连了一下

这里重要的IO就是SPI的三根线、RST复位、DC数据命令选择这五个

也没多想直接按着上面的开发板pinmap把SPI接到了14、17、18(屏幕都是从机spi,只用TX单向所以只接了MOSI),剩下RST和DC随便接了IO 0和1

嗯…这就为后面埋下了大坑

QQ图片20240217184750

通用驱动库点亮测试

直接上lvgl好像有点太快了

还没有点亮呢 至少先驱动起来看看

于是找个普通的st7789驱动库吧

屏幕卖家自然是带了一些例程代码的

但是翻了一下,不是51的就是stm32的。大概读了一下代码,就是基础的底层驱动,还有画线写字之类的简单图形库。虽然也不是不能把这玩意移植到arduino上,但是这不是懒嘛…

都用arduino了,图的不就是不用自己写库么

so放弃卖家的库,想来7789这种烂大街的玩意肯定有一堆开源库,屏幕不太特殊的话应该是可以直接点亮的吧

去arduino上搜一搜好了

image-20240217185716780

果然出来了一大堆

既然只是测试用(之后还是要换lvgl的),也就没太考虑去比较哪个库更好

第一个看着就ok,装来试一下吧


未完待续…