xusiwei1236

  • 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“智造万物,快乐不停”创意大赛】墨水屏天气看板

统计信息

已有74人来访过

  • 芯积分:300
  • 好友:3
  • 主题:15
  • 回复:47

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言