查看: 1478|回复: 1

[LPC双核挑战赛] 基于双核心的智能电子标签

[复制链接]
  • TA的每日心情
    开心
    2019-7-18 16:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    18
    最后登录
    2019-11-1
    发表于 2018-6-10 17:31:23 | 显示全部楼层 |阅读模式
    由于目前在外出差, 图片,视频, 代码连接后面补上. 先把正在使用的电脑上有的内容贴上来.

    图片/视频演示
    [暂缺,后面补全


    设计的目的/功能概述
    很多场合都需要标签,常见的场景有商品出售,展览馆,图书室等等.标签对物品进行展示,向用户进行介绍.除了标明该物品的属性,另外还有一些信息需要传递,如该物品的售价,来源等等.目前主要使用的是纸质,采用印刷文字与条形码/二维码的形式.也有些场合使用LCD/OLED等显示屏幕.如果使用纸质,则更改内容不方便,且不能显示动态内容(如该物品的实时打折信息);如果使用LCD/OLED之类的显示屏,维护起来不方便.其原因在于LCD/OLED这类显示器维持显示需要很多能量,使用电源直接供电或者使用电池都需要频繁的维护操作.Eink材质的显示器作为折中方案可以解决上述的矛盾.Eink的内容可以动态更新,且如果不更新显示内容则无需费电.如果电源管理做的足够好,使用电池能满足很长时间的使用.维护起来要方便得多.
    但是Eink材质目前并非无缺点:
    1.  显示刷新慢,要完成一个页面的刷新,要1到数秒的时间.但是这对于所要应用的领域并非大问题.因为这类场合,信息量并不大.如价格/打折等信息,往往几天才需要更新一次.
    2.  色彩不丰富,目前主要是黑白材质.目前已经有稍为丰富的新型技术.但是对于标签领域,这一点也并非大问题.在更为丰富的材料普及之前,可以通过平面设计进行弥补.
    3.  相对于纸质印刷介质,Eink还比较贵.这一点相信随着工艺与产量的发展,也会找到用户能接受的平衡点.
    综合考虑之后,本设计的目标为一个可网络更新内容的电子标签.
    E2271CS021.JPG


    图 要使用的Eink显示模块


    2.71_EC_1_web_b.png

    图 内容参考
    LPC54114参数/特点/开发
    这个设计使用LPC54114来实现主要考虑到该芯片双核心的特点.
    Eink刷新时比较耗时间,适合使用低计算能力/低功耗的内核CortexM0+处理.网络/内容处理的部分适合使用高计算能力的内核Cortex M4处理.
    其余功能放在任何核心上都可以,根据需要进行分配.
    由于双核心都是CortexM内核系列,开发工具上比较灵活.此项目选择ARM MDKKeil.调试器直接使用板子上的缩减版本Jlink.

    今天天气不错!签到!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-18 16:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    18
    最后登录
    2019-11-1
     楼主| 发表于 2018-6-10 17:36:07 | 显示全部楼层
    软件/硬件架构
    功能结构
    software_arch.png
    Cortex M0+的任务:
    1.  显示刷新
    2.  休眠唤醒管理,控制CM4的唤醒与休眠
    3.  文件系统管理(无网络条件下显示上次或者默认的内容,从文件系统读取)
    4.  Cortex M0+内核通过内部时钟间歇性休眠/唤醒
    Cortex M4的任务:
    1.  通过网络模块隔一段时间向网络应用请求是否有新内容需要下载,这个间隔由CortexM0+内核来控制.
    2.  接收串口命令,如配网,测试,等等.
    3.  Cortex M4内核在完成一次认务后自动休眠.任务包括:响应shell的命令,查询云端,下载并发送内容至Cortex M0+等等.总之CortexM4执行任务采取被动式,有活干就去干活,无活干就直接Sleep.


    硬件连接
    hardware_archi.png
    实现与代码
    主要的代码为EInk刷新与网络内容获取.
    Eink刷新
    大致顺序是先将内容放到COG控制IC的内存(这个内存(memory)可以是图像buffer,SRAM或者Flash)中,接着给COG驱动上电并且初始化COG驱动,然后按照特定的显示数据格式将存储在IC内存中的内容发送到EPD(E-Paper Dispaly)显示.
    更新EPD显示内容的三种方式:
    · 4步;
    · 2 步;
    · 部分更新;
    其中4步更新是最耗时的,但是显示效果也最好(残影少).2步更新是省去了其中两步,部分更新就是省去了大多数操作.如果原来显示的内容与新内容相差过大,则需要用4步更新,否则酌情减少步骤.当然所需要的更新时间与显示效果是一个Trade-Off关系,需要程序员折中处理.一般的电纸书应用这样做的:第一次显示某本书使用4步更新,之后每页纸进行部分更新,若干页后进行2步更新,过了更长的阶段后再进行一次4步更新.比较细节的部分请参阅模块文档或后文的代码连接.
    网络端内容服务
    云端部分的代码本人暂时使用一个Python的http server替代.如果内容文件被替换并成功下发,则在配置文件中写下该内容文件的MD5值.下次请求内容时,检查内容文件与配置文件中的MD5值,如果有不同则表明内容文件已经更新可以下发.否则响应”no freshcontent”.
    目前没有做推送服务,所有的通信要由板子端发起.
    代码共享连接
    [暂缺,后面补全
    后记
    此次开发设计还有很多想要做的内容没有全部完成,但是使用双核心或者多核心的芯片开发IoT应用会是今后的趋势.原因在于某些任务需要频繁的IO操作,某些任务需要迅速做完以便多休眠.如果要在功能体验与功耗上做一个折中平衡,异构多核心处理器是比较好的选择.

    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-14 18:58 , Processed in 0.114806 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表