
stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭' l4 }; w! v; P: G5 S; Y2 V: s 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET6 V3战舰版开始学习,慢慢看视频,学会自己查手册找相应引脚功能等,再到现在用stm32f103c8t6最小系统板,积累的经验已经有一定程度了,今天就在这跟大家分享一个挺有趣的小实验!!!3 N5 ^7 b6 J8 z1 H' ]3 ` 本实验用到的器件:" k$ F7 M8 Z7 Q! b stm32f103c8t6最小系统板 ESP8266-01S(ESP8266固定波特率115200)) [- P% F7 s* g 接着再附上这个WIFI模块的连接图 ![]() / {' T7 w) u: }( m% I4 y5 Q+ a 整体连接图片如下: ![]() 这个实验有以下两个功能:% t# I( b" S7 i; M 单片机可以上传数据到云平台" r6 s: ]( V- e3 i2 e1 ^ 云平台可以远程下发命令控制单片机上面的LED灯(当然你也可以控制其他的器件,如:电饭锅、空调、窗帘、插座等)3 ~+ P1 n& _* `5 q7 t 首先,你要使用onenet云平台就需要先注册一下自己的账号,日后可以登陆用,现在云平台更新了新版本的,你进入云平台时,点击右上角的控制台,然后就进入另一个页面,在另一个页面左上角有一个切换到旧版,这样你就可以进入旧版创建产品,新版的还不太适应,建议用旧版比较好。步骤如下: 1 / x8 T$ r7 B& q8 A: t- ?7 x ![]() ' L% q1 h, b6 K( Z* b T 2 ' @8 M6 t5 O1 M ![]() 3 ![]() ![]() 接着就是要添加一个产品! [/ r8 y0 k) ^7 a A' L $ R1 \8 I* a- x2 H ![]() ; A7 o: z$ A: D! ?0 J/ A. O5 x& \ ![]() 6 l S4 m; B6 r 上面产品名称、行业、类别应该可以随便填,那个设备接入协议默认EDP,操作系统无,网络运营商:移动 添加完产品后,点击进入你的产品,如下图:% \/ G! \0 K: i! r/ o7 q9 p 8 G, i$ Y+ H- ]! F9 g4 d ![]() 然后就是添加设备了 ![]() ![]() 9 c& M8 X( S! T3 H3 m3 T+ q 上面图中设备名称,鉴权信息,数据保密性你都可以随便填,填好点击添加。 然后在下面就会出现一个你刚刚添加的设备,点击详情。 1 `7 j7 a# u9 e7 C ![]() 1 I. F6 I7 Q0 Y- ^0 z ![]() * h( J. A- y6 J. ]& R 4 ?. G$ r1 V1 z- ~$ s5 ?' a 点击添加后会出现如下图所示:这里面随便填 ![]() ( i J8 Y0 E) @5 `( S 接着点击提交,会在APIKey处生成一串英文,如下所示: & b; @! k" l$ D8 u0 }! t ![]() 到这里,我们需要保存的东西有设备的ID以及APIKey(也就是上面我用红色箭头指出的那两个要记住的)4 B: P2 T2 T4 v) y; V9 P 这样,我们的onenet平台的产品算是创建好了,接着我就来说说程序方面的。 程序主要有main.c、onenet.c、esp8266.c、EdpKit.c/ j" E$ ^: ~* B4 I 在代码中可以看到,我这里主要是控制stm32f103c8t6上面的LED灯的亮灭,所以初始化了PA.1这个引脚,下面给了他低电平,因为PA.1是上拉电阻给了它低电平,在初始化后他就自动亮起。 7 ]4 L( V! _7 c4 o# e' I c- t ![]() 附上主程序:! [. ^. @/ k8 O3 c2 |7 m7 {: S 2 K, q) m" E) W2 d. O ![]() 因为EDP协议下发命令需要一个数据流,所以必须提前发一个数据上去出现一个数据流来进行下发命令,通俗的讲就是两个人对话需要借助电话或者其他通讯工具进行通信 主函数前段主要做的工作就是实现系统的初始化和接入云平台,while(1)循环中实现的就是10秒发送一个数据保持EDP连接。 本程序最重要的几个点就是实现改程序的接口,在ESP8266.C中你需要修改无线热点名称和密码如下图。(这里需要注意的是,你要下载程序之前需要提前先开启笔记本电脑上面的热点或者手机上面的热点,让WIFI模块可以连接上你所开的热点)3 i6 D9 T5 }9 k, A. q4 L ![]() 你需要修改的也就是程序中第16行热点的名称,以及热点的密码;而下面第18行不需要修改。 ' L3 y$ _2 ?/ l: T0 c/ p ![]() # ~0 M2 b" \# j) w5 z7 e' ? 你还需要修改的就是onenet.c中的设备ID和秘钥如下图:(程序中的第42行和第44行,也就是上面我要求你们记住保存的那个ID和APIKey) ![]() 5 \& l. Q# d3 e" u1 c 你如果想创新,你可以修改onenet中的第256行代码实现你自己想做的东西,我控制的是LED灯,所以我在这行代码中用的是 . {2 F. j& ?5 Z7 f ![]() 7 R. M1 ?% n5 N( H: r/ N 当然你也可以改成你自己想要的,这样下端的代码接口就改好了。你现在就可以下载程序到开发板上面(再次提醒一次,要前开热点,否则WIFI模块连接不上热点是无法发送数据给云台的) 在程序中我发送给云台的数据是数字3,如下图所示: % e1 v1 F) p( T& t& `, Q ![]() 9 A' }6 R. K4 _2 u$ @, H! z9 m/ f* I 在云台上面收到的数据如下所示: ![]() ![]() ' _) [# j' g. Q! I, u 到这里,单片机上的数据上传到平台已经结束了。下面就说说平台如何下发命令给单片机控制你所需要控制的东西。$ }, ?7 d: u# _ z5 S% | 现在需要在平台上新建一个应用。点击应用管理,点击添加应用,在弹出的界面中随便填写如下图所示: ![]() 1 u) ?7 m' e5 s" x4 Y7 a ![]() 8 c1 a& E: x: N: E 点击新增,接着操作如下界面: + ~; C# u) q+ k; p3 P$ | ![]() % B$ K' q: G! {, I$ S! D" F ![]() 点击编辑应用,进入编辑模式:8 S; D6 R4 T* O9 b6 ~) e $ {% i! }3 \5 A1 `$ f& f, l$ U ![]() # {+ `3 Y/ F' l" X8 W X' E2 n 点击左下角控制元素中的开关,接着会在中间空白地方出现一个开关按钮,点击开关按钮,在右边会出现如下图所示: ![]() 6 L8 m& [- {, Q+ w8 I+ j( L" ?( J 这里强调一下,有些人点击右边的设备后,下面的数据流没有可选的,就是因为我前面说的那个需要先上传数据到云台上面后,数据流那里才可以有选择的东西,如果你不先上传数据到云台,数据流那里是没有让你选择的东西的。+ W8 d k% M' ? 添加开关,开关格式必须改成我对应的格式(下图中红色箭头所指地方,图上是显示led:{V}),不然命令下发过后,开发板识别不了也不会进行相应的操作。 ![]() 6 @% e+ l* [: b+ U% y& ]8 m 你如果将代码中的led改了(也就是onenet.c中第256行上的led),上图中的led也得改成对应的代码,至此远程控制LED灯已经成功。 ———————————————— 版权声明:i土豆1 s" N; q2 g3 c2 o, f / w( A8 d' ?) w9 K. H" {8 n |