注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
xusiwei1236的个人空间 https://home.eeworld.com.cn/space-uid-1305707.html [收藏] [复制] [分享] [RSS]
日志

【2022得捷创新设计大赛】知心相框——基于STM32H745的网络天气数码相框(最终版)

已有 954 次阅读2022-11-2 00:19 |个人分类:STM32


知心相框——基于STM32H745的网络天气数码相框

 

项目简介

宣传语:

是相框,也是日历; 可以放在床头,也可以摆在桌上; 记录你的欢乐,也懂得你的冷暖~

正式点的介绍:

电子相框是显示数码照片而非纸质照片的相框。与传统的纸质相框相比,它具有可自由打印,易于更新和可回收的优点。

在本项目中,我在STM32H745开发板上实现了基于RT-Thread和LVGL的网络天气数码相框。天气查询使用了高德的云服务,服务端是高德提供的开放接口,客户端是自己开发的。另外,由于ST和RT-Thread官方均没有对STM32H745上运行RT-Thread做支持,本项目也可以作为STM32H745上运行RT-Thread的基础版本。由于RT-Thread和LVGL的轻量性,该项目可以很容易地移植到类似的成本较低的硬件方案上。

本项目是 【赋能物联网——2022得捷创新设计大赛】 参赛项目,大赛链接:https://www.eeworld.com.cn/huodong/digikey_iot_contest_2022/?sid=102

作品帖首发于电子工程师世界论坛EEWorld.com,详情请移步论坛的大赛专区:https://bbs.eeworld.com.cn/forum-275-1.html

 

系统框图

硬件框图

整个作品中,硬件部分包括:

  • STM32H745-DISCO开发板,作为主控,同时使用了板上的按键、液晶触摸屏、eMMC、SDRAM等外设;

  • ESP-01S模组,用于实现Wi-Fi联网;

主控STM32H745片上硬件资源使用了GPIO、UART、I2C、LTDC、SDMMC、FMC,分别用于实现:

  • GPIO,用于支持用户按键;

  • UART,和ESP-01S模组连接,用于实现WiFi联网;

  • I2C,和触摸屏的触摸信号连接,用于支持屏幕触摸;

  • LTDC,和液晶屏LCD接口连接,用于支持图形用户界面(GUI)显示;

  • SDMMC,和eMMC存储芯片连接,用于支持文件系统,实现保存图片文件、配置信息;

  • FMC,和SDRAM芯片连接,用于扩展RAM空间,实现图片文件加载到内存;

 

 

软件框图

软件主要功能划分如下:

软件整体基于RT-Thread操作系统,使用了系统自带的一些组件和一些外加软件包。

业务功能通过几个线程实现:

  • 界面线程

  • 按键线程

  • 网络线程

  • 图片扫描线程(其实不用独立线程也可以,所以图上就没画出来了)

每个线程具体执行的工作如图中的文字描述;

 

功能说明

本节描述相关功能的软件实现原理。

 

基础软件移植

由于RT-Thread目前还不支持STM32H745芯片,这部分主要开发工作包括:

  • RT-Thread系统移植;

  • 基础外设支持(串口、片上SRAM、片上Flash);

本项目中 ,这部分主要工作在于移植了RT-Thread系统最小系统。

 

图形用户界面

图形用户界面主要基于开源的LVGL,以RT-Thread软件包形式集成到项目上。这部分除了LVGL开源代码外,本项目开发的部分有:

  • 添加了STM32H745-DISCO开发板的LCD屏幕对接LVGL;

  • 添加了STM32H745-DISCO开发板的触摸对接LVGL;

  • 添加了STM32H745-DISCO开发板的SDRAM芯片支持,用于支持显示png图片;

  • 添加了LVGL测试界面(benchmark、music、widgets);

  • 添加了作评的两个业务界面代码;

本项目中 ,这部分主要工作在于为LVGL开发了显示、触摸驱动、SDRAM支持,以及完成业务界面代码。

 

配置和照片保存

配置和照片保存,主要实现方式:

  • 为STM32H745-DISCO开发板的eMMC添加了RT-Thread块设备驱动;

  • 将eMMC块设备格式化为FATFS格式;

  • 添加了开机自动挂载eMMC到/mnt目录;

  • 添加了FlashDB软件包,用于支持用户配置保存;

  • 创建了/mnt/kvdb目录,用于保存用户配置的kvdb文件;

  • 创建了/mnt/img目录,用于保存照片;

本项目中 ,这部分主要工作在于为eMMC开发了RT-Thread驱动,以及实现了业务数据、图片文件的存储。

 

联网和天气查询

联网和天气查询,主要实现方式:

  • 添加了搜狐IP查询,实现查询当前公网IP地址;

  • 添加了高德定位,实现根据公网IP地址定位大概位置(可以精确到行政区县级别);

  • 添加了高德天气,实现根据所在区县查询当前天气;

  • 开启了RT-Thread的SAL组件、at_socket组件,用于和at_device对接;

  • 添加了at_device软件包,用于构造esp8266 AT命令,以及解析esp8266 AT的输出;

  • 配置了UART2,用于支持ESP-01S模组的输入输出;

本项目中 ,这部分主要工作在于开发了搜狐IP查询、高德定位、高德天气客户端代码,以及实现了WiFi联网等相关业务的实现。

 

图片上传到设备

图片传到设备,主要实现方式:

  • 通过WiFi网络,使用TFTP协议;

  • 设备端使用,RT-Thread的netutils软件包,提供了TFTP服务的实现,只需要打开相应配置即可;

  • PC端借助已有的TFTP客户端(如Linux的tftp命令,Windows MobaXterm也有tftp命令);

本项目中 ,这部分主要工作在于大量调试工作。

 

连接ESP-01S模组

开发板硬件修改

默认情况下:

开发板的STMOD#2连接的是PB15(通过SB13零欧电阻),STMOD#3连接的是PI2(通过SB11零欧电阻):

需要修改为:去除SB11和SB13两个零欧电阻,短接SB12和SB16两个空位;

 

修改后实物图:

 

模组连接方式

前面已经介绍了,模组用的ESP-01S(很容易买到)。

连接方式如下图:

(图中右下角黑色的是ESP-01S模组,蓝色是开发板附赠的STMod扩展板)

 

项目链接

源码仓库: javascript:;

 

效果演示

 

演示视频: javascript:;

 

项目总结

感谢得捷赞助本次大赛。

项目开发初期决定使用RT-Thread实时操作系统(RTOS)和LVGL图形用户界面(GUI)框架,不是ST官方CubeMX工具已经支持的FreeRTOS和STemWin,同时RT-Thread官方也尚未支持STM32H745芯片和开发板。因此,整个开发过程中,底层驱动的支持部分的难度和工作量均比预想的要大。

因为官方的CubeMX工具支持的FreeRTOS中所有片上硬件资源以及板载外设均已经支持了,而且经过了官方开发人员的测试验证。使用RT-Thread和LVGL,所有片上硬件和板上外设驱动需要自己移植、开发、验证。期间因为硬件功能调试,查阅了大量资料,花费了很多时间和精力。

另外,也正是因为使用了RT-Thread和LVGL,这一套非官方支持的基础技术架构。顺便复习了很多硬件相关的知识点,同时实操了RT-Thread的驱动开发,这也是过程中收获或者收益最大的内容。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章