基于LiteOS的智慧农业案例实验分享!

嵌入式资讯精选 2020-04-07 00:00

最近在指导一位读者朋友做毕业设计,该毕设是关于端云互通的,基于小熊派+LiteOS+华为云。

在指导他的过程中我也学到了不少东西,这里通过一个案例实验(智慧农业)给大家分享一些知识。

实验框图

相关模块简介

1、STM32L431RCT6

2、LiteOS

LiteOS是华为开发的轻量级实时操作系统:


LiteOS源码GitHub仓库链接:

https://github.com/LiteOS/LiteOS

其源码一级目录结构如下:


其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,可以单独运行。

Huawei LiteOS是一个支持多任务的操作系统。在Huawei LiteOS中,一个任务表示一个线程。 其任务是抢占式调度机制,同时支持时间片轮转调度方式。

高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。

创建任务示例:

左右滑动查看全部代码>>>

UINT32 creat_test_task(VOID)
{
  UINT32 uwRet = LOS_OK;
  TSK_INIT_PARAM_S task_init_param;
  UINT32 TskHandle;

  task_init_param.usTaskPrio = TASK_PRIO; /* 任务优先级 */
  task_init_param.pcName = "test_task"/* 任务名称 */
  task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)test_task; /* 任务入口函数 */
  task_init_param.uwStackSize = STACK_SIZE; /* 任务栈大小 */

  /* 任务创建 */
  uwRet = LOS_TaskCreate(&TskHandle, &task_init_param);
  if(LOS_OK != uwRet)
  {
      return uwRet;
  }
  return uwRet;
}

3、华为云平台

本次实验的云平台为华为的OceanConnect物联网平台:


其云端开发框图如下:


我们主要是用来做实验,着重关注红框里的内容

下面简单介绍一下Profile文件编解码器插件这两块大家可能比较陌生的部分:

(1)Profile文件开发

Profile即产品模型)是用来描述一款产品中的设备“是什么”、“能做什么”以及“如何控制该设备”的文件。

在物联网平台集成对接中需要先创建Profile,因为Profile里面定义了设备上报的数据和应用服务器下发的命令包含了哪些字段。

定义Profile,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令、升级能力等信息。

Profile主要包含产品信息、服务能力和维护能力三部分:


本次实验我们主要关注红框部分,其具体表现如:


(2)编解码插件开发

一款产品的设备上报数据时,如果“数据格式”为二进制码流,则该产品需要进行编解码插件开发;如果“数据格式”为JSON,则该产品下不需要进行编解码插件开发。两种数据举例:


作为物联网的终端设备,比较讲究的就是功耗问题了,这个问题也关乎到通信传输的数据量的问题。

上图举例的两种数据格式其实代表着同样的信息,虽然对于我们程序员而言,我们更容易读懂JSON格式的数据包含的信息;但是对于设备而言,其更喜欢二进制流格式的数据了。

因为使用二进制流来表示的话传输的数据量就会小很多,进而可以降低功耗其实这个二进制流格式也很好理解,是按照特定格式的,比如:


本次实验我们设备端发送与接收的数据均为二进制流格式数据,因此需要进行云端编码器插件的开发。下面是设备数据上报的流程:

4、BH1750光强度传感器

BH1750是一种用于两线制串行总线接口的16位数字型光强度传感器集成电路。利用它的高分辨率可以探测较大范围的光强度变化。(1lx~65535lx)。


主要特性:

  • 支持 IIC BUS 接口
  • 光源依赖性弱
  • 有两种可选的 IIC slave 地址
  • 最小误差变动在±20%

5、SHT30温湿度模块

温湿度传感器 SHT30的温度范围为-40℃~125℃ ,湿度范围0%RH~100%RH

主要特性:

  • 完全校准的线性化,温度补偿式的数字输出
  • 电压范围 2.4V-5.5V
  • 通信速度高达 1MHz 的 IIC 接口,两个可选的用户地址
  • 相对湿度误差± 2%RH
  • 温度误差± 0.3%

6、补光灯模块

与普通的LED的控制一样,通过一个GPIO来控制其亮、灭。


7、直流电机模块

通过一个GPIO来控制其转、停。

重要步骤解析

我们可以用Keil MDK来编写、编译代码,也可以使用LiteOS Studio来编写、编译代码。

在解析重要步骤之前有必要介绍一下LiteOS Studio


LiteOS Studio是LiteOS集成开发环境,一站式开发工具,支持C、C++、汇编等语言,让您快速,高效的进行物联网开发。

主题默认是大家都喜欢的暗黑色,使用起来也比较简单,其用Makefile来管理工程,使用时添加新的源文件需要同步更新Makefile文件:

1、读取传感器数据并显示至LCD

准备BH1750SHT30传感器驱动。这里跟初学者分享一点经验,看这些传感器驱动代码的时候不要只看代码。

这种与实际硬件(芯片)密切相关的代码光看代码是没有多大意义的,只会越看越懵。

因此正确姿势应该是对照着datasheet一起看,需要写出这些代码得好好研读datasheet

一般比较成熟的传感器驱动网上都有很多现成的可以直接用的,多数情况下我们很少去亲自写这个。

特别是工作之后,能copy的代码坚决不自己写,老板可不看你代码写得多秀,只看你任务完成得怎么样。

但是还是有必要了解一下这些驱动代码怎么写出来的方法,万一某天需要我们自己写呢。下面我们从例程代码中扣出一些核心代码:


我们最终要用到的就是最后一个函数来读取传感器数据,然后显示在LCD上,核心代码:


结果:


这个结果多了一个烟感数据。这里简单说明一下:写这篇笔记时用的是智慧农业的模块。后来才加了一个烟感模块,改起来比较麻烦就没去改了,所以上面的一些图的说明没有烟感模块。

2、云端配置

在设备端接入云端之前,遇到对云端进行相应的配置。这里也是抽取出重要的步骤,具体的步骤可以查看华为云上相关的文档,很详细:

文档链接:

https://support.huaweicloud.com/devg-IoT/iot_02_9994.html

(1)创建产品:


有几种方式创建产品,这里我们选择自定义的方式,学会了自定义的方式创建产品了,其它几种方式就更简单了。


(2)Profile、编解码器插件开发

接着进行产品开发,主要是进行Profile文件与编解码器插件的开发。

Profile文件有两种开发方式:离线的方式与在线的方式。我们使用在线的方式创建,创建的Profile文件如下:



编解码器插件的开发依赖与Profile文件,我们创建的编解码器插件如下:


(3)调测

接着验证我们的Profile文件与编解码器插件,这里有两种方法验证.

一是创建真实的设备,这个需要我们真实的设备端进行连接测试,下面我们再做这一步;

二是使用虚拟的设备。这里我们使用虚拟的设备进行验证:

3、设备端开发

设备端我们使用LiteOS SDK端云互通组件agent tiny对接IoT平台。

借助这个组件我们只需要调用几个API函数就可以很方便地连接华为IOT平台,其重要接口函数如下:

左右滑动查看全部代码>>>

/* LiteOS SDK端云互通组件的初始化接口 */
int atiny_init(atiny_param_t* atiny_params, void** phandle);
/* LiteOS SDK端云互通组件的主函数体 */
int atiny_bind(atiny_device_info_t* device_info, void* phandle);
/* LwM2M标准对象向设备下发命令的统一入口 */
int atiny_cmd_ioctl(atiny_cmd_e cmd, char* arg, int len);
/* LiteOS SDK端云互通组件数据上报接口 */
int atiny_data_report(void* phandle, data_report_t* report_data);

设备对接IOT平台的流程示意图:


其实本云端互通实验主要围绕的就是一个agent_tiny任务,其任务入口函数就是这个流程图上的agent_tiny_entry函数。

这个入口函数里面主要做的内容是:atiny的初始化、对于入参atiny_params的设定(要根据具体的业务来进行)。

还有创建一些子任务(数据采集任务、数据上报任务、下发命令的应答任务),最后进行到。

核心代码如端云互通组件的主函数体,具体核心代码如:

左右滑动查看全部代码>>>

void agent_tiny_entry(void)
{
  UINT32 uwRet = LOS_OK;
  atiny_param_t *atiny_params;
  atiny_security_param_t  *iot_security_param = NULL;
  atiny_security_param_t  *bs_security_param = NULL;

  atiny_device_info_t *device_info = &g_device_info;

  //  省略部分内容。。。。。。。。。。。。
  device_info->endpoint_name = g_endpoint_name;
  atiny_params = &g_atiny_params;
  atiny_params->server_params.binding = "UQ";
  //  省略部分内容。。。。。。。。。。。。

  /* LiteOS SDK端云互通组件的初始化接口 */
  if(ATINY_OK != atiny_init(atiny_params, &g_phandle))
  {
      return;
  }

  /* 创建数据采集任务 */
  uwRet = creat_collection_task();
  if (uwRet != LOS_OK)
  {
      return ;
  }

  /* 创建数据上报任务 */
  uwRet = creat_report_task();
  if(LOS_OK != uwRet)
  {
      return;
  }

  /* 创建一个信号量 */
  uwRet = LOS_SemCreate(0,&reply_sem);
  if (uwRet != LOS_OK)
  {
  return ;
  }

  /* 创建下发命令的应答任务 */
  uwRet = creat_reply_report_task();
  if (uwRet != LOS_OK)
  {
      return ;
  }

  /* LiteOS SDK端云互通组件的主函数体 */
  (void)atiny_bind(device_info, g_phandle);
  }

更具体的代码就不展开了,篇幅好像有点长了。。。

除此之外,在对接云端之前,还需要一个可以联网的媒介,这里我们选用的是ESP8266,使用AT设备框架来管理我们的ESP8266设备:


现在,我们就可以使用真实的设备对接云端了,对接云端需要一个设备标识码,用ESP8266模块时需要我们自己创建一个标识码。

用其它联网模块如NB-IOT模块则只需使用模块出厂自带的设备码即可。这里我们创建的设备标识码为:

这个标识码其实就是在我们上面的agent_tiny_entry函数中有配置给device_info设备结构体了。然后使用这个标识码在云端创建设备:

4、web应用开发

上面在调试阶段已经可以上传云端到IOT平台了,也可以看到数据了。但是那些数据对于用户来说总归是看不习惯吧,我们开发产品就是为了给用户使用、给用户看的。

所以最终体现出来给用户的不应该是一堆数据,而是一个对用户较友好的可视化界面。

华为物联网开发平台也给我们提供了web应用开发的环境:


这里的应用开发也比较简单,通过拖拽一些空间,简单修改一下控件的一些属性即可:


最终效果:

实验结果演示视频

总结

以上就是本次分享的智慧农业案例实验,本次实验用了华为IOT平台,其实其它平台用起来也是类似的,之后有时间再分享其它云平台的案例实验。

1.人工智能:嵌入式技术的机遇与挑战

2.厉害了!用6个芯片打造复古经典计算机

3.国产操作系统这盘棋不简单

4.做嵌入式必须知道的国产CPU之路,里面有良机!

5.Linux是否能在8位MCU上运行?

6.为了适合你的项目,rt-thread有时候需要裁剪!

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。


嵌入式资讯精选 掌握最鲜资讯,尽领行业新风
评论
  • 01. 什么是过程能力分析?过程能力研究利用生产过程中初始一批产品的数据,预测制造过程是否能够稳定地生产符合规格的产品。可以把它想象成一种预测。通过历史数据的分析,推断未来是否可以依赖该工艺持续生产高质量产品。客户可能会要求将过程能力研究作为生产件批准程序 (PPAP) 的一部分。这是为了确保制造过程能够持续稳定地生产合格的产品。02. 基本概念在定义制造过程时,目标是确保生产的零件符合上下规格限 (USL 和 LSL)。过程能力衡量制造过程能多大程度上稳定地生产符合规格的产品。核心概念很简单:
    优思学院 2025-01-12 15:43 530浏览
  •   在信号处理过程中,由于信号的时域截断会导致频谱扩展泄露现象。那么导致频谱泄露发生的根本原因是什么?又该采取什么样的改善方法。本文以ADC性能指标的测试场景为例,探讨了对ADC的输出结果进行非周期截断所带来的影响及问题总结。 两个点   为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。但对于计算机来说实现这种计算需要面对两个问题: 1.
    TIAN301 2025-01-14 14:15 113浏览
  • PNT、GNSS、GPS均是卫星定位和导航相关领域中的常见缩写词,他们经常会被用到,且在很多情况下会被等同使用或替换使用。我们会把定位导航功能测试叫做PNT性能测试,也会叫做GNSS性能测试。我们会把定位导航终端叫做GNSS模块,也会叫做GPS模块。但是实际上他们之间是有一些重要的区别。伴随着技术发展与越发深入,我们有必要对这三个词汇做以清晰的区分。一、什么是GPS?GPS是Global Positioning System(全球定位系统)的缩写,它是美国建立的全球卫星定位导航系统,是GNSS概
    德思特测试测量 2025-01-13 15:42 498浏览
  • 新年伊始,又到了对去年做总结,对今年做展望的时刻 不知道你在2024年初立的Flag都实现了吗? 2025年对自己又有什么新的期待呢? 2024年注定是不平凡的一年, 一年里我测评了50余块开发板, 写出了很多科普文章, 从一个小小的工作室成长为科工公司。 展望2025年, 中国香河英茂科工, 会继续深耕于,具身机器人、飞行器、物联网等方面的研发, 我觉得,要向未来学习未来, 未来是什么? 是掌握在孩子们生活中的发现,和精历, 把最好的技术带给孩子,
    丙丁先生 2025-01-11 11:35 463浏览
  • 流量传感器是实现对燃气、废气、生活用水、污水、冷却液、石油等各种流体流量精准计量的关键手段。但随着工业自动化、数字化、智能化与低碳化进程的不断加速,采用传统机械式检测方式的流量传感器已不能满足当代流体计量行业对于测量精度、测量范围、使用寿命与维护成本等方面的精细需求。流量传感器的应用场景(部分)超声波流量传感器,是一种利用超声波技术测量流体流量的新型传感器,其主要通过发射超声波信号并接收反射回来的信号,根据超声波在流体中传播的时间、幅度或相位变化等参数,间接计算流体的流量,具有非侵入式测量、高精
    华普微HOPERF 2025-01-13 14:18 493浏览
  • 随着通信技术的迅速发展,现代通信设备需要更高效、可靠且紧凑的解决方案来应对日益复杂的系统。中国自主研发和制造的国产接口芯片,正逐渐成为通信设备(从5G基站到工业通信模块)中的重要基石。这些芯片凭借卓越性能、成本效益及灵活性,满足了现代通信基础设施的多样化需求。 1. 接口芯片在通信设备中的关键作用接口芯片作为数据交互的桥梁,是通信设备中不可或缺的核心组件。它们在设备内的各种子系统之间实现无缝数据传输,支持高速数据交换、协议转换和信号调节等功能。无论是5G基站中的数据处理,还是物联网网关
    克里雅半导体科技 2025-01-10 16:20 449浏览
  • 根据Global Info Research(环洋市场咨询)项目团队最新调研,预计2030年全球无人机电池和电源产值达到2834百万美元,2024-2030年期间年复合增长率CAGR为10.1%。 无人机电池是为无人机提供动力并使其飞行的关键。无人机使用的电池类型因无人机的大小和型号而异。一些常见的无人机电池类型包括锂聚合物(LiPo)电池、锂离子电池和镍氢(NiMH)电池。锂聚合物电池是最常用的无人机电池类型,因为其能量密度高、设计轻巧。这些电池以输出功率大、飞行时间长而著称。不过,它们需要
    GIRtina 2025-01-13 10:49 201浏览
  • 随着数字化的不断推进,LED显示屏行业对4K、8K等超高清画质的需求日益提升。与此同时,Mini及Micro LED技术的日益成熟,推动了间距小于1.2 Pitch的Mini、Micro LED显示屏的快速发展。这类显示屏不仅画质卓越,而且尺寸适中,通常在110至1000英寸之间,非常适合应用于电影院、监控中心、大型会议、以及电影拍摄等多种室内场景。鉴于室内LED显示屏与用户距离较近,因此对于噪音控制、体积小型化、冗余备份能力及电气安全性的要求尤为严格。为满足这一市场需求,开关电源技术推出了专为
    晶台光耦 2025-01-13 10:42 510浏览
  • 食物浪费已成为全球亟待解决的严峻挑战,并对环境和经济造成了重大影响。最新统计数据显示,全球高达三分之一的粮食在生产过程中损失或被无谓浪费,这不仅导致了资源消耗,还加剧了温室气体排放,并带来了巨大经济损失。全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,艾迈斯欧司朗基于AS7341多光谱传感器开发的创新应用来解决食物浪费这一全球性难题。其多光谱传感解决方案为农业与食品行业带来深远变革,该技术通过精确判定最佳收获时机,提升质量控制水平,并在整个供应链中有效减少浪费。 在2024
    艾迈斯欧司朗 2025-01-14 18:45 68浏览
  • ARMv8-A是ARM公司为满足新需求而重新设计的一个架构,是近20年来ARM架构变动最大的一次。以下是对ARMv8-A的详细介绍: 1. 背景介绍    ARM公司最初并未涉足PC市场,其产品主要针对功耗敏感的移动设备。     随着技术的发展和市场需求的变化,ARM开始扩展到企业设备、服务器等领域,这要求其架构能够支持更大的内存和更复杂的计算任务。 2. 架构特点    ARMv8-A引入了Execution State(执行状
    丙丁先生 2025-01-12 10:30 471浏览
  • 数字隔离芯片是现代电气工程师在进行电路设计时所必须考虑的一种电子元件,主要用于保护低压控制电路中敏感电子设备的稳定运行与操作人员的人身安全。其不仅能隔离两个或多个高低压回路之间的电气联系,还能防止漏电流、共模噪声与浪涌等干扰信号的传播,有效增强电路间信号传输的抗干扰能力,同时提升电子系统的电磁兼容性与通信稳定性。容耦隔离芯片的典型应用原理图值得一提的是,在电子电路中引入隔离措施会带来传输延迟、功耗增加、成本增加与尺寸增加等问题,而数字隔离芯片的目标就是尽可能消除这些不利影响,同时满足安全法规的要
    华普微HOPERF 2025-01-15 09:48 83浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦