接下来是ESP8266串口和IO初始化,如果要将EDP协议移植到其他芯片上,只需要修改此处的串口和IO初始化和net_io.c文件中的发送和接收中断函数即可。
后面依次是按键扫描程序段、数据与心跳程序段、平台下发命令解析程序段、传感器采集程序段、错误处理程序段、数据反馈程序段、初始化网络设备和接入平台程序段、网络设备检测程序段。大部分代码都有注释,阅读起来没什么难度。
使用开发板配套的STLINK,将3.3V、SWCLK、GND和SWDIO四个引脚连接到开发板上,再插上microUSB线,将程序编译烧录进开发板,通过串口助手查看打印信息发现,程序重复打印
STA
tips: AT+CWJAP="ONENET","IOT@Chinamobile123"
如果使用过ESP8266模块的AT指令就会发现此处是里连接WIFI的指令,后面填写的是默认的WIFI账号和密码,并没有经过修改,所以连接不上WIFI。只需要把账号和密码修改即可。在net_device.c文件开头出进行修改,填入自己的WIFI账号和密码。
NET_DEVICE_INFO netDeviceInfo = {"ONENET", "IOT@Chinamobile123", 0, 0, 0, 0}; //
重新编译烧录,发现蜂鸣器响了,串口打印出以下内容
Tips: NetWork OK
此时已经连接上服务器了,接下来就需要使用到EDP协议的功能了。
四、EDP协议
百度一下oneNET进入oneNET官网注册一个账号。注册后进入官网右上角的开发者中心。点击创建产品按钮,出现一堆选项,前面的可以随便填,最后三项依次选择WIFI、公开协议和EDP即可。
创建完成会进入产品页面,对于新手而言又是一大堆乱七八糟的东西,这里只需要复制 APIKey替换例程下的onenet.c文件开头处的 APIKey即可。
ONETNET_INFO oneNetInfo = {"4091363", "n16SUPyu9z0Ivb5IZo2oHwayE8w=", 0, 0, 0, 0};
然后进入左边的设备管理页面,添加一个设备,数据保密性选择公开,其他的随便填,最后点击接入设备,此时可以看到下方出现一个新设备。
复制此处的设备ID替换例程下的onenet.c文件开头处的设备ID。
ONETNET_INFO oneNetInfo = {"4091363", "n16SUPyu9z0Ivb5IZo2oHwayE8w=", 0, 0, 0, 0};
再次编译程序再次烧录了,这时发现网页上的设备显示在线,说明设备接入成功了。
五、应用创建
点击应用右边的查看详情,在里面创建一个应用,创建时可选开关、折线图、柱状图和仪表盘等控件。每一个控件的数据流可从硬件端上传过来的数据流中选择,如开关可选择Red_Led
代码中所适配的平台命令格式为:{xxx}{V}
控制LED4~7:{redled}{V}、{greenled}{V}、{yellowled}{V}、{blueled}{V}。开值1,关值0。
控制蜂鸣器:{beep}{V}。开值1,关值0。
具体处理参照onenet.c的OneNet_App函数。
硬件端上传过来的数据流包括LED的状态、各传感器数据等,可在main.c文件的dataStream[]数组中修改。
应用创建完成后,就可以实时查看硬件端上传过来的数据了,同时也可以通过开关控件对四个LED和蜂鸣器进行控制。