收藏官网首页
查看: 8602|回复: 31

[资料] 手把手教你全程图形化玩转智能硬件开发

发表于 2016-12-27 19:32:10 | 显示全部楼层 |阅读模式
校园创客福利
本帖最后由 Genius 于 2016-12-29 10:45 编辑

Copyright©2016 bigfanofIoT
一、概览
1-系统架构.png
利全球领先的用第三方云平台-机智云,打造了基于超低功耗Nuleo-STM32L073的物联网应用系统,实现的功能有:
  • a)      远程手机APP控制RGB LED的颜色(红、绿、蓝);
  • b)     自带3种混合色,黄色、紫色、粉色,一键切换所需颜色;
  • c)      远程手机APP控制直流电机的正反转;
  • d)     远程手机APP显示温湿度;
  • e)      红外传感器障碍物检测;
实物图.jpg
视频:
二、硬件介绍

2-NulceoL073正面.jpg
NUCLEO-L073RZ是ST公司推出的一款针对STM32L0系列设计的Cortex-M0开发板,支持mbed ,兼容arduino,同时还提供 ST Morpho 扩展排针,可连接微控制器的所有周边外设。开发板基于STM32L073RZT6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备Arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。
3-GoKit介绍.png 4-机智云Gokit扩展板正面.jpg 5-机智云Gokit扩展板反面.jpg
机智云是智能硬件时代专为硬件提供后台支持的云服务平台,服务的内容主要包括了统计分析、数据安全、远程管理、软件升级等。gokit是机智云推出的一套智能硬件开发板,Gokit扩展板采用Arduino UNO接口,板载esp8266-12F WiFi模块、温湿度传感器DHT11、2个按键、障碍物红外检测模块、微型直流电机、RGB 5050全彩LED。

三、软件系统
开发工具:STM32CubeMX和IAR for ARM,IAR不做介绍,这里介绍下ST推广的全新开发工具STM32CubeMX。
6-STM32CubeMX.png
STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时间和费用。 STM32CubeMX覆盖了 STM32 全系列芯片。它具有如下特性:
  • ① 直观的选择 MCU 型号,可指定系列、封装、外设数量等条件
  • ② 微控制器图形化配置
  • ③ 自动处理引脚冲突
  • ④ 动态设置时钟树,生成系统时钟配置代码
  • ⑤ 可以动态设置**和中间件模式和初始化
  • ⑥ 功耗预测
  • ⑦ C 代码工程生成器覆盖了STM32 微控制器初始化编译软件,如 IAR, KEIL, GCC。
  • ⑧ 可以独立使用或者作为 Eclipse 插件使用

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

四、云端配置


10-云端产品.png
我们在机智云开发者中心http://dev.gizwits.com/zh-cn/developer/创建一个名为NucleoL073GoKitS的产品并添加数据点,数据点是设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。因为我们手机APP的功能需求是:
  • 单独控制RGB LED的颜色(红、绿、蓝);
  • 自带3种混合色,黄色、紫色、粉色,保证能一键切换所需颜色;
  • 远程手机APP控制直流电机的正反转;
  • 远程手机APP显示温湿度传感器DHT11采集的温湿度;
  • 红外传感器障碍物检测;
把以上进行抽象,依次为数值量下发控制、枚举量下发控制、数值量下发控制、数值量上报、布尔值上报。
所以建立如下数据点(这里可以利用官方提供的模板):
11-数据点模板.png
12-选择模板数据点.png


创建后的数据点如下:
13-云端数据点.png
五、MCU端编程
在云端创建产品,建立好数据点后,即可自动生成多种方案的工程,还可以下载自动生成的手机APP或者进行在线虚拟调试,机智云为广大开发者提供一系列简便的开发工具:
14-云端开发向导.png
如利用虚拟设备,在没有搭建硬件设备平台时可模拟设备与云端的交互:
15-云端虚拟调试.png
16-云端虚拟调试界面.png
在服务栏目->MCU开发,我们选择独立MCU+WiFi方案:
17-选择生成MCU工程.png

点击生成代码包即可;
18-云端工程生成.png
下载生成的工程,解压,其文件组织目录如下:
19-云端生成工程目录.png
注意Gizwits文件夹下包含4个文件,这些是机智云协议层的,已包含云端创建的数据点信息并留出用户接口:
20-机智云协议文件.png
另外需要注意User目录下的main.c文件,这里包含了程序框架。
21-生成工程目录.png
这个工程(基于STM32标准库函数且IDE为Keil for ARM)只是一个框架,但包含了和机智云通信协议层,用户只需要添加自己的驱动代码和业务逻辑,以本例来说就是我们需要实现RGB LED的驱动,直流电机的驱动,温湿度传感器的驱动,红外传感器的驱动,以及收到手机APP发的指令后干什么,软件逻辑如下:
22-软件架构.png
所以我们只需简单的移植一下,通过此图知道要把任意MCU通过WIFI模块连上机智云,只需实现3个简单的接口函数:串口发送、中断接收1字节数据,定时器1ms中断
23-IO分配.png
如上图根据Nucleo-STM32L073和机智云Gokit V2.3扩展板原理图,确定了引脚分配。这里由于板载ST-LINK虚拟串口和Arduino UNO接口的串口有冲突,需要对Nucleo做点手术:
24-NulceoL073背面处理.jpg
我们先用STM32CubeMX生成STM32FL073RZ的基于HAL库函数的IAR工程,配置详细方法参见附件STM32CubeMX生成配置报表PDF
25-Cube配置.png
这里需要指出的是堆栈Heap和Stack的设置,需要修改大一些,另外工程文件夹名为GokitShield_Nucleo64_STM32L073RZ:
26-Cube堆栈设置.png
再把云端生成工程的GizWits目录拷贝到IAR工程中,移植硬件驱动即可。
27-IAR工程目录.png
28-IAR工程Gizwits路径.png
到此完成了机智云协议层的拷贝,下面拷贝硬件驱动层
我们在机智云官网下载微信宠物屋源码
29-官网下载源码.png
解压,找到Hal文件夹,如下图,里面包含了外设驱动源码,但是这些是基于STD库函数且MCU是STM32F103C8T6:
30-源码驱动路径.png
而我们STM32CubeMX软件生成的是基于HAL库函数且MCU是STM32L073RZ,所以需要修改这些硬件驱动,移植这里就不介绍了,大家下载附件查看即可,我这里把这些驱动文件.c和.h放在一个文件夹Hal:
32-IAR工程驱动路径.png
如下图IAR工程,红框是机智云协议层,蓝框是硬件驱动层。
33-IAR界面.png
需要修改的3个接口和需要添加的用户逻辑位于gizwits_product.c,前文提到的三个接口函数是定时器1ms中断,串口发送和中断接收如下:
34-接口1.png 35-接口2.png 36-接口3.png
上电,打开串口调试助手可以查看日志:
串口调试.png
手机APP主界面.png

其它细节不再赘述,代码修改移植细节请参考社区系列教程:

总结:本文介绍了使用机智云自助开发平台快速创建智能产品的过程,并给出了移植机智云微信宠物屋SDK到Nucleo-STM32L073的过程。利用机智云强大的代码生成工具,我们只需简单的把用户代码填充到机智云为我们搭建的框架即可。

[size=18.6667px]附件:
1.IAR工程源码:
游客,如果您要查看本帖隐藏内容请回复
2.STM32CubeMX配置PDF:
GokitShield_Nucleo64_STM32L073RZ.pdf (177.08 KB, 下载次数: 25, 售价: 1 金钱)
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
 楼主| 发表于 2017-8-29 21:53:04 | 显示全部楼层
Xuperfect 发表于 2017-8-29 13:56
居然上了串口4,而且PA9 PA10应该当做通用IO口使用了吧,话说回来,大粉丝,你咋这么多板子呢 ...

1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

15

主题

116

帖子

1230

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1230
发表于 2017-8-29 13:56:43 | 显示全部楼层
居然上了串口4,而且PA9 PA10应该当做通用IO口使用了吧,话说回来,大粉丝,你咋这么多板子呢
版主个人创立的QQ群:84225043,涉及 机智云, oneNET等平台,期待你的加入。
 楼主| 发表于 2016-12-29 12:14:12 | 显示全部楼层
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

3

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2016-12-30 22:42:15 | 显示全部楼层
学习下__________________________

35

主题

103

帖子

989

积分

高级会员

Rank: 4

积分
989
发表于 2016-12-31 06:06:01 | 显示全部楼层
支持!!!  优秀教程~

16

主题

37

帖子

4156

积分

论坛元老

Rank: 8Rank: 8

积分
4156
发表于 2017-1-3 09:26:30 | 显示全部楼层
汉枫LPB120模块
好教程,支持

0

主题

14

帖子

344

积分

中级会员

Rank: 3Rank: 3

积分
344
发表于 2017-1-4 22:17:50 | 显示全部楼层
我也是使用IAR的,对我很有帮助,谢谢了。

0

主题

2

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2017-1-5 15:36:23 | 显示全部楼层
手上有一块 STM32F072 打算移植上看看。

57

主题

156

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2017-1-24 12:30:56 | 显示全部楼层
大大的赞,好文

53

主题

138

帖子

1883

积分

金牌会员

Rank: 6Rank: 6

积分
1883
发表于 2017-2-5 18:11:03 | 显示全部楼层
好文章,必须顶

0

主题

20

帖子

328

积分

中级会员

Rank: 3Rank: 3

积分
328
发表于 2017-4-9 03:04:16 | 显示全部楼层
cbgyudshvdsuifhviosd

0

主题

2

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2017-6-26 01:11:18 | 显示全部楼层
资料难找啊  呵呵

0

主题

13

帖子

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 2017-7-31 15:45:46 | 显示全部楼层
好教程,支持

0

主题

8

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2017-8-28 22:44:36 | 显示全部楼层
想看看,就这么不容易呀!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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