收藏官网首页
查看: 8645|回复: 37

手把手教你STM32F412Discovery物联网智能远程控制应用开发

发表于 2017-2-13 14:10:54 | 显示全部楼层 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 bigfanofloT 于 2017-2-13 15:03 编辑

机智云开发者社区Copyright©2017 bigfanofIoT
一、系统概览

1-系统结构.png

利用全球领先的用第三方云平台-机智云,打造了基于STM32F412Discovery的物联网远程控制应用系统,实现的功能有:
a)      远程手机APP控制RGB LED的颜色(红、绿、蓝),256级深度可调;
b)     自带3种混合色,黄色、紫色、粉色,一键切换所需颜色;
c)      远程手机APP控制STM32F412Discovery板载3颗LED;
d)     远程手机APP显示温湿度传感器DHT11采集的环境温湿度;
e)      红外传感器障碍物检测;
f)       远程手机APP显示芯片STM32F412内部温度;
g)     远程手机APP控制微型直流电机;

2-实物图.jpg

视频:

二、硬件介绍


3-F412Discovery.png


ST公司的STM32F412XE/G是基于高性能ARM® Cortex® -M4 32位RISC核的MCU,工作频率高达100MHz,内核具有浮点单元(FPU),支持所有ARM单精度数据处理指令和数据类型,还能执行所有DSP指令,而存储器保护单元(MPU)则增强了应用安全性,集成了高达1MB闪存和256KB SRAM,工作电压1.7 V- 3.6 V,主要用在马达驱动和应用控制,医疗设备,工业应用如PLC,逆变器,电路断路器,打印鸡和扫描仪,告警系统,HVAC,家用音频设备,可穿戴设备和Wi-Fi模块等。开发板基于STM32F412ZTT6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。
4-GoKit介绍.png 5-GoKit V2.3扩展板正面.jpg 6-GoKit V2.3扩展板反面.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/创建一个名为F412DisShield的产品并添加数据点,数据点是设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据(点我详细了解数据点)。因为我们手机APP的功能需求是:
单独控制RGB LED的颜色(红、绿、蓝);
自带3种混合色,黄色、紫色、粉色,保证能一键切换所需颜色;
远程手机APP控制STM32F412Discovery板载3颗LED;
远程手机APP显示温湿度传感器DHT11采集的温湿度;
红外传感器障碍物检测;
远程手机APP显示STM32F412内部温度(通过芯片内置Sensor获取);
远程手机APP控制微型直流电机;
把以上进行抽象,依次为数值量下发控制、枚举量下发控制、开关量下发控制、数值量上报、布尔值上报、数值量上报、数值量下发控制。
所以建立如下数据点(这里可以利用官方提供的模板或者从excel导入):
12-创建数据点.png
13-方案模板.png
应用此模板后,另外新增4个数据点:3颗板载LED和MCU芯片内部温度,创建后的数据点如下(文末提供数据点excel下载):
14-数据点1.png
15-数据点2.png
五、MCU端编程
在云端创建产品,建立好数据点后,即可自动生成多种方案的工程,还可以下载通用手机APP(支持安卓和IOS)机智云Wi-Fi/移动通信产品调试APP进行测试:
16-1手机APP下载.png
在没有硬件设备时还可以进行在线虚拟调试以进行前期功能评估,机智云为广大开发者提供一系列简便的开发工具:
16-2开发向导1.png
17-开发向导2.png
如Demo APP,用户无需开发手机APP,可直接下载机智云提供的通用APP进行功能验证(本例使用的正是提供的通用APP,支持安卓和IOS);利用虚拟设备,在没有搭建硬件设备平台时可模拟设备与云端的交互:
18-虚拟设备1.png
19-虚拟设备2.png
接下来,我们使用MCU代码自动生成工具,生成一个STM32工程,在服务栏目->MCU开发,我们选择独立MCU+WiFi方案:
20-选择生成工程方案.png
这里选择STMF407x的,点击生成代码包即可;
21-生成工程1.png
很快就可以生成完毕;
22-生成工程2.png
下载生成的工程,解压后其文件组织目录如下:
23-生成工程目录.png
API介绍文档包含了设备接入框架简介和用户API;

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

接下来,我们先用STM32CubeMX生成STM32FF412ZGT6的基于HAL库函数的IAR工程,配置详细方法参见附件PDF文档:GokitShield_STM32F412ZGT6Discovery
29-STM32CubeMX配置.png
系统时钟配置为100MHz;
ADC1内部温度通道用于监测MCU温度;
定时器6为1ms中断,用于MCU和WIFI模组的心跳;
定时器7为1ms中断,用于按键扫描;

这里需要指出的是堆栈Heap和Stack的设置,需要修改大一些(可分析map文件确定)!另外工程文件夹名为GokitShield_STM32F412ZGT6Discovery:
30-堆栈设置.png
点击生成工程按钮,至此我们生成了一个初始化了外设的工程,但是还没有硬件(如温湿度传感器DHT11)的驱动以及和机智云交互的部分,接下来描述机智云协议层和硬件驱动层的移植。

我们把机智云MCU代码自动生成工具生成工程的GizWits目录拷贝到IAR工程中:
31-协议层移植.png
32-协议层移植2.png
到此完成了机智云协议层的拷贝,下面拷贝硬件驱动层

我们在机智云官网下载微信宠物屋源码
33-下载硬件驱动.png
解压,找到Hal文件夹,如下图,里面包含了RGB LED、微型直流电机、温湿度传感器DHT11等硬件驱动源码,但是这些是基于STD库函数且MCU是STM32F103C8T6:
34-解压硬件驱动.png
而我们STM32CubeMX软件生成的是基于HAL库函数且MCU是STM32F412ZGT6,所以需要简单的修改这些硬件驱动,移植这里就不介绍了,大家下载附件查看即可,我这里把这些驱动文件.c和.h放在一个文件夹Hal:
35-硬件层移植.png
打开IAR工程,新建HardWares和Gizwits分组,并添加好这些文件以及编译路径,如下图IAR工程,红框是机智云协议层,蓝框是硬件驱动层:
36-main逻辑.png
其中main.c文件的修改需要参考机智云MCU代码自动生成工具生成的工程里面的main.c文件,主要是初始化流程、用户数据上报接口、SuperLoop处理、按键处理;另外关于MCU相关的头文件包含也需要替换;需要修改的3个接口和需要添加的用户逻辑位于gizwits_product.c,前文提到的三个接口函数是定时器1ms中断,串口发送和中断接收如下图:
37-串口接口.png
38-定时器接口.png
39-用户接口.png
其他细节不再赘述,下载源码查看即可或者前往机智云论坛http://club.gizwits.com/ 查看更多教程;

编译完毕,下载代码,上电后打开串口调试助手可以查看日志。
总结:本文介绍了使用机智云自助开发平台快速创建智能产品的过程,并给出了移植机智云微信宠物屋SDK到STM32F412Discovery的过程。利用机智云强大的代码生成工具,我们只需简单的把用户代码填充到机智云为我们搭建的框架即可,而无需编写复杂的协议层代码,降低用户工作量,加快开发;同时利用STM32CubeMX快速图形化配置MCU外设,生成工程,屏蔽硬件层,使得不同系列STM32 MCU之间代码移植变得简单。
本例完整工程源码,资料请戳:http://club.gizwits.com/thread-4921-1-1.html
更多关于机智云平台资料、教程,请戳机智云文档中心:
更多实战项目示例,请戳机智云开发者论坛:

如有任何疑问,欢迎跟贴讨论

附件:
1.IAR工程源码:
游客,如果您要查看本帖隐藏内容请回复
2.STM32CubeMX配置PDF:
游客,如果您要查看本帖隐藏内容请回复
3.数据点excel:
F412DisShield数据点.zip (6.02 KB, 下载次数: 22)
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

5

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2017-4-7 18:38:01 | 显示全部楼层
写楼主,最近也在研究ESP8266与STM32F103系列的单片机进行连接呢

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2017-4-11 14:58:33 | 显示全部楼层
赞一个         

4

主题

13

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2017-4-19 23:17:12 来自手机 | 显示全部楼层
虚拟机的XP系统装烧入工具,运行不了,求解

0

主题

22

帖子

594

积分

高级会员

Rank: 4

积分
594
发表于 2017-2-13 22:48:41 | 显示全部楼层
注册成为机智云开发者,手机加虚拟设备快速开发
不错,值得学习,感谢楼主

3

主题

13

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2017-2-19 09:23:41 | 显示全部楼层
正在学习中,谢谢!

1

主题

31

帖子

423

积分

中级会员

Rank: 3Rank: 3

积分
423
发表于 2017-2-25 17:14:26 | 显示全部楼层
看看看看看看看看

3

主题

23

帖子

248

积分

中级会员

Rank: 3Rank: 3

积分
248
发表于 2017-2-27 10:58:45 | 显示全部楼层
厉害了 我的锅

0

主题

1

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2017-3-5 17:59:11 | 显示全部楼层
刚好在用STM32芯片,看看

1

主题

15

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
发表于 2017-3-10 16:33:43 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
谢谢了楼主啊

0

主题

1

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2017-4-1 10:39:05 | 显示全部楼层
本贴较好,想下载学习学习!

0

主题

20

帖子

328

积分

中级会员

Rank: 3Rank: 3

积分
328
发表于 2017-4-9 00:06:53 | 显示全部楼层
fdufhufhisofjdeaijeiqa

0

主题

8

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2017-4-9 01:51:37 | 显示全部楼层
It's good for study!

1

主题

5

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2017-4-18 18:05:29 | 显示全部楼层
初学者的福利啊,学习了

0

主题

7

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2017-5-3 21:08:25 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
kkkkkkkkghjgjh
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

© 2011-2017 Gizwits ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表