【DigiKey“智造万物,快乐不停”创意大赛】墨水屏天气看板
[复制链接]
本帖最后由 xusiwei1236 于 2024-1-19 14:55 编辑
【DigiKey“智造万物,快乐不停”创意大赛】墨水屏天气看板
一、作品简介
(设计名称、作品照片、项目用到的板卡、芯片、模块等介绍,作品功能介绍等)
作品名称: 墨水屏天气看板
所用板卡: M5Paper
作品最终效果图:
1.1 作品功能简介
实现的功能:
-
显示当前所在环境的温度、湿度
-
显示当前所在城市的实时天气
-
显示当前所在城市的最近四天天气
-
硬件RTC计时
1.2 所用板卡简介
M5Paper板卡技术规格参数:
-
主控芯片: ESP32
-
内置存储:16M Flash,8M PSRAM
-
显示屏: 4.7寸 960x540分辨率 (驱动IC:IT8951E)
-
触摸屏: 电容触摸(驱动IC: GT911)
-
传感器: SHT30 数字温湿度传感器(I2C)
-
RTC芯片: BM8563 上海贝岭实时时钟/日历芯片
-
EEPROM: FM24C02 2Kbit(256字节)
-
按键:多功能按键(支持上下拨动、按下)
-
供电:1150mAh锂电池、USB供电
-
扩展接口:TF卡槽、HY2.0-4P
M5Stack出品的板子,一贯非常精致:
板子背面把各种资源和主控芯片的连接都标记的非常清楚了。
二、系统框图
(设计思路、系统软硬件介绍及实现框图,以图文结合的展示)
项目整体框图如下:
本项目主要实现了六大功能:
-
环境监测功能
-
时间日期功能
-
天气信息功能
-
自动联网功能
-
自动定位功能
-
界面显示功能
软件代码主要分为如下几个类:
-
AppMainController 应用代码,MVC的控制器
-
AppMainView 应用代码,MVC的视图,界面绘制逻辑
-
AppConfigStore应用代码,配置文件解析;
-
HalRtcDevice 设备抽象,封装了RTC操作;
-
HalSensorDevice 设备抽象,封装了传感器操作;
-
AmapLocationService 定位服务,封装了高德定位服务和ipify.org公网IP地址查询;
-
AmapWeatherService 天气服务,封装了高德实时天气和预报天气服务。
整体使用了MVC设计模式,AppMainController 为整体入口,管理其余的各种类。
三、各部分功能说明
(各部分实现的功能说明及讲解,以图文结合的展示)
各部分功能,具体实现方式如下:
-
环境监测功能
-
时间日期功能
-
天气信息功能
-
自动联网功能
-
自动定位功能
-
界面显示功能
最终使用到的Arduino库如下:
四、作品源码
(可下载的项目源码及说明,源码请上传到EEWorld下载中心,下载链接粘贴到作品文档和作品提交帖中)
下载链接: https://download.eeworld.com.cn/detail/xusiwei1236/630820
源码文件简介:
文件名 |
功能 |
eink_weather_board.ino |
Arduino脚手架(Sketch)程序,提供init和loop函数的实现 |
app_config_store[.h/.cpp] |
AppConfigStore类,实现了基于json文件的配置项的存放和读取; |
app_main_controller[.h/.cpp] |
AppMainController类,MVC模式中的控制器,用于管理其他几个类对象,以及控制视图绘制; |
app_main_model.h |
界面所需的基准数据类型,MVC模式中所谓的“模型(Model)”类型定义 |
app_main_view[.h/.cpp] |
AppMainView类,实现了界面绘制逻辑,MVC模式中的“视图(View)” |
hal_rtc_device[.h/.cpp] |
HalRtcDevice类,实现了RTC芯片操作的封装; |
hal_sensor_device[.h/.cpp] |
HalSensorDevice类,实现了SHT30温湿度传感器的封装; |
webapi_amap_base[.h/.cpp] |
高德云服务基础数据类型定义; |
webapi_amap_location[.h/.cpp] |
AmapLocationService类,高德定位云服务和ipify.org公网IP云服务的封装; |
webapi_amap_weather[.h/.cpp] |
AmapWeatherService类,高德天气查询云服务的封装; |
webapi_http_utils[.h/.cpp] |
实现HTTP请求工具函数。 |
compile.sh |
源码编译脚本 |
download.sh |
固件下载脚本 |
eink_weather_board.zip
(18.54 KB, 下载次数: 0)
五、作品功能演示视频
(视频简介+链接,视频链接:可上传到EEWorld大学堂,观看链接粘贴到作品文档和作品提交帖中,也可直接上传到作品帖中)
视频链接:【DigiKey“智造万物,快乐不停”创意大赛】墨水屏天气看板 - EEWORLD大学堂
六、项目总结
本次项目的硬件上,使用了M5Stack出品的M5Paper开发板。这款开发板制作非常精致,有外壳、按键、说明书,基本上是一个准产品级别的了。同时,板子内部也集成了非常多的功能,得益于此,本次作品硬件上完全无需额外扩展即可完成功能(M5Paper也提供了两个扩展接口)。
本次项目的软件上,初期使用Arduino IDE作为开发环境,用的是2.x版本。后来,因为字节更习惯于使用VSCode,切换成VSCode + Arduino CLI的方式进行开发了。总体下来,有两点感受非常深刻。
一方面,Arduino CLI编译、烧录 ESP32非常方便,因此使用 VSCode + Arduino CLI完全可行(可能有网友知道VSCode有Arduino插件,但是插件不支持Arduino 2.x)。
另外一方面,使用C++开发嵌入式软件,开发效率也非常高。除了编译速度慢一点之外,开发效率可以媲美Python了;但同时具有C的执行效率,开发效率又比纯C高很多。总体而言,使用C++开发嵌入式软件,能够完美兼顾在执行效率和开发效率。如果非要说C++开发的缺点的话,就是如果不太熟悉的话,开发起来会比较费头发。
项目Word文档:
digikey_iot_contest_2023_xusiwei.doc
(4.71 MB, 下载次数: 4)
七、参考链接
-
M5Paper文档首页: https://docs.m5stack.com/en/core/m5paper_v1.1
-
M5Stack系列Arduino开发环境搭建: https://docs.m5stack.com/en/quick_start/arduino
-
M5Paper快速入门指南(hello-world): https://docs.m5stack.com/en/quick_start/m5paper/arduino
-
ArduinoJson库: https://arduinojson.org/
-
高德开放平台-IP定位: https://lbs.amap.com/api/webservice/guide/api/ipconfig
-
高德开放平台-天气查询: https://lbs.amap.com/api/webservice/guide/api/weatherinfo
|