查看: 20546|回复: 6

[8月赛] 【开源盛世】ONENET实战篇(例程移植,8266多连接,http报文...

  [复制链接]

26

主题

256

帖子

873

积分

高级会员

Rank: 4

积分
873
发表于 2017-8-25 15:37:36 | 显示全部楼层 |阅读模式
本帖最后由 chenguang3312 于 2017-8-25 15:48 编辑



关于ONENET实战篇












                                                         主讲内容如下:

                                                                        1.  ONENET  EDP协议在非官方开发板上的移植

                                                          2.  ESP8266 多连接模式配置

                                                          3.  8266发送http报文和接收服务器数据格式初探











                                           部分理论内容来自互联网,本教程只为方便广大初学者学习接入云平台,禁止用于一切商业用途,转载请标明作者及来源。


关于ONENET  EDP协议在非官方开发板上的移植




     EDP方式接入onenetSDK包在onenet官网论坛资料区下载,因官方例程是基于麒麟系列的开发板编写的,麒麟用的是stm32f103系列芯片,本次以f103c8t6最小系统板为本次移植目标板,理论上移植是不需要更改任何代码的,但是麒麟座用的外部晶振是12MHz的,而市场上大部分厂家生产的开发板外部晶振为8MHz。因此需要更改一些配置参数。
1.打开下载好的源码例程,双击打开工程文件。

         QQ截图20170818175039.png
2.在左侧找到main文件双击打开
       U)2QOW2)PKA66F1@@XET7PM.png
3.main文件中找到#include<stm32f10x.h>
QQ截图20170818174237.png
4.单击鼠标右键选择  open document stm32f10x.h
QQ截图20170818174350.png
5.stm32f10x.h 文件中找到箭头所示的位置(119行),将12000000改为8000000【将外部晶振频率配置为8MHz
QQ截图20170818174610.png
6.在左侧工程文件栏找到  system_stm32f10x.c 双击打开
QQ截图20170818174708.png
7.找到如图所示的位置,将倍频系数改为9倍频【外部晶振8*9=72Mhz72Mhzstm32f103系列芯片理论上的最大运行速度
QQ截图20170818174919.png

8.到此为止,官方例程移植完毕。编译通过后直接下载就可以在自己的板子上运行官方例程.
QQ截图20170818183822.png
QQ截图20170818183912.png
































     ESP8266多链接配置教程


         ESP8266是一款串口wifi模块,模块内嵌 TCP/IP 协议,可以实现串口、WIFI 之间的数据传输转换传输. 模块内嵌AT指令,可以通过串口发送AT指令来操作模块。由于网上对ESP8266多连接模式配置,没有详细的教程,做物联网产品研发可能会让自己的设备同时登陆到第三方网站上获取信息,为了在获取第三方网站数据时,仍然保持与主服务器通信,这里就需要将8266配置为多链接模式.
为了方便本次教程用USB转串口模块为媒件,把电脑与ESP8266模块物理连接(做成产品是通过控制芯片的串口脚与模块连接)。


具体连接方式如图所示:

QQ截图20170818191224.png
    准备完毕后,在电脑端打开串口调试助手(教程所用软件由正点原子开发),选择正确的 COM 号,然后设置波特率为 115200,然后发送测试指令 ’’ AT“,返回OK则模块通信正常。如果未收到任何数据,尝试将USB转串口模块 Tx,和Rx 用杜邦线短接,再发送数据,查看是否收到同样数据,来判断是否是USB转串口模块故障。(注:初次使用USB转串口模块需要安装驱动


QQ截图20170818192614.png

1设置 WIFI 模式:
AT+CWMODE=1           //设置为 STA 模式

响应:OK

2重启生效
AT+RST
响应:OK

3连接路由器
AT+CWJAP=TP-LINK20E8,123465789 //连接的wifi密码
响应:OK

4开启多连接模式
AT+CIPMUX=1
响应:OK

5与服务器构建链接
AT+CIPSTART=0,"TCP","183.230.40.39",876
响应:0  CONNECT         
       OK

6与第三方服务器构建链接
AT+CIPSTART=1,"TCP","116.62.81.138",80
响应:1  CONNECT            
        OK

7发送数据(0号服务器发送113个字节数据)
AT+CIPSEND=0113
响应:OK
         >         


现在就可以向服务器发送数据了
QQ截图20170818194422.png






























ESP8266发送http协议格式和接收服务器

数据返回格式初探
         当设备与第三方服务器建立连接后,如果要获取或者设置某些数据就要通过服务器提供的API接口进行操作,这些API指令是http格式的命令,所以在教程开讲前有必要先简单了解下http协议的格式.
        HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定,HTTP有两类报文:请求报文和响应报文。


     请求报文:      一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,
       24802456_1.jpg
     (1)请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。
HTTP
协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。
GET
:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对   应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。
  POST
:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,可用来传送文件。

(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
(3)空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
对于一个完整的http请求来说空行是必须的,否则服务器会认为本次请求的数据尚未完全发送到服务器,处于等待状态。
(4)请求数据
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

本次教程分两部分,第一部分使用Fiddler 4,进行http报文发送测试,初步掌握http格式应用;第二部分使用ESP8266wifi模块进行设备硬件层的发送演示。

首先打开Fiddler 4 ,点击Compser
QQ截图20170818202930.png
以心知天气网API接口为例,向心知网服务器发送http格式的指令,来获取当地气象资料。发送格式为:https://api.seniverse.com/v3/weather/now.json?key=鉴权信息 &location=地址&language=zh-Hans&unit=c     鉴权信息是在心知官网注册后服务器给分配的。(具体API接口格式心知网有开发文档)

选择GET方式发送,填入http格式的API接口,点击最右边Execute
QQ截图20170818203552.png
正确发送后可以看到左侧栏监控的计算机网口收到一份json格式的数据
QQ截图20170818204127.png

双击打开它,选择Raw可以查看完整发送接收信息
QQ截图20170818204814.png



回复

举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2017-10-19 18:46:05 | 显示全部楼层
就没人写两个让小白看得懂的吗??

95

主题

576

帖子

2207

积分

金牌会员

Rank: 5Rank: 5

积分
2207
发表于 2017-8-25 16:14:02 | 显示全部楼层
好东西,顶起来
1、OneNET交流群6:887624121
该群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~

1

主题

17

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2019-2-15 13:18:02 | 显示全部楼层
老哥,我想问一下那个stm32的源码例程在哪里找到的,我找了半天都没看到,望发下网址或者例程邮箱 823032108@qq.com   谢谢了

0

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2017-10-11 17:18:34 | 显示全部楼层
谢谢分享,等待续集

1

主题

7

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2018-7-16 21:58:04 | 显示全部楼层
多谢分享!

1

主题

7

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2021-5-3 10:37:34 | 显示全部楼层
老哥,移植后你有没有遇到在发前几个连接命令的时候会不会出现连接比较慢的情况,可以连上但没有原版连接那么快,我看有时候是在延时函数那里停比较久。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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