本文分享自中移OneOS微信公众号《行动起来~端云融合开发案例分享》,作者:跤总。

开发环境介绍

1. 硬件:万耦开发板,中国移动推出的基于STM32,NXP等芯片的一个系列开发板,其由不同处理核心的核心板与万耦底板组成。底板是通用的,核心板有STM32L475VGT6、STM32F401VET6与NXPLPC55S69三个型号,用户可根据需求选择不同的核心板。

2. 编译工具链:OneOS Cube,是中国移动OneOS操作系统基于命令行的开发工具,提供系统配置、项目编译构造、包贡献下载等功能。

简介

使用一块万耦开发板(记作万耦A)的温度传感器AHT10以及距离光线传感器AP3216C采集传感器数据,并且将采集的数据通过有线网络,采用MQTT协议将其上传到OneNet平台。

一方面,我们可以在OneNet平台上查看这些上传的数据;另一方面,我们会在另一块万耦开发板(记作万耦B)上使用HTTP请求将刚才万耦A上传到OneNet的数据下载下来,同时将其显示在万耦B的LCD显示屏上。

实现过程

1、OneOS Cube配置

通过OneOS Cube工具配置好以下项目:

表1 工程配置项

模块 简要描述

LCD

打开Graphics驱动以便在LCD屏幕上显示文字,图标等

按键

通过按键切换不同的显示页面

Sensor

AP3216C传感器,采集距离和光线数据

AHT10传感器,采集温度和湿度数据

RTC

通过NTP在线更新日历时间

OneNet

向OneNet上传数据点

MQTT

订阅OneNet MQTT主题

向数据点主题发布数据,上传传感器数据到OneNet

HTTP

向OneNet请求已发布的数据点数据,从OneNet上获取传感器数据并在LCD上显示

NTP

联网自动获取当前网络时间

cJSON

解析HTTP请求到的OneNet数据,并把该数据显示到LCD上

SPI

enc28j60  SPI有线模块接入

LWIP

TCP/UDP/DHCP/DNS协议接入

 2、代码实现

总体设计:(总共分为5个大模块)
Ⅰ:key_process
Ⅱ:lcd_process
Ⅲ:onenet_process
Ⅳ:sensor_process
Ⅴ:webapi_process
每个模块功能划分实现如下:

表二 代码分模块实现

模块 简要描述
key_process 注册按键以及按键回调,在按键回调中发送事件,按键用于翻页,比如需要查看Sensor页面,按下按键后,会发送LCD_EVENT_SENSOR事件
lcd_process 在这个模块中,会开启一个线程,这个线程会一直循环检测是否有按键事件(比如LCD_EVENT_SENSOR)发送过来,根据不同的事件类型来决定要绘制显示那个页面,并且当切换到对应页面时(比如Sensor页面),会按一定的频率更新数据,比如在Sensor页面更新传感器数据,在Calendar页面更新日历时间数据
onenet_process 在完成OneNet MQTT订阅后,开启一个线程,该线程从一个保存有Sensor数据的全局变量中周期性读取数据,并且上通过Publish向OneNet数据点主题上传传感器数据
sensor_process 开启一个线程,周期性从AHT10和AP3216C传感器中读取本地数据并且存放在一个全局变量中(主要包含温度数据,湿度数据,距离数据,光线强度数据),onenet_process中的线程就是从这个全局变量中读取传感器数据上传到OneNet上
webapi_process 开启一个线程,周期性通过HTTP从OneNet上请求被上传的数据点,将OneNet上的传感器数据(其他设备上传的)下载到本地,然后保存在一个全局变量中,lcd_process中的线程会读取这些数据去刷新LCD显示(如果当前显示的是Sensor页面的话)

 main函数调用:

结果展示

1、OneNet上查看

设备在线

2、OneNet上收到的传感器数据

3、两块万耦开发板上的数据显示

【万耦开发板A:LCD上显示的是万耦开发板B的传感器采集的数据(B先传到OneNet上,后A从OneNet上下载并显示,注意上图中显示的PS值很大,但是右下角的距离传感器并没有被遮挡(没遮住应该很小))】

【万耦开发板B:LCD上显示的是万耦开发板A的传感器采集的数据(A先传到OneNet上,后B从OneNet上下载并显示,注意上图中显示的PS值很小,但是右下角的距离传感器并被遮挡了(遮住应该很大))】

本次端云融合案例分享到此结束啦~

OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。 官网地址:https://os.iot.10086.cn/
OneOS技术交流群:158631242

端云融合开发案例分享相关推荐

  1. HarmonyOS应用端云一体化开发主要流程

    图示 主要步骤 序号 阶段 任务 说明 1 创建端云一体化开发工程 选择工程类型与云开发模板 确定工程类型:选择"Application"或"Atomic Service ...

  2. 微信小程序开发案例分享-必背诗:从0到1,从前端到数据库

    序 大概在2018年8月份,突发的一个想法就是接触下微信小程序来练练手,虽说这个时间点微信小程序已经很火了,但想想古人说的话:"整就中咧,干就完啦".所以还是坚持走一遍,建一个自己 ...

  3. 区块链软件开发案例分享

    区块链+各种,这类的开发越来越多,消费者的选择也多种多样,如何突出重围,只有借鉴各个软件开发,取其精华去其糟粕. 下面这是一个艺术品交易市场的软件开发分享 这是一个收集和交易独特的单版数字艺术品的市场 ...

  4. 含关键代码!基于TI Sitara系列AM3352/AM3354/AM3359的Linux常用开发案例分享

    目    录 4. tl_can_echo案例 4.1 案例功能 4.2 操作说明 4.3 关键代码

  5. Android 自动扫描歌曲,Android扫描本地音乐文件开发案例分享

    一.前言 本来觉得so easy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了. 本想实现的功能是: 通过网易云音乐/百度音乐/QQ音乐/酷狗音乐中一个API,通过关键词/歌手/歌词来搜 ...

  6. 现成掘金之旅APP系统开发案例分享

    掘金之旅打破了传统电商平台单一的购物模式,结合当下流行的"新消费电商"+"趣味游戏",通过公开.透明.共享的分配机制将产品利润回馈给参与者,激活参与热情,带动多 ...

  7. 板卡测评 | 基于TI AM5708开发板——ARM+DSP多核异构开发案例分享

    本次测评板卡是创龙科技旗下的TL570x-EVM,它是一款基于TI Sitara系列AM5708ARM Cortex-A15+浮点DSPC66x处理器设计的异构多核SOC评估板,由核心板和评估底板组成 ...

  8. 票务app开发案例分享

    我可以帮您列出一个票务app的基本功能和流程: 功能: 用户注册和登录 查看演出信息,包括演出时间.场馆.票价.座位图等 选座购票,用户可以在座位图上选择座位,支付后将获得电子票 订单管理,用户可以查 ...

  9. 端云一体人工智能开发平台整体架构

    端云一体人工智能开发平台整体架构 引言 当前人工智能(Artificial Intelligence)技术发展迅猛,在机器视觉.语音识别以及自然语言处理等多个技术领域取得了卓越的进展,带来了更高的精确 ...

最新文章

  1. 安全狗php站点404,访问编码后的中文URL返回404错误的解决方法
  2. centos7 rpm安装MySQL
  3. if you miss it, you can hope for future
  4. 多线程—Lock、Condition、ReentrantLock、ReentrantReadWriteLock
  5. u-boot懂你并不难
  6. 1038. Recover the Smallest Number
  7. 【优化预测】基于matlab差分进化算法优化BP神经网络预测【含Matlab源码 1315期】
  8. 怎样用计算机算出54188,对象也可以当方法用?
  9. JavaScript实现累加和累乘
  10. 移动彩信MM7 API JAVA 样例
  11. manjaro pacman 使用方法总结
  12. 卸载office2010安装包时提示语言不受系统支持
  13. 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId
  14. VR项目unity相关
  15. 千淘万漉虽辛苦,吹尽狂沙始见金
  16. 通用人工智能:我们是否接近,尝试是否有意义?
  17. Xmind8 思维导图 使用教程
  18. 如何实现访问不同网络下的局域网网站
  19. 源代码可以申请版权登记吗
  20. 微波射频学习笔记22-------场效应管(MOS管)

热门文章

  1. 业务分析师在敏捷项目中的作用
  2. (礼拜一log)前端开发:jsp中获得当前时间
  3. OpenCV 第七章 模板匹配和图像分割
  4. linux清楚指定文件夹下的空文件夹
  5. iOS微信支付的步骤以及问题描述
  6. 3月11日 夜 中国电力出版社 O'Reilly丛书
  7. 《机器学习》周志华 第二章——模型评估与选择笔记
  8. Android编程之仿iPhone滚轮控件
  9. 我的win7 64 激活过了,但是计算机-属性仍然显示“未激活此WIndows副本,单击此处立即激活...
  10. Crypto++简要入门