启明智显分享|4.3寸智能串口屏应用于充电桩

news2025/8/6 2:24:38

据数据显示,全球新能源汽车销量正大幅度增长,全球汽车电动化渗透率也由0.8%增长到7.74%,这不仅意味着汽车产业电动化浪潮的来临,也证实了我国新能源汽车行业正处于高速发展状态。随着电动汽车销售量与保有量的迅速增长,充电需求也持续攀升,在新基建政策的加持下,充电桩建设步入正轨并重回高速发展期。充电是新能源汽车补能的主流方式,也是构成新能源车产业的重要一环,充电问题被认为是解决电动汽车推广的“最后一公里”问题,对于推广发展新能源车来说,解决充电桩覆盖面问题是至关重要的。

 

充电桩行业在大量充电需求的推动下完成了转型,各企业应在充电桩建设方面更多衡量终端用户体验感,就目前来说,充电桩行业门槛较低,产品标准化程度较高,供应商数量多,存在着巨大的市场竞争力。配备智能屏成为大部分企业提高充电桩产品市场竞争力的选择。

为此,启明智显作为领先的智能屏解决方案提供商,特推出ZX4D30NEO1S串口屏应用于充电桩智能显示。ZX4D30NEO1S采用 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz,同时集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE)。用一颗芯片替代原有的MCU主控芯片,在满足设备联网及彩屏显示的同时省“一颗芯”的成本。给充电桩行业带来极具成本优势、高性能和低功耗的解决方案。

ZX4D30NEO1S智能串口屏介绍:

ZX4D30NEO1S智能串口屏选用4.3寸分辨率为 480(RGB)×272 全视角IPS工艺彩屏,能够实时显示二维码、充电量、充电剩余时间、输出功率、使用时间、以及异常警报提示,充电使用情况随时掌握,让充电变得更安全;硬件集成WIFI、蓝牙、RS485、串口等,支持OAT远程快速升级;支持通过串口外接刷卡器;

 

快速开发平台:8ms

8ms平台(//8ms.xyz)采用B/S架构并提供UI及功能层完整SDK,用户在平台开发UI,无须环境搭建,直接调用API接口,快速完成开发业务交互逻辑,降低学习成本;功能层封装了各类连接和功能,同时支持自行添加各类型驱动,用户只需要专注于自身产品的业务逻辑和应用协议即可,大大节省了客户的开发门槛和时间。

方案参数说明

开发说明:

编译SDK
加载对应开发板型号
Linux环境下

bash load.sh 
1): WT32_SC01 
2): WT154_C3SI1 
3): WT154_S2MI1 
4): WT_86_32_3ZW1 
5): WT280_S2MX1 
6): WT240_C3SI1 
7): WT_0_S2_240MW1 
8): ZX3D50CE02S_USRC_4832 
9): ZX3D95CE01S_AR_4848 
10): ZX3D95CE01S_UR_4848 
11): ZX4D30NE01S_UR_4827 
12): ZX4D60_AR_4896 
13): ZX2D10ECS_cESCP01
1
Set to 1-WT32_SC01
--- sdkconfig done

Done
Windows环境下
直接双击load_windowns.bat,选择对应的开发板机型

本地编译、烧录
idf.py build
idf.py flash

固件烧录

进入烧录模式

ESP32通过UART烧录时需要连接VCC、GND、EN、IO0(ESP32-C3为IO9)、TXD、RXD共计六个管脚,使用市面上大多数适配ESP32烧录设备时硬件会自动操作IO0、EN进入烧录模式。使用未适配的烧录设备时可以将IO0接地,通过控制EN重启芯片进入烧录模式。

烧录本地开发工程

正确连接模组、开发板后使用idf烧录

idf.py flash
  • 部分环境下可能需要使用参数 -p 手动指定串口号或 -b 指定波特率。

烧录本地固件

1.获取乐鑫flash_download_tool
2.选择对应的芯片型号和接口,选择ESP32S3

3.选择对应的烧录镜像并输入对应烧录地址

4.烧录完成后手动复位开发板

 

开发流程

第三方开发板的适配

若使用启明智显提供的开发板时可以直接通过加载配置文件的形式完成开发板各外设的初始化。在使用第三方开发板时需要按照 typedef void (*qmsd_board_init_cus)(qmsd_screen_rotation_t dir); 的函数指针定义自行实现相关初始化以及和UI库的对接。之后使用void qmsd_set_board_init_cus(qmsd_board_init_cus init_cus);来指定使用第三方的初始化方法。

添加8ms生成的UI代码

1.在8ms平台编译UI工程


2.确认工程编译成功

3.下载8ms源码

4.删除{sdk_dir}/components/qmsd_ui目录,将下载的源码解压至对应目录
5.参照上述章节进行编译和烧录

添加自定义逻辑代码

和UI相关的代码可以添加至 {sdk_dir}/components/qmsd_ui/ui/qmsd_internal_ui_cb.c中的各控件的回调函数中,也可以借助8ms的自定义回调将时间参数传递至{sdk_dir}/main/control/qmsd_ui_cb.c 中的qmsd_ui_cb中进行处理。值得注意的是这些函数正常情况下只会运行在GUI线程中,在这些函数中添加耗时或阻塞任务会导致UI性能下降或卡顿。 

跨线程的UI调度

当需要跨线程修改UI线程内部资源时需要使用互斥锁保证线程安全,可以使用以下api获取、释放互斥锁。

int qmsd_gui_lock(uint32_t timeout)
void qmsd_gui_unlock(void)

 

API指南

8ms相关

初始化页面列表
void qmsd_screen_list_init(int max);

注册页面
void qmsd_screen_register(lv_obj_t* obj,const char* id);

移除注册页面
void qmsd_screen_remove(const char *id);

为指定obj设置识别ID
void qmsd_obj_set_id(lv_obj_t* obj,const char *id);

打印当前已注册的所有页面
void qmsd_screen_print();

根据注册id搜索页面
lv_obj_t* qmsd_search_screen(const char *id);

根据注册id搜索控件
lv_obj_t* qmsd_search_widget(const char *id);

获取对应名称的图片资源
lv_img_src_t *qmsd_get_img(const char *w_name);

获取对应名称的字体资源
lv_font_t *qmsd_get_font(const char *w_name);

向页面的所有子控件发送事件
void qmsd_send_event_to_chill(lv_obj_t* obj, lv_obj_t* prev, qmsd_event event)

控制协议相关

  • 将控制协议通过文本消息发送至Ui线程内部
    int qmsd_ctrl_str(const char *json_str);

  • 利用互斥锁等待UI线程处理间隔解析并执行相关操作
    char *qmsd_ctrl_str_sync(const char *json_str);

  • 在GUI线程内部解析并处理控制协议,仅限在GUI线程内部使用
    char *qmsd_ctrl_str_gui(const char *json_str);

初始化

  • GUI初始化,custom_fb_size,自定义LVGL buffer大小,为0,表示使用默认参数,dir为屏幕方向(参看qmsd_screen_rotation_t的定义)
    esp_err_t qmsd_gui_init(uint32_t custom_fb_size, uint8_t dir);

  • 存储初始化,初始化qmsd_storage的NVS分区
    void qmsd_storage_init(void);

  • 初始化消息队列,一般用于控件回调给主线程发送消息
    int qmsd_main_msgque_init(int msgmax);

  • 通知链初始化,qmsd_api中用到很多通知链来通知事件
    int qmsd_notifier_register(struct qmsd_notifier_block *n);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux线程互斥

文章目录多线程执行的问题Linux线程互斥要解决以上问题&#xff0c;需要做到三点&#xff1a;多线程执行的问题 先看一段代码 int tickets10000;void* buytickets(void* args) {char* name (char*)args;while(1){if(tickets>0){cout<<name<<"] tickets:…

m基于数字锁相环DPLL的分频器simulink仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 随着数字电路技术的发展&#xff0c;数字锁相环在调制解调、频率合成、FM 立体声解码、彩色副载波同步、图象处理等各个方面得到了广泛的应用。数字锁相环不仅吸收了数字电路可靠性高、体…

C++11 互斥锁

目录 互斥锁 2.1 独占互斥量std::mutex std::mutex使用Demo 2.2 递归互斥量std::recursive_mutex 死锁demo 使用std::recursive_mutex递归锁 2.3 带超时的互斥量 std::timed_mutexDemo 2.4 lock_guard和unique_lock的使用和区别 unique_lock,lock_guard的使用 unique…

【数据结构】栈和队列OJ练习

文章目录1. 栈1.1 栈的概念及其结构1.2 栈的实现Stack.hStack.cTest.c2. 队列2.1 队列的概念及其结构2.2 队列的实现Queue.hQueue.cTest.c3. 栈和队列面试题3.1 括号匹配问题3.2 用队列实现栈3.3 用栈实现队列3.4 设计循环队列1. 栈 1.1 栈的概念及其结构 &#x1f436; 栈的…

《深度学习进阶 自然语言处理》第六章:LSTM介绍

文章目录6.1 RNN的问题6.1.1 RNN的复习6.1.2 梯度消失和梯度爆炸6.1.4 梯度爆炸的对策6.2 梯度消失和LSTM6.2.1 LSTM的接口6.2.2 LSTM层的结构6.2.3 输出门6.2.4 遗忘门6.2.5 新的记忆单元6.2.6 输入门6.2.7 LSTM的梯度的流动6.3 使用LSTM的语言模型6.3.1 LSTM层的多层化6.3.2 …

乐华娱乐欲重返上市:毛利率走低,上半年利润下滑,韩庚为股东

撰稿|汤汤 来源|贝多财经 宣布暂缓香港IPO计划不到3个月&#xff0c;乐华娱乐&#xff08;HK:02306&#xff09;欲再度回归。 11月17日&#xff0c;港交所披露的信息显示&#xff0c;乐华娱乐集团&#xff08;YH Entertainment Group&#xff0c;简称“乐华娱乐”&#xff0…

谈谈主数据管理的概念、原则、标准和指南

1主数据的定义和关键概念 1.1什么是主数据 主数据是不同业务领域的公共信息,并在多个业务流程中使用。主数据通常描述参与事务或事件的事物。示例包括有关课程、学生或雇员的信息。 参考数据通常用于对其他数据(如状态代码)进行分类,或与组织边界以外的信息(如国家列表)相…

ctfhub -afr -1 2 3

afr-1 打开题目链接 默认的传参数据为 ?phello 更改一下试试看 ?p111 无回显 ?pflag 回显了 no no no 想到了 php任意文件读取 ?pphp://filter/readconvert.base64-encode/resourceflag 回显出数据 应该是base64 拿去解码 得到flag afr-2 打开题目链接 查看源代码…

【第一阶段:java基础】第8章:面向对象编程高级-1(P333-P393)static、main、代码块、单例设计模式

本系列博客是韩顺平老师java基础课的课程笔记&#xff0c;B站&#xff1a;课程链接&#xff0c;吐血推荐的一套全网最细java教程&#xff0c;获益匪浅&#xff01; 韩顺平P333-P393类变量和类方法类变量/静态变量类方法/静态方法理解main方法语法代码块注意事项好处细节单例设计…

Java接口

什么是接口&#xff1f; 在Java中&#xff0c;接口可以看成是多个类的公共规范&#xff0c;是一种引用数据类型。 使用关键字interface来定义接口 interface IRunning {void run(); }在创建接口时&#xff0c;接口的命名一般以大写字母I开头&#xff0c;接口的命名一般使用形…

【数据结构】栈和队列

文章目录栈和队列栈栈的概念及结构栈的实现初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数判断栈是否为空销毁栈括号匹配问题队列队列的概念及结构队列的实现初始化队列队尾入队列对头出队列获取队头元素获取队尾元素销毁队列判断队列是否为空栈和队列 栈 栈的概念及结构…

带你初识微服务

博客主页&#xff1a;踏风彡的博客 博主介绍&#xff1a;一枚在学习的大学生&#xff0c;希望在这里和各位一起学习。 所属专栏&#xff1a;SpringCloud 文章创作不易&#xff0c;期待各位朋友的互动&#xff0c;有什么学习问题都可在评论区留言或者私信我&#xff0c;我会尽我…

同花顺_代码解析_技术指标_L

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 LH_LYDG LH_猎鹰歼狐 LHBLX LHSJ LHTZ LHXJ LH猎狐雷达 LOF净值 LWR LH_LYDG 猎鹰渡关&#xff08;检测大盘顶部&#xff09; 指标用法&#xff1a; &#xff08;1&#xff…

进程间的信号

目录 一.信号入门 1.1概念 1.2信号发送与记录 1.3信号的处理方式 二.产生信号的方式 2.1通过终端按键产生 2.2通过系统函数向进程发信号 2.3由软件条件产生信号 2.4由硬件异常产生信号 三.阻塞信号 3.1信号相关概念 3.2信号在内核的表示 3.3sigset_t&#xff1a; 3.4…

工具及方法 - 使用Total Commander来查找重名文件

我只是一个Total Commander的轻度使用者&#xff0c;主要使用的是打开多个窗口&#xff0c;可以方便的以标签形式切换。 还有&#xff0c;这个软件是免费的&#xff0c;只是免费版打开时多一步&#xff0c;要输入个数字验证。 今天在使用一个SDK时&#xff0c;要包含进很多头文…

论文阅读笔记《Locality Preserving Matching》

核心思想 该文提出一种基于局部保持的特征匹配方法&#xff08;LPM&#xff09;。其核心思想是对于一个正确匹配点&#xff0c;其邻域范围内的其他匹配点与对应目标点之间的变换关系&#xff0c;应该和正确的匹配点保持一致&#xff0c;而错误匹配点&#xff0c;则应该有较大的…

第一章《初学者问题大集合》第6节:IntelliJ IDEA的下载与安装

当完成了Java开发环境之后&#xff0c;各位读者就可以开始编写第一个Java程序了。可是应该在哪里写程序呢&#xff1f;早期的开发者们都是用纯文本编辑工具编写Java程序&#xff0c;并且在命令行窗口中编译和运行Java程序。时至今日&#xff0c;我们早已远离了那个程序开发的“…

CentOs程序环境准备

1. MySQL的安装启动 选择指定操作系统指定版本的mysql进行下载 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/5.7.html#downloads 选择复制下载链接 回到终端&#xff0c;执行此命令下载 wget https://dev.mysql.com/get/Downloads/MyS…

举个栗子~Tableau 技巧(244):用和弦图(Chord diagram)呈现数据关系

关于和弦图 和弦图&#xff08;Chord diagram&#xff09;常用来表示数据之间的相互关系。数据点沿着圆圈分布&#xff0c;通过点和点之间相互连接的弧线来呈现相互之间的关系。和弦图从视觉上来说比较美观&#xff0c;数据呈现又很直观&#xff0c;所以深受数据粉喜爱。 之前…

【Linux初阶】Linux调试器-gdb使用 | gdb的 l/b/info/d/r/n/s/bt/finish/p/(un)display/q

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;gdb使用相关背景知识&#xff0c;gdb的使用&#xff08;打断点、查断点、消断点、调试运行、查看对应变量&…