收藏官网首页
查看: 15602|回复: 21

MCU开发——3步接入机智云

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
发表于 2016-9-7 19:04:03 | 显示全部楼层 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 李~ 于 2016-9-9 09:51 编辑

对于MCU开发的小伙伴来说,突然接触到物联网可能会有点不知从哪里入手的感觉,其实在机智云平台下,MCU到云端的距离可以只有简单的3步,对,不管什么51、avr、msp430、stm8/STM32都是下面3步:
Step1、本地开发
本地开发是指产品本地功能的实现,也就是不涉及任何云端功能的时候MCU代码的实现,这一步应该而且必须是已经实现的,这里有两点准备工作要做:
1)MCU需要开启一个串口,以便用于和WIFI模组通讯,串口配置参数9600,8,N,1,开启串口接收中断,中断入口函数在下一步中填充;
2)MCU需要开启一个1ms的定时器,开启中断,中断入口函数在下一步中填充;
这一步可都是MCU开发最最基本的技能哦,和云端和网络没有任何关系,要是有小伙伴搞不定那需要多在基础上下点功夫了,至少定时器和串口要搞定,这块补起来快的话三两天,慢的话也就一周就能搞定。


Step2、平台移植
这一步是非常核心的步骤,很多人都是这里没弄明白,我这里说明尽量不固定在特定MCU,如果有遗漏或疑问可以跟帖讨论:
首先来看源码目录结构:
002.png
在这个工程中,只有图中黄色框中的文件需要用户拷贝到自己平台下,而且只有红色箭头指向的4个文件需要用户t特别关注。
其中main.c里面的是“数据上报下发流程”和“用户业务逻辑的处理”,“数据上报下发流程”一般不需要用户做修改,“用户业务逻辑的处理”说简单点就是:云端的数据来了,你想拿这些数据做什么事情以及你想把本地哪些数据传回云端,这部分都是一些分支和判断,语法非常明了,但数据的对应关系需要用户非常明白,为帮助用户理解,云端工程创建结束时会自动生成一个PDF文档,即“XXX机智云接入串口通信协议文档”,该文档4.9和4.10小节说得非常明白;
006.png
接下来是hal文件夹下的文件,这些文件都是一些**设备的驱动文件,根据用户产品不同自行增减维护,其中hal_key.c中有按键相关的驱动,和配网相关,需要用户根据自己实际配网按键连接IO进行移植。


下面看stm32f10x_it.c这个文件,找到函数“void USART2_IRQHandler(void)”,还记得Step1中MCU开启的一个串口中断,入口函数是空的吗?就是为这个函数留的,把这个函数里面的内容复制过去,当然主要是下图阴影部分的,其他部分是清除中断标志位操作这个和平台相关,搞不定的请复习下基础知识。
007.png
再往下找到函数“void TIM3_IRQHandler(void) ”,聪明的你应该已经猜到,我们Step1中开启了一个1ms的定时器中,中断入口函数是空的,那么就把这个填充进去,同样的,重要的是下图阴影部分。
008.png
最后看下hal_uart.c这个文件,找到函数“void UART2_Send_DATA(uint8_t data)”,这里需要修改的是把里面串口发送data的那个函数替换成自己平台下和模组通信用的那组串口的发送函数。
009.png
至此,可以说平台的移植工作已经基本完成,当然,直接编译是无法通过的,因为剩下的许多头文件、外部引用**需要用户进行微小改动,调试串口这些需要用的话自行移植,不需要的话不影响,为降低移植难度,这里没有提及;另外记得修改productkey为自己产品的哦。

Step3、修改数据点
我们上面两步只是搭建了一个从本地到云端的“通道”,我们要这个“通道”的目的是为了进行远程数据传输,说白了就两个:“远程指令的接收”和“本地数据的上传”,要传输就首先要有“数据”,这个“数据”从哪里来?需要我们去定义,当然也不是随便定义的,需要我们根据我们的产品去定义,同时,既然是数据传输,那这就要求我们分别在“云端”和“本地”都要定义这组数据,而且两端要对应上,下面分别来讲。
1)云端数据点
在云端定义数据的过程就是我们说的“数据点创建”,也就是官网【首页】->【快速入门】->【云端管理】这一栏 ;什么?看文档太累?好吧,我们准备的有视频:只有5分钟,对,就这5分钟就可以在云端定义你的产品,看的时候切换到高清播放哦,别再说视频不清晰啦。
005.png
2)本地数据点
本地数据点不需要用户去创建,但是需要根据自己云端定义的数据点进行修改调整,需要修改调整的地方就两个结构体:
010.png
时间有限,就写这么多,有疏漏之处敬请指出,有疑问之处请跟帖讨论!


10

主题

71

帖子

828

积分

高级会员

Rank: 4

积分
828
QQ
发表于 2016-9-9 20:42:59 | 显示全部楼层
亲,问个问题;整个源码里面是不是只有TIM3被暂用了;其他几个定时器没有暂用吧。所以TIM3对于的几个PWM都用不了了;那么其余几个定时器对应的PWM接口在哪些呢,或者在哪里能查到这方面的资料,看了几个文档都没有找到,忘解答,谢谢.....

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-9-27 10:03:52 | 显示全部楼层
本帖最后由 李~ 于 2016-9-27 10:05 编辑
shsxg 发表于 2016-9-26 22:35
楼主写得很好,学习了。但机智云几乎所有的例程都是基于MCU通过UART串口驱动WIFI模块实现接入的,可我用的 ...

“MCU与WIFI在同一个芯片内”?
机智云支持两种开发方式:第一种就是本帖说的MCU+WIFI模组方式,简称MCU方案,你的应该不是;
第二种是SOC方案,就是使用集成了WiFi功能的MCU,这部分需要基于网络API进行深入开发,而不同厂家的片提供的API差异比较大,个人开发者做的话难度较大,一般会有官方提供开源源码,基于官方源码再做二次开发,例如esp8266的soc方案有源码可以下载,至于你的CC3200目前还没有;
所以,建议你考虑下下面这个方案:
1、在开发板上找一个空闲串口,外接一个烧写了机智云固件的ESP8266-12F,增加成本也就12块左右,放弃CC3200上的WiFi,这样就可以很快完成开发。
当然,如果你对网络和CC3200WiFiAPI都很熟悉,可以参考ESP8266 SOC方案的源码进行基于CC3200的SOC方案开发。


2

主题

33

帖子

1904

积分

金牌会员

Rank: 6Rank: 6

积分
1904
发表于 2016-11-5 23:29:29 | 显示全部楼层
李~ 发表于 2016-9-27 10:03
“MCU与WIFI在同一个芯片内”?
机智云支持两种开发方式:第一种就是本帖说的MCU+WIFI模组方式,简称MCU方 ...

谢谢回复,CC3200就是SoC,有人已将其连上机智云,但仅只是心跳而已,无法收发数据。因为机智云官方没有类似ESP8266的固件可用,且CC3200MCU与其内部的WiFi模块(CC3100)是采用LSPI通信,不是采用UART通信,又因为机智云与Wifi之间通信协议未开放,的确很难改写程序,实现连接机智云。

560

主题

1219

帖子

7690

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7690
发表于 2016-9-8 14:16:37 | 显示全部楼层
等待你发出来
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

3

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2016-9-10 11:13:11 | 显示全部楼层
大神,请收下我的膝盖

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-9-12 09:29:32 | 显示全部楼层
杀进丧尸城 发表于 2016-9-9 20:42
亲,问个问题;整个源码里面是不是只有TIM3被暂用了;其他几个定时器没有暂用吧。所以TIM3对于的几个PWM都 ...

1、是的只用了TIM3;
2、定时器PWM请百度“STM32 PWW”视频、文档非常多,属于stm32基础知识,做产品的第一关,只能自己补。另外我比较习惯用HAL库,本帖目的在于简单讲解一下官方MCU开发包的结构组成和移植方法,不在于基础知识讲解。

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-9-12 09:30:18 | 显示全部楼层
JackyHuang 发表于 2016-9-10 11:13
大神,请收下我的膝盖

我也是新手,共同学习,有问题欢迎跟帖讨论

2

主题

11

帖子

647

积分

高级会员

Rank: 4

积分
647
发表于 2016-9-19 22:37:59 | 显示全部楼层
请问楼主当连接上云后是否可以透传啊?

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-9-20 08:47:13 | 显示全部楼层
安星 发表于 2016-9-19 22:37
请问楼主当连接上云后是否可以透传啊?

可以进行数据上传和下发,不知道你说的透传是什么意思,就是你在云端定义了数据点,本地也定义了相对应的数据点,那么这些数据点就可以通过上传和下发过程进行同步

2

主题

11

帖子

647

积分

高级会员

Rank: 4

积分
647
发表于 2016-9-20 09:14:06 | 显示全部楼层
李~ 发表于 2016-9-20 08:47
可以进行数据上传和下发,不知道你说的透传是什么意思,就是你在云端定义了数据点,本地也定义了相对应的 ...

是的,只是通过模块连接广域网的功能把远端的数据直接传输到单片机的端口上再执行相应的控制。

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-9-20 10:35:17 | 显示全部楼层
安星 发表于 2016-9-20 09:14
是的,只是通过模块连接广域网的功能把远端的数据直接传输到单片机的端口上再执行相应的控制。 ...

就是这个意思,可以的

2

主题

11

帖子

647

积分

高级会员

Rank: 4

积分
647
发表于 2016-9-20 10:41:33 | 显示全部楼层
汉枫LPB120模块
李~ 发表于 2016-9-20 10:35
就是这个意思,可以的

你好,这个  http://club.gizwits.com/thread-3551-1-1.html  如何实现的可以不要单片机通过模块直接连接上云吗!?

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
 楼主| 发表于 2016-9-20 11:43:02 | 显示全部楼层
安星 发表于 2016-9-20 10:41
你好,这个  http://club.gizwits.com/thread-3551-1-1.html  如何实现的可以不要单片机通过模块直接连接 ...

1、如何实现请看原帖或跟原帖问楼主;
2、可以不用其他MCU,只用WIFI模组连接到机智云,这就是SOC方案,这个前提是你熟悉WIFI模组的开发,比如ESP8266或者汉枫或者其他机智云支持维护的模组型号

1

主题

5

帖子

771

积分

高级会员

Rank: 4

积分
771
发表于 2016-9-23 16:31:58 | 显示全部楼层
很好很强大

2

主题

33

帖子

1904

积分

金牌会员

Rank: 6Rank: 6

积分
1904
发表于 2016-9-26 22:35:43 | 显示全部楼层
楼主写得很好,学习了。但机智云几乎所有的例程都是基于MCU通过UART串口驱动WIFI模块实现接入的,可我用的是CC3200开发板,MCU与WIFI在同一个芯片内,用的是SPI传输,且驱动API都是以库形式提供的,没法修改。用了例程后,有许多地方需要修改,特别是与MCU相关的部分,很苦恼。

1

主题

220

帖子

1198

积分

金牌会员

Rank: 6Rank: 6

积分
1198
发表于 2016-9-29 10:41:37 | 显示全部楼层
很好很强大,赞赞

1

主题

25

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
发表于 2018-1-17 14:57:04 | 显示全部楼层
校园创客福利
串口中断函数阴影部分怎么理解啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

© 2006-2022 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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