本文分享自中移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进行智能门锁应用开发的感受:

  1. 应用的开发和调试不再需要搭建编译环境,使用具有文本编辑功能的软件即可进行开发,比较简便。MicroPython的REPL可以随时验证代码语句的正确性,也可以随时查看运行状态变量等各种信息。
  2. 由于MicroPython解释器的存在天然隔离了驱动和业务,在有接口标准的前提下,固件和应用可以完美并行开发,大大减少沟通和时间的成本,缩短产品原型开发周期,形成“1款方案+1个固件+n个应用”的模式。
  3. Python语言本身的灵活性,让你编程不再像用C一样小心翼翼。变量该用整型还是浮点型,8位还是16位?变量运算后是否超出量程?指针是否初始化?字符串处理函数不够强大自己需要写一个?这些问题在python开发中统统不用考虑,如果你很熟悉Python语法,甚至可以使用闭包函数、生成器等进阶功能。除了有MicorPython自身的库可以直接调用,借助Python的生态,也可以移植一些已有的Python库资源进行使用。
  4. 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

智能门锁开发全流程分享相关推荐

  1. 深度学习大厂前端项目开发全流程全流程

    用户审美的要求越来越高,也就使得越来越多的公司和企业注重线上用户的体验,都想要向外界传达出众的气质形象和重要信息,所以,Web前端人员的需求也越来越大. 深度学习大厂项目开发全流程全流程 在国外企业, ...

  2. 次世代游戏美术资源开发全流程及常用的软件

    次世代游戏美术资源开发全流程案例 外国艺术家FlyCat用Blender完成的次世代悟空(胸像)全流程 外国艺术家FlyCat用Blender完成的次世代悟空(胸像)全流程 流程图

  3. RPD快速产品开发全流程详解

    一.什么是RPD? RPD定义-Rapid Product Development(快速产品开发): 借鉴了业界主流的产品开发流程:IPD.敏捷开发等: 结合企业当前软硬件开发实践,RPD是包括了思想 ...

  4. 一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)

    一文解锁华为云新技能-AIOT开发全流程[设备接入-ESP端侧数据收集[MQTT]-实时数据分析](步步截图较详细) 在这篇你将会接触到:从物联网工程师从硬件层-通信层到应用层全流程:开发华为云最基本 ...

  5. MindSpore框架TBE算子开发全流程

    本文为MindSpore框架TBE算子开发全流程的图文案例.         视频案例请移步MindsSpore框架TBE算子开发全流程 MindSpore框架TBE算子开发全流程 一.工具介绍 1. ...

  6. 【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览

    基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习,未经同意请勿转载 一些说明:上述项目来源于笔者我本科大三阶段2020年电子设计课程项目,在这个项目中,我主要是负责的部分有前端, ...

  7. 菜鸟看的Android应用开发全流程

    给菜鸟看的Android应用开发全流程--好多Android开发中,没人告诉过你的事 很多菜鸟开始学习Android开发,去网上搜集过很多"Android开发教程",但是搜索出来的 ...

  8. 国内征信行业模型开发全流程详解

    1. 前言 目前国内的金融体系主要由银行.互联网消费金融.助贷机构组成,本人参与过国内外大型银行.消金.助贷机构的征信模型开发,相对而言,对当前国内的征信模型具有一定的发言权.下面,我将从技术角度全面 ...

  9. 智能硬件产品开发全流程解析

    本文通过十八个流程点详解,为大家分享了智能硬件产品研发生产的全流程. 上篇文章我们聊了下软硬件产品经理的那些区别,这篇文章主要分享下硬件产品研发生产的相关流程. 上图所示的是一个智能硬件生命周期内所需 ...

最新文章

  1. python字符串大写字母个数_python判断字符串是字母 数字 大小写(转载)
  2. 方舟 game.ini 配置文件_方舟突然回归|这次居然是住院篇!
  3. Binder子系统之调试分析(三)
  4. SAP各种产品中的客户主数据模型建模详解
  5. Today's my MDX...
  6. win7安装python开发环境,运行python
  7. 网站服务器被访问 io,服务器端被客户端访问完以后出现java.io.ioexception,socket问题。...
  8. 是程序员就应该知道的东西
  9. mysql 如何磁阵_Raid教程 全程图解手把手教你做RAID
  10. php重定向error,将nginx错误重定向到php
  11. 访问通信录 适配iOS7
  12. TensorFlow 实战(五)—— 图像预处理
  13. 2017.4.14上午
  14. Java NIO和IO的区别
  15. 【小小小白进行手机进行刷机测试 Ubuntu系统下安装adb工具、fastboot工具】
  16. 电脑计算机无法找到脚本文件夹,电脑弹出无法找到脚本文件怎么办
  17. 有关Idea的Invalidate Caches/Restart
  18. STL源码剖析 RB-tree
  19. watchdog库使用
  20. BitLocker恢复

热门文章

  1. kubernetes基础之docker file文件详解(百分之百空手接白刃篇)
  2. CTF题记——再战GK、BUU
  3. golang实现iris框架最小功能的mvc
  4. SwingUtilities.invokeLater
  5. 1974年图灵奖--唐纳德·克努特简介
  6. 查询水果价格 (15分)
  7. windows更换壁纸cmd命令,window修改注册表更换壁纸,已设壁纸缓存地址
  8. dfs与bsf问题合集
  9. oracle常用语句大全 来自csdn
  10. html菜鸟教程 动态天气,Blinker 天气时钟8266 12864LCD屏(针对新版库v0.3.4接口更新)...