- 2024-01-23
-
回复了主题帖:
【得捷电子Follow me第4期】终极任务一:DigiKey电子元器件价格及库存监视器(上)
帮主牛逼,前端后端设备端 一把梭
- 2024-01-21
-
回复了主题帖:
【DigiKey“智造万物,快乐不停”创意大赛】墨水屏天气看板
作品全部源码已经开源: https://gitee.com/swxu/eink_weather_board.git
- 2024-01-19
-
发表了主题帖:
【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 为整体入口,管理其余的各种类。
三、各部分功能说明
(各部分实现的功能说明及讲解,以图文结合的展示)
各部分功能,具体实现方式如下:
环境监测功能
硬件基于开发板上的SHT30数字温湿度传感器,软件基于M5EPD 软件包里面的SHT30类库。
时间日期功能
硬件基于开发板上的BM8563 RTC芯片,软件基于M5EPD 软件包里面的BM8563类库。
天气信息功能
硬件基于ESP32的WiFi联网能力,软件基于Arduino的HTTPClient库、ArduinoJson库,实现了使用HTTPClient库向高德云服务发送请求、接收响应,使用ArduinoJson库解析响应数据。
自动联网功能
基于ESP32主控的WiFi联网能力、SD卡槽、SD卡,实现了解析SD卡上的json配置文件,使用其中配置的WiFi SSID、密码连接热点。
自动定位功能
基于ipify.org的公网IP查询服务,实现查询设备的公网IP;基于高德IP地址定位服务,实现IP定位。
界面显示功能
基于开发板上的墨水屏,实现界面显示,基于M5EPD的M5EPD_Canvas实现界面绘制、字体绘制等功能。
最终使用到的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
固件下载脚本
五、作品功能演示视频
(视频简介+链接,视频链接:可上传到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文档:
七、参考链接
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
-
上传了资料:
【DigiKey“智造万物,快乐不停”创意大赛】墨水屏天气看板