bigfanofloT 发表于 2017-4-27 18:19:23

半小时开发基于STM32的室内智能环境监测仪

本帖最后由 bigfanofloT 于 2017-5-10 21:52 编辑

前言:随着空气污染问题得到越来越多人的关注,雾霾、PM2.5、甲醛等词汇也频繁出现在大家的生活中,特别有小孩、老人的家庭越来越关注PM2.5、甲醛的危害。正是空气污染的危害得到越来越多人的重视,空气质量监测的需求也越来越广泛,机智云智能硬件开发平台可以为广大空气检测设备厂商提供可靠的智能解决方案,帮助企业快速开发产品推向市场。本文以室内智能环境监测仪为例,利用机智云自助开发平台,只需30分钟即可搭建产品原型。一、目标室内智能环境监测仪具备实时采集环境数据的能力,能够监测室内温度、湿度、空气质量3个参数,另外具备排风、污染指数过高报警功能;用户可通过手机APP查看监测信息以及控制排风。原型图:二、方案讨论智能设备多是由单片机/微处理器/微控制器等构成的嵌入式系统,通过各类传感器获取信息,主流的联网方式是嵌入GPRS、WIFI、蓝牙等无线通信模块,从而把数据推送到远程服务器,完成和手机APP/微信/网页等的交互。传统的开发方式,需要开发者编写智能硬件设备底层驱动、无线通信模组应用层协议制定和编写、服务器开发、移动端开发、业务逻辑等,周期长,可维护性差。借助机智云平台上模块化开发工具,如STM32、APP代码自动生成工具,省去中间环节,开发者/厂商只需关注硬件底层驱动(事实上,硬件底层驱动一般由硬件供应商提供)和业务逻辑即可,大大缩短研发周期,节省研发成本,提升开发者的产品投产速度,加速硬件智能化升级。三、设备接入原理硬件厂商对硬件智能化的第一步是让设备能够联网。GAgent是机智云提供的一款兼容国内主流Wi-Fi模块、移动网络模块的模组系统,可以提供上层应用(手机APP等控制端、云端)到产品设备的双向数据通讯,以及对设备的配置入网、发现绑定、程序升级等功能,支持BLE、GSM、CDMA、Zigbee、LoRa等联网方案接入。硬件厂商只需理解如何与GAgent进行通讯即可。开发者或企业研发人员只需在正在开发的智能硬件上嵌入写好机智云连接协议GAgent的连网模块,即可通过机智云平台实现设备连网及智能化产品开发者使用GAgent后,只需要关心产品的业务逻辑开发,不用关心数据的通讯功能开发,大大降低了开发的难度。四、开发流程了解了机智云平台功能和设备接入原理后,只需30分钟即可打造室内智能环境监测仪。分为3步走,一是MCU端开发,二是云端配置,三是设备调试。硬件准备:机智云Gokit扩展板(板载温DHT11湿度传感器、ESP8266无线WIFI模块、直流小电机、RGB三色灯、按键),意法半导体Nucleo-F767ZI评估板,软件准备:Keil for ARM;整个系统结构如下:4.1 MCU端开发MCU端的主要工作是编写温湿度传感器、RGB灯、直流小电机、空气质量传感器的驱动代码和与云端交互的业务逻辑。我们采用ST(意法半导体)推出的Nucleo-F767ZI板卡作为控制核心,板卡搭载了STM32F767ZIT6核心微控制器(32位ARM Cortex-M7处理器,带FPU单元,最高216MHz主频、集成2MB Flash和 512KB SRAM),支持Arduino UNO接口。本次我们需要使用的片上外设有:ØADC:用于读取空气质量传感器MQ-135输出的模拟量 ;ØGPIO:编写模拟时序驱动DHT11、RGB 5050灯,读取按键输入;ØPWM:通过驱动IC驱动直流小电机,模拟排风;ØUART:与WIFI模组通信,使设备具备联网能力;Ø定时器:扫描按键、系统心跳;4.2 云端配置通常,要实现硬件的智能化,除了硬件本身外,还需要实现:智能云平台、手机APP、联网模块,而每一个领域都需要专业的团队来支撑。使用机智云自助开发平台,厂商或开发者只需要专注于自身产品硬件。以最小的成本和风险实现硬件智能化,获得产品最大的增值。为让硬件产品智能化,首先需要让硬件产品联网。往往,借助机智云机智云开发平台,可快速创建产品和定义数据点。具体步骤如下:
创建产品
在机智云开发者中心已成功创建室内智能环境监测仪产品,机智云为该产品分配Product Key和Product Secret参数。Product Key参数由开发者写入设备MCU(设备主控板),并告知WiFi/GPRS模块,WiFi/GPRS模块登录机智云后,机智云将会识别该Product Key的产品。Product Secret参数是APP开发或服务器对接时所使用的参数。创建数据点

数据点即设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。本次项目需要把MCU获取的温度、湿度、空气质量指数3个参数上传到服务器,这3个参数为数值类型,对于云端来讲只读;直流电机的控制,实际上是手机APP端推送一个具体数值给MCU,MCU利用此数值来控制电机,参数类型为数值,对云端来讲可写;数据点可从excel导入或者导入机智云提供的范例后再修改。4.3自动生成MCU SDK接下来,使用机智云MCU代码自动生成工具,能根据产品自动填写ProductKey,根据相应数据点来自动生成数据点的结构体。让开发者不再关注协议,只需将精力放在核心应用开发上。自动生成的MCU SDK代码实现了机智云通信协议的解析与封包、传感器数据与通信数据的转换逻辑,并封装成了简单的 API。当设备收到云端或 APP 端的数据后,程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数,便可完成产品的开发。这里选择独立MCU方案、硬件平台STM32F767X后,机智云直接生成适应STM32F767X的keil工程代码,采用的库函数为HAL库。MCU SDK文件内容目录结构
下载生成的MCU代码,解压后,类似下图,其中黑色标注部分为硬件平台开发基本文件。绿色标注部分为机智云逻辑部分,硬件的串口驱动、定时器驱动、按键驱动等驱动实现完毕,开发者可直接在Gizwits_product.c&Gizwits_product.h文件编写硬件动作执行函数。下图是MCU通过烧录好GAgent固件的WIFI/GPRS模组与服务器交互的逻辑,可以看出整个过程全部被封装,留给用户的接口很简单,对于资源足够的MCU,用户只需要在MCU实现3个接口函数即串口发送、串口中断接收、定时器1ms中断即可通过无线通信模组联网。而数据点相关、云端交互相关全部由MCU代码自动生成工具生成,只需在Gizwits_product.c文件填充业务逻辑。我们需要编写硬件驱动并添加到工程:分别为直流电机、空气质量传感器、RGB灯、温湿度传感器的驱动;User文件夹的main.c文件包含了整个程序的框架和用户数据上报到云服务器的接口部分,后面会使用到。
接口的对接:前面提到的三个接口是串口收发、定时器1ms中断,生成的工程使用的外设和Nucleo-F767ZI板卡略有不同,因此需要简单的修改下,根据Nucleo-F767ZI和机智云Gokit扩展板原理图,串口6(根据机智云的协议,串口参数为:波特率9600、无校验、停止位1)作为与WIFI模组通信的接口;定时器3为1ms中断,作为MCU与WIFI模组的“心跳”信号;下面就是如何在具体位置修改这3个接口:
串口的修改:由于我们修改系统时钟为内部216MHz,因此定时器初始化参数修改一下:至此我们的设备已经具备了和机智云服务器“交流”的能力,那么具体发送什么数据给云服务器、收到手机APP发来的指令后干什么,就需要在相应的接口处填充用户代码了。注意到生成的代码贴心的给出了注释,告诉用户在哪里填充自己的代码,如下是数值量下发,用于控制电机转动速度:下面是温湿度和空气质量数据的上报:可以看出,机智云MCU代码生成工具直接为我们生成号了接口且注释详细,用户只需把采集到的数据往对应的接口函数“丢”即可。对于main函数部分,首先是完成了外设硬件的初始化,然后是机智云协议层的初始化,然后在while-loop循环调用用户处理和机智云协议相关的处理:还有一步就是触发智能设备联网,Onboarding定义:也叫配置入网,用户将一款基于Wi-Fi的物联网设备配置连接上路由器的过程称为Onboarding。机智云提供的Wi-Fi设备接入SDK中已经内置了此配置的功能,用户直接调用对应API即可。新设备第一次使用时需要知道路由器的账号和密码,以通过路由器连接互联网。由于大多数的物联网设备没有自带的屏幕和键盘,所以需要通过智能手机向设备发送路由器的SSID和密码,这个过程机智云称为Onboarding。4.4调试
机智云提供通用版本的手机APP供测试使用,效果就是系统结构图中那样:总结:基于机智云平台开发产品原型的一般步骤为:定义产品、定义数据点、下载通信协议 、下载自动生成的代码 、传感器驱动开发、产品逻辑开发 、联调测试。省略了复杂的协议层开发,加速产品上市。

后续
机智云还提供移动端代码自动生成工具,如果用户想优化UI界面,可下载官方通用版本APP,可在开发者中心生成手机APP代码包,进行二次开发,例如:修改UI、增加更多功能等。目前生成的SDK支持AS和Eclipse集成开发环境:
本例程keil for ARM工程源码:
关于机智云

机智云是广州机智云物联网科技有限公司经过多年行业内的耕耘及对物联网行业的深刻理解,而推出的面向个人、企业开发者的一站式智能硬件开发及云服务平台。提供了从定义产品、设备端开发调试、应用开发、产测、云端开发、运营管理、数据服务等覆盖智能硬件接入到运营管理全生命周期服务的能力,自助式智能硬件开发工具与开放的云端服务。通过傻瓜化的自助工具、完善的SDK与API服务能力最大限度降低了物联网硬件开发的技术门槛,降低开发者的研发成本,提升开发者的产品投产速度,帮助开发者进行硬件智能化升级,更好的连接、服务最终消费者。

页: [1]
查看完整版本: 半小时开发基于STM32的室内智能环境监测仪