请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

图形化玩转Nucleo-STM32F413手机APP远程控制应用开发

[复制链接]
Stm32McuLover 提问时间:2017-2-13 11:05 /

一、概览 1-系统架构.png
利用全球领先的用第三方云平台-机智云,打造了基于Nuleo-STM32F413的物联网应用系统,实现的功能有:
a)      远程手机APP控制RGB LED的颜色(红、绿、蓝);
b)     自带3种混合色,黄色、紫色、粉色,一键切换所需颜色;
c)      远程手机APP控制Nuleo-STM32F413板载2颗LED;
d)     远程手机APP显示温湿度;
e)      红外传感器障碍物检测;
f)       远程手机APP显示STM32F413内部温度;
2-实物图.jpg
二、硬件介绍
3-图1.jpg
NUCLEO-F413ZH是ST公司推出的一款针对STM32F4入门级系列设计的Cortex-M4开发板,支持mbed ,兼容Arduino,同时还提供ST Zio接口 和 ST morpho扩展排针,可连接微控制器的所有周边外设。开发板基于STM32F413ZHT6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备Arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。
4-GoKit介绍.png 5-GoKit介绍.jpg 6-GoKit介绍.jpg
机智云是智能硬件时代专为硬件提供后台支持的云服务平台,服务的内容主要包括了统计分析、数据安全、远程管理、软件升级等。GoKit是机智云推出的一套智能硬件开发板,Gokit扩展板采用Arduino UNO接口,板载ESP8266-12F WiFi模块、温湿度传感器DHT11、2个按键、障碍物红外检测模块、微型直流电机、RGB 5050全彩LED。
三、软件系统
开发工具:STM32CubeMX和IAR for ARM,IAR不做介绍,这里介绍下ST推广的全新开发工具STM32CubeMX。
7-STM32CubeMX.png
STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时间和费用。 STM32CubeMX覆盖了 STM32 全系列芯片。它具有如下特性:
① 直观的选择 MCU 型号,可指定系列、封装、外设数量等条件
② 微控制器图形化配置
③ 自动处理引脚冲突
④ 动态设置时钟树,生成系统时钟配置代码
⑤ 可以动态设置外围和中间件模式和初始化
⑥ 功耗预测
⑦ C 代码工程生成器覆盖了STM32 微控制器初始化编译软件,如 IAR, KEIL, GCC。
⑧ 可以独立使用或者作为 Eclipse 插件使用

机智云智能设备接入原理:
8-机智云平台架构.png
9-系统逻辑.png
10-GAgent架构.png
硬件厂商对硬件智能化的第一步是让设备能够联网,GAgent是机智云提供的一款兼容国内主流Wi-Fi模块、移动网络模块的模组系统。硬件厂商只需理解如何与GAgent进行通讯即可。GAgent主要的作用是数据转发,是设备数据、机智云、应用端(APP)的数据交互桥梁。可将GAgent移植到WiFi模组、GPRS模组、PC端等。目前机智云提供由机智云移植的WiFi模组对应固件有:汉枫LPB100、乐鑫8266、汉枫LPT120、高通4004、RealTek 8711AM 、庆科3162等。简单的说就是,WiFi模块里面烧录了一个叫GAgent的固件,然后这个WiFi模块对用户的MCU就是串口透传了,复杂的协议、交互都给封装了。

四、云端配置
11-产品.png
我们在机智云开发者中心http://dev.gizwits.com/zh-cn/developer/创建一个名为F413ZH_Gokit的产品并添加数据点,数据点是设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。因为我们手机APP的功能需求是:
单独控制RGB LED的颜色(红、绿、蓝);
自带3种混合色,黄色、紫色、粉色,保证能一键切换所需颜色;
远程手机APP控制Nuleo-STM32F413板载2颗LED;
远程手机APP显示温湿度传感器DHT11采集的温湿度;
红外传感器障碍物检测;
远程手机APP显示STM32F413内部温度(通过芯片内置Sensor获取);
把以上进行抽象,依次为数值量下发控制、枚举量下发控制、开关量下发控制、数值量上报、布尔值上报、数值量上报。
所以建立如下数据点(这里可以利用官方提供的模板或者从excel导入):
12-创建数据点.png
13-方案模板.png
应用此模板后,把我们不需要的直流电机删除,另外新增3个数据点:2颗板载LED和芯片内部温度,创建后的数据点如下(文末提供数据点excel下载):
14-数据点.png
14-数据点2.png
五、MCU端编程
在云端创建产品,建立好数据点后,即可自动生成多种方案的工程,还可以下载自动生成的手机APP进行测试,在没有硬件设备时还可以进行在线虚拟调试以进行前期功能评估,机智云为广大开发者提供一系列简便的开发工具:
15-开发向导.png
16-开发向导2.png
如利用虚拟设备,在没有搭建硬件设备平台时可模拟设备与云端的交互:
17-虚拟设备1.png
18-虚拟设备2.png
接下来,我们使用MCU代码自动生成工具,生成一个STM32工程,在服务栏目->MCU开发,我们选择独立MCU+WiFi方案:
19-选择生成工程方案.png
这里选择STMF407X的,点击生成代码包即可;
20-生成工程.png
很快就可以生成完毕;
21-生成工程完毕.png
下载生成的工程,解压,其文件组织目录如下:
22-生成的工程目录.png
API介绍文档包含了设备接入框架简介和用户API;

注意Gizwits文件夹下包含4个文件,这些是机智云协议层的,已包含云端创建的数据点信息并留出用户接口:
23-生成的协议层.png
另外需要注意User目录下的main.c文件,这里包含了程序框架。
24-文件介绍.png
这个工程(基于STM32标准库函数且IDE为Keil for ARM)只是一个框架,但包含了和机智云通信协议层,用户只需要添加自己的驱动代码和业务逻辑,以本例来说就是我们需要实现RGB LED的驱动,板载2颗LED的驱动,温湿度传感器的驱动,STMF413芯片内部温度Sensor驱动、红外传感器的驱动,以及收到手机APP发的指令后干什么,软件逻辑如下:
25-框架.png
所以我们只需简单的移植一下,通过此图知道要把任意MCU通过WIFI模块连上机智云,只需实现3个简单的接口函数:串口发送、中断接收1字节数据,定时器1ms中断
26-io分配1.png
27-io分配2.png
如上图根据Nucleo-STM32F413和机智云Gokit V2.3扩展板原理图,确定了引脚分配。本来可以加上直流电机的,无赖Nucleo-STM32F413那里刚好缺少一个PWM输出;

我们先用STM32CubeMX生成STM32FF413ZHT6的基于HAL库函数的IAR工程,配置详细方法参见附件PDF文档:GokitShield_Nucleo144_STM32F413ZH
28-STM32CubeMX配置.png
这里需要指出的是堆栈Heap和Stack的设置,需要修改大一些!!!另外工程文件夹名为GokitShield_Nucleo144_STM32F413ZH:
29-工程堆栈.png
再把云端生成工程的GizWits目录拷贝到IAR工程中:
30-STM32CubeMX生成工程目录.png
31-协议层代码拷贝.png
到此完成了机智云协议层的拷贝,下面拷贝硬件驱动层
32-下载硬件驱动.png
解压,找到Hal文件夹,如下图,里面包含了外设驱动源码,但是这些是基于STD库函数且MCU是STM32F103C8T6:
33-解压硬件驱动.png
而我们STM32CubeMX软件生成的是基于HAL库函数且MCU是STM32F413ZHT6,所以需要修改这些硬件驱动,移植这里就不介绍了,大家下载附件查看即可,我这里把这些驱动文件.c和.h放在一个文件夹Hal:
34-移植好的驱动.png
PS:直流电机驱动hal_motor未使用;
打开IAR工程,添加好这些文件,如下图IAR工程,红框是机智云协议层,蓝框是硬件驱动层:
35-IAR工程.png
需要修改的3个接口和需要添加的用户逻辑位于gizwits_product.c,前文提到的三个接口函数是定时器1ms中断,串口发送和中断接收如下:
36-IAR工程接口1.png
37-IAR工程接口2.png
38-IAR工程接口3.png
其他细节不再赘述,下载源码查看即可或者前往机智云论坛http://club.gizwits.com/ 查看更多教程;

下载代码,上电,打开串口调试助手可以查看日志:
39-串口查看日志.png
总结:本文介绍了使用机智云自助开发平台快速创建智能产品的过程,并给出了移植机智云微信宠物屋SDK到Nucleo-STM32F413的过程。利用机智云强大的代码生成工具,我们只需简单的把用户代码填充到机智云为我们搭建的框架即可!

如有任何疑问,欢迎跟贴讨论
附件:
1.IAR工程源码

GokitShield_Nucleo144_STM32F413ZH.part01.rar (9 MB, 下载次数: 29)

评分

参与人数 2 ST金币 +20 收起 理由
Tcreat + 10 赞一个!
creep + 10 玩的真溜,感谢分享!

查看全部评分

收藏 5 评论18 发布时间:2017-2-13 11:05

举报

18个回答
Stm32McuLover 回答时间:2017-2-13 18:04:40
jack2016 发表于 2017-2-13 16:09
很强大,APP怎么开发

直接用官网提供的通用版本,也可下载sdk源码二次开发,做出界面更炫,功能更多的apo
高级放牛娃 回答时间:2017-2-13 20:55:33
jack2016 发表于 2017-2-13 16:09
很强大,APP怎么开发

APP很简单,下载了ADT,然后用例子可以改一个出来
Stm32McuLover 回答时间:2017-2-13 18:05:29
auroradst-10313 发表于 2017-2-13 16:41
支持楼主分享

感谢您的支持
犹豫的大三 回答时间:2017-2-13 11:23:38
顶楼主
zoomdy 回答时间:2017-2-13 11:48:56
机智云,有了解
seven101 回答时间:2017-2-13 16:09:58
很强大,APP怎么开发

jackten 回答时间:2017-2-13 16:11:23
厉害厉害        
auroradst 回答时间:2017-2-13 16:41:31
支持楼主分享
Stm32McuLover 回答时间:2017-2-13 18:05:08
zoomdy 发表于 2017-2-13 11:48
机智云,有了解

哈哈
队长shiwo 回答时间:2017-2-13 19:04:47
谢谢分享,学习学习
Stm32McuLover 回答时间:2017-2-13 20:11:44
队长shiwo 发表于 2017-2-13 19:04
谢谢分享,学习学习

zbber 回答时间:2017-2-13 20:17:30
支持楼主分享
Stm32McuLover 回答时间:2017-2-13 21:40:08

12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版