概述
本文分享自中移OneOS微信公众号《智能门锁开发全流程》,作者:小O。
<<<Python是计算机中一门公认的简单并且容易学习的语言,它的语法简单友好,拥有丰富的库资源和优质的文档,有强大而活跃的社区支持,一些非计算机专业领域的人都选它作为入门语言;而嵌入式软件开发对知识的综合性要求比较高,入门难度大,不仅需要有扎实的计算机基础知识和硬件基础能力,还需要掌握复杂难懂的汇编、C语言和各种芯片平台调试环境的使用,许多小伙伴想入门却无从下手。Python和嵌入式软件开发本来毫无关联,但是MicroPython出现了,并且将两者很好的结合了起来。
“MicroPython”顾名思义就是“微型Python”, 它是Python3的一种轻量级实现,包含了Python的一部分标准库,并且针对微控制器等资源受限的运行环境进行了优化。MicroPython目前在GitHub上开源维护,遵从最开放的MIT开源协议。由于上手难度低,基于MicroPython的应用五花八门,有智能手表、电子徽章、电机控制、网关、智能车等。
OneOS目前也支持MicroPython组件,可通过配置工具很方便的启用该组件,目前万耦开发板已经全面实现了MicroPython适配,感兴趣的同学可以在万耦开发板上进行MicroPython的体验。>>>
近日,小O用MicroPython进行了一场实战——基于MicroPython的智能门锁方案开发。闲话少说先看成果:
点击跳转演示视频
以上这些功能全部是使用MicroPython开发的,通过调用MicroPython提供的功能接口就能实现硬件控制,应用开发工程师无需深入关注底层硬件原理,只需要了解对应的功能接口,精力集中在业务逻辑上,就能快速开发出一款这样的产品,产品开发的门槛又降低了一些呢。
下面小O就带大家一起深入了解下实现的过程
点击跳转视频链接
整体方案简介
本方案为云管端一体化的解决方案。
云:通过LwM2M协议接入中移物联网OneNET平台,OneNET后端可以将数据推送至业务平台。而且本方案支持中移物联网安全体系,业务平台可以调用安全服务平台的能力进行数据的加解密和签名验签。
管:终端设备通过NB-IoT网络接入物联网。
端:终端支持指纹、密码、蓝牙、门卡开锁方式,内置NB模组,eSIM芯片和插拔卡可以二选一,支持语音播报、温湿度监测、防拆监测、门状态监测等功能,待机电流小于50uA。小程序支持状态查看、配置下发和蓝牙开锁功能,可进行二次开发。
硬件方案
终端硬件采用HC32F460作为主控芯片,模组使用M5310-A,其他器件如指纹模组、传感器等也采用智能门锁行业主流器件,硬件成本与市场产品基本一致。硬件设计上采用核心板+扩展板的形式,各模块功能都可以作为可选功能进行裁剪。
软件方案
本方案软件分为两个部分:固件和应用脚本。
固件开发
固件部分以OneOS+MicroPython为基础,针对各个功能模块封装了MicroPython层外设功能接口,以machine和device两个库的形式提供。
MicroPython的官方网站上给出了其支持的标准库信息,包括JSON库、正则表达式库、SSL/TLS库、数学函数库等,这些库在固件开发的过程中也可以根据应用需求进行灵活裁剪,有兴趣的朋友可以参考:(https://os.iot.10086.cn/doc/micropython/4.libraries/micropython%20standard%20libraries/micropython%20standard%20libraries.html)
Machine库主要是针对芯片片上硬件资源能力的一种封装,如PIN、IIC、UART、PWM等。下面以IIC为例,向大家展示一下相关的接口功能。
class machine.I2C
machine.I2C 类是 machine模块下面的一个硬件类,用于对 I2C 的配置和控制,提供对 I2C设备的操作方法。
构造函数
实例方法
各个方法的具体使用方法可以参考OneOS官网
(https://os.iot.10086.cn/doc/micropython/4.libraries/micropython%20specific%20libraries/machine/I2C/I2C.html)
device库是针对板级硬件能力的封装,如温湿度传感器采集、电池电压监测、指纹采集比对、电机控制等。我们针对一些常用的板级功能,封装了一些类,但这些类在一个项目中不会全部用到,因此需要在固件的制作过程中根据硬件设计,灵活调整。下面以电机为例,向大家展示一下相关的接口。
class device.Motor
device.Motor 类是device模块下面的一个硬件类,用于对电机驱动模块的配置和控制,并提供对电机驱动设备的操作方法。
常量
构造函数
实例方法
各个方法的具体使用方法依然可以参考OneOS官网
(https://os.iot.10086.cn/doc/micropython/4.libraries/micropython%20specific%20libraries/device/Motor/Motor.html)
固件中machine和device的功能基于OneOS的驱动框架进行实现,软件上需要先完成OneOS的适配,并支持驱动框架组件,基于驱动框架再进行MicroPyhton库功能的实现。涉及软硬件结合的底层能力开发均在固件开发的过程中完成,对应用层提供MicroPython API。
应用脚本开发
应用部分是基于固件提供的MicroPython API进行开发。应用脚本的开发无需搭建芯片的编译环境,也无需专用的集成开发环境,只需使用具有文本编辑功能的软件即可进行。开发的过程中省去了编译的过程,脚本修改完成后直接下载即可进行功能验证。
在本方案中,为了配合硬件的可裁剪能力,应用脚本同样以模块化的方式进行开发,模块间耦合性极低,可方便增删模块的功能。每个模块为一个单独的PY文件,通过事件控制框架和状态控制框架进行所有模块的管理。
事件控制框架
事件控制框架定义了所有模块的事件类型,并负责管理各个模块事件对应的处理函数的注册和注销功能。
事件控制框架动态维护了两个表,一个表是Event Map表,该表里存储了当前事件控制框架可以处理的所有事件以及事件所对应的处理函数。在其他模块进行注册时,会向该表中写入其希望注册的事件和对应处理函数,一个事件可以对应一至多个不同模块的处理函数;另一个表是Event FIFO,当有实际事件产生时,对应的事件会由各个模块写入Event FIFO,事件控制框架会从Event FIFO进取出Event并查阅Event Map表,依次调用对应的处理函数。
事件控制框架
本方案中定义了系统、按键、指纹、RFID、报警、审计、模组通信和蓝牙通信,8个大类共计84个事件。
状态控制框架
状态控制框架定义了系统及模块的状态,并对状态的初始化、修改和查询进行统一管理。
状态控制框架维护了一个表,表内记录了系统及其他模块当前的状态,初始状态由模块在注册时进行初始化。状态控制框架提供修改和查询接口,供其他模块使用。
本方案中状态控制框架主要记录了系统的工作状态、门锁状态、按键状态、模组连接状态、传感器状态等内容。
其他模块
其他模块主要围绕事件控制框架和状态控制框架,实现了事件处理函数的实现、事件的注册、状态修改等功能。
以Motor模块为例,我们可以详细看一下相关代码:
总结
最后谈几点在使用OneOS MicroPython进行智能门锁应用开发的感受:
- 应用的开发和调试不再需要搭建编译环境,使用具有文本编辑功能的软件即可进行开发,比较简便。MicroPython的REPL可以随时验证代码语句的正确性,也可以随时查看运行状态变量等各种信息。
- 由于MicroPython解释器的存在天然隔离了驱动和业务,在有接口标准的前提下,固件和应用可以完美并行开发,大大减少沟通和时间的成本,缩短产品原型开发周期,形成“1款方案+1个固件+n个应用”的模式。
- Python语言本身的灵活性,让你编程不再像用C一样小心翼翼。变量该用整型还是浮点型,8位还是16位?变量运算后是否超出量程?指针是否初始化?字符串处理函数不够强大自己需要写一个?这些问题在python开发中统统不用考虑,如果你很熟悉Python语法,甚至可以使用闭包函数、生成器等进阶功能。除了有MicorPython自身的库可以直接调用,借助Python的生态,也可以移植一些已有的Python库资源进行使用。
- C语言在嵌入式开发中的地位是很难撼动的,MicorPython做嵌入式开发不可能替代C语言,我们希望通过MicroPython与C的结合能够更好的应对一些应用场景,解决当下物联网需求碎片化、变更频繁的问题。
关于MicroPython智能门锁方案分享到此为止,如果有想学习嵌入式但苦于入门难的小伙伴觉得意犹未尽,可以联系我们做进一步了解,同时也欢迎大家与我们共同探索更多MicroPython的适用场景。
OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。 官网地址:https://os.iot.10086.cn/
OneOS技术交流群:158631242
最后
以上就是微笑镜子为你收集整理的智能门锁开发全流程分享整体方案简介固件开发应用脚本开发 总结的全部内容,希望文章能够帮你解决智能门锁开发全流程分享整体方案简介固件开发应用脚本开发 总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复