基于arduino的ESP32 学习笔记(一) 基于ESP32的智能花盆
前言
本文的目的是为了给将要制作的ESP32手环做技术储备
准备学习下ESP32,还有嵌入式GUI框架LVGL,通过做几个小项目练手是不错的选择,最终目标是做一个ESP32的手环
做一个ESP32手环任务量还是比较大的,涉及到很多新技术,我认为步子不能迈的太大容易翻车,决定先做一个ESP32的智能花盆
视频链接
https://www.bilibili.com/video/BV11P4y137k2/
开源链接
20211205 所有软硬件设计制作均已完成 资料开源至github
后续有时间还会发布一些小教程,可以在我的csdn上找到
代码和外壳3D打印文件链接
https://github.com/FranHawk/esp32-smart-pow
GITHUB仓库结构
0.doc 相关文档
1.hardware pcb和3D打印所需资料
2.software 代码工程,有两个版本,gui版本可烧进任意ESP32或ESP32开发板,接屏幕和按键即可,esp32-smart-pow为完成代码工程
3.simulator 存放lvgl的pc模拟器,用vs2019打开
PCB文件链接
https://oshwhub.com/FranHawk/green-esp32/
重要
main中的wifi名和密码改成自己的
lv_page_common中的心知天气私钥改成自己的
不然代码跑不起来
制作材料
元器件根据pcb工程里带的bom表买就可以了
pcb板嘉立创生产
电池买3.7V锂电池,容量随意
无线充电模块链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.1bdb2e8dDijOkh&id=626465407103&_u=835dsdvlb35a
屏幕链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.1bdb2e8dDijOkh&id=652101077844&_u=835dsdvl181e
外壳找淘宝3D打印
总成本大概100元左右,制作需要一些编程基础和网络信息搜索能力
开发平台
1.vs code+platformio ESP32开发
2.vs2019 lvgl模拟器 GUI界面设计与仿真
3.solidworks 2020 外壳设计
4.立创eda pcb设计
基本功能均已实现,还没发现更过BUG,如视频所示,但是软硬件还有需要进一步完善的地方,最近比较忙,等过了12月(202112)再进一步完善
功能
- 时间天气实时更新并显示
- 课程表,显示一周内的课程
- 电脑性能显示,通过局域网获取所使用的电脑当前的CPU内存等占用情况
- WIFI配网
- 亮度调节
- 蓝牙键盘,可作为一个蓝牙键盘控制电脑音量,ppt翻页,换歌等功能
功能展示
可以使用任意兼容QI标准的无线充电底座为其充电,市面上的充电底座几乎都可以
主界面显示天气时间温湿度,并且有利用lvgl8.1的gif解码器,有动图效果
天气界面
课程表界面
电脑性能监控界面
WIFI配网界面(有待完善)
亮度调节界面
蓝牙键盘界面
界面间通过一个滚动菜单选择,可以使用模拟器模拟界面
下面是项目之初(20210920)写的需求分析和设计文档
需求分析
智能花盆所需要实现的功能如下:
- 基本花盆的功能:下端有透气孔,可以承载一株多肉植物,形状:长宽65mm正方形,高度根据实际情况调整的白色花盆,尽量保证外形的美观
- 带锂电池,无线充电模块,可以通过type-c口或者无线充电口为电池充电,同时为花盆供电。在无外部电源的时候,可以通过电池为花盆供电
- 板载USB转串口芯片,便于烧写代码
- 板载SD卡插槽,用户可将信息文件放入SD卡,ESP32可以读取
- ESP32 通过wifi功能,通过网络获取天气,时间等信息,通过局域网获取电脑性能等信息,后期可考虑加入wifi配网功能
- 通过一块1.54寸 240*240分辨率显示信息,信息如下,每一行代表一个页面
- 当天时间和当天基本天气信息显示光照信息,检测当前是否充电,带罗小黑动画效果,通过晃动花盆可以切换动画效果
2. 三天基本天气信息
3. 电脑性能,内存占用等信息
4. 课程表,显示当天课程
5. 课程表,显示明天课程
6. 显示当前植物信息
- 当天时间和当天基本天气信息显示光照信息,检测当前是否充电,带罗小黑动画效果,通过晃动花盆可以切换动画效果
技术分析
首先硬件方面需要原理图PCB绘制和制作3D打印外壳技术,原理图PCB绘制采用立创EDA,外壳3D建模采用SW2020,去淘宝找厂家3D打印外壳
技能掌握情况:基本掌握
软件方面采用基于arduino的ESP32+LVGL框架,学习ESP32+LVGL基本使用,同时需要学习并移植XTRACK的页面生命周期管理API,根据需求分析需要掌握技术:LVGL移植到ESP32,ESP32连接到网络获取天气等信息,ESP32获取MPU6050数据,ESP32获取光敏电阻数据,LVGL文件系统移植,通过文件系统获取SD卡中信息,LVGL显示中文显示图片…
20211002 基本掌握
任务细分
原理图和PCB绘制,投板制版并测试
20210903 完成原理图和PCB绘制,已经投板,还未进入焊接阶段
20210910 所有原件均到货,完成PCB制作,并完成测试,CH340不应该用5V供电,MPU6050少接一个电容工作不正常,其他部分工作正常,排线接口位置别扭,现有板子暂时能用,但是还是要再投一版
20210915 新版本pcb投板并制作完成,测试完毕
已完成
外壳设计与制作
20210911 完成外壳设计工作
20211120 完成外壳3D打印
已完成
无线充电底座购买和无线充电模块测试
20210910 无线充电底座到货,现有无线接收模块谐振频率不对,电压达不到5V,准备购买兼容QI协议的无线接收模块
20211110 无线接收模块测试完毕
已达成LVGL移植到ESP32
20210817 完成LVGL移植
已达成
ESP32连接网络,获取天气,时间信息
20210829 实现通过网络获取天气信息
20210911 实现通过网络获取时间信息
已达成
ESP32连接网络,获取电脑性能信息
20210825 实现通过网络获取电脑性能信息
已达成
ESP32获取MPU6050和光敏电阻的数据
20210823 完成MPU6050数据获取
ESP32上SD卡操作与LVGL文件系统移植
20210830 完成SD卡操作与LVGL文件系统移植
已达成
LVGL中文和图片显示
20210906 完成LVGL中文和图片显示
已达成
LVGL的PC模拟器使用
20210906 初步完成LVGL的PC模拟器使用
已达成
LVGL移植XTRACK的页面生命周期管理API
2021821 完成页面生命周期管理API学习,还未完成移植
20210910 完成PC模拟器上菜单选择界面UI设计,发现XTRACK的页面生命周期管理暂时还用不到,先用纯LVGL开发
已达成
LVGL的PC模拟器设计UI交互页面
20210910 完成PC模拟器上菜单选择界面UI设计,接下来完成子页面的设计
20211120 完成所有子页面设计
已达成
UI交互页面移植到ESP32上,系统联调
20211125 完成
已达成
ESP32上LVGL按键输入功能移植
20210907 完成ESP32上LVGL按键输入功能移植
已达成
硬件架构设计
基于arduino的ESP32 学习笔记(一) 基于ESP32的智能花盆相关推荐
- 《ESP32 学习笔记》 之 ESP32 模拟 蓝牙键盘-Keyboard
目录 1.简介 2.硬件平台 3.软件平台 4.库文件 4.1 ESP32_BLE_Arduino 4.2 ESP32-BLE-Keyboard 5.示例程序 6.配对&测试 7.提升部分 1 ...
- ESP32学习笔记(七) 复位和时钟
ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...
- ESP32学习笔记(一) 芯片型号介绍
ESP32学习笔记(一) 芯片型号介绍 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介 ...
- 学习笔记之——基于深度学习的图像超分辨率重建
最近开展图像超分辨率( Image Super Resolution)方面的研究,做了一些列的调研,并结合本人的理解总结成本博文~(本博文仅用于本人的学习笔记,不做商业用途) 本博文涉及的paper已 ...
- 统计学习导论 - 基于R的应用 学习笔记1
统计学习导论 - 基于R的应用 学习笔记 Chapter 1 导论 统计学习是什么: 关于估计ƒ的一系列方法 Y=f(x)+ξ f:X 提供给 Y 的系统信息,是 x 的函数 ξ:随机误差项:均值为0 ...
- C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)【1】
C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)[1] 前言: 本笔记作为记录我从零开始学习C#的记录,为了unity的兴趣爱好自学一门C#,也算是寒假为自己充个电,希望这个寒假可以坚持下去 ...
- C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)【2】
C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)[2] 初识类和名称空间 前言: 本笔记作为记录我从零开始学习C#的记录,为了unity的兴趣爱好自学一门C#,也算是寒假为自己充个电,希望这 ...
- 【图神经网络】图神经网络(GNN)学习笔记:基于GNN的图表示学习
图神经网络GNN学习笔记:基于GNN的图表示学习 1. 图表示学习 2. 基于GNN的图表示学习 2.1 基于重构损失的GNN 2.2 基于对比损失的GNN 参考资料 本文主要就基于GNN的无监督图表 ...
- 12864液晶深入学习笔记_1——基于msp430g2553
12864液晶学习笔记 Created on: 2012-8-30 Author: zhang bin 这是我对12864的学习笔记,12864液晶功能很全面,使用起来也很方便,能够满足一般的研究和工 ...
- 计算机基础与程序设计(基于C语言)学习笔记
计算机基础与程序设计(基于C语言)学习笔记 前言 这是一个学习笔记 课程导入 在线学习工具:https://c.runoob.com/compile/11 为什么要学习程序设计 (1)存储程序和程序控 ...
最新文章
- Spring 整合 Junit
- 【AndroidSupport】LinearLayoutCompat
- Deep learning:二十二(linear decoder练习)
- Oracle 10.2.0.4 高负载 触发 ORA-00494 错误
- 《大数据算法》一1.2 大数据算法
- window连接不上linux ftp_xftp怎么连linux,教你xftp怎么连linux
- MySQL中int(5) 中的5代表什么意思?
- UE4学习-在虚幻编辑器中打开VS的三种方式
- 11. Android框架和工具之 Logger(调试代码)
- 设计一套基于NHibernate二级缓存的MongoDB组件(上)
- ThreadLocal T类的说明 转载 原作者 lujh99
- 连续被巨头青睐,SpaceX 部分新项目原型系 Rust 构建
- Spark SQL介绍和特点
- 栈的应用--马踏棋盘-贪心加栈
- 逐梦旅程:Windows游戏编程之从零开始 读后感
- win7字体安装_超强大PDF编辑软件 | Adobe Acrobat DC安装教程
- 概率论实验 04 - | 基于Matlab的匹配滤波器
- caffe 连接 matlab2016b
- 计算共形几何暑假课lecture1
- 无法访问该文件可能已损坏 或者服务器,win7系统打开xls文件提示无法访问文件可能损坏的解决方法...
热门文章
- Laravel框架使用maatwebsite/excel导出自动换行
- 数据中心机房有哪些等级,国内外的评级标准?
- 苹果照片未删却不见了_手机删除的照片如何恢复?不得不说这方法好!
- 解决无法设置默认打开方式
- 署任DS.ENOVIA.DMU.NAVIGATOR.V5-6R2017.GA.WIN64数字制造解决方案
- 【原创】三星、镁光、海力士内存颗粒命名规则摘录
- 并发编程之 ThreadLocal 源码剖析
- DZY Loves Chinese/DZY Loves Chinese II 题解
- 【node.js】一个基于HTPP的服务
- 【Spring Boot 2.0学习之旅-15】SpringBoot2.0响应式编程