你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32如何与服务器进行通讯

[复制链接]
Lumhao 发布时间:2020-2-21 12:37
随着物联网技术的不断的发展,万物物联以成为必然的趋势,同时各种云平台的建立和完善也为我们提供了不少的方便,那么我们如何使自己的产品搭载上这朵“云”快速发展呢?
# p, f1 ?+ h2 t
在STM32这个平台我们常用的来接服务器的方式就是用串口来传输数据,所以在选择连接服务器时的联网模块也选择串口的模块要想连接服务器首先我们要知道服务器的IP地址和数据协议,知道这些后我们就要进行软硬件的配置来铺我们进入服务器的路。

7 Y! M, N$ G1 A$ `+ G
WIFI模块我选用的是USR-WIFI232-B2一款高性能的工业级串口WIFI模块,该模块提供两种方式的配置方式,一种是AT指令,另一种是通过内置的网页进行配置,通过网页的方式比较方便,但在实际的应用中AT指令还是用的比较多的。

" x5 w3 o& H: d; o/ R
配置步骤

5 a" j& p  f5 ^! R; K8 q6 x1 [" b
11.png
6 E8 a( P1 U: K- \: u5 h
1) 设置WiFi的模式

+ w* q( |7 ]8 ]
WiFi模块可设置为AP模式(热点模式),STA模式(数据透传模式),STA+AP模式(此模式相当于路由功能),连接服务器时我们要连接外网需要配置成STA模式。组网示意图如下:

* v1 @4 e0 E1 w( J
22.png
# J0 Y5 |& {1 S( \0 [
首先发送“+++”,模块在收到“+++”后会返回一个确认码“a”;在收到“a”后再发送“a”,模块收到确认码后,返回“+ok”确认,进入 AT 命令模式然后就可以使用AT指令了。
" i' x' [5 {' G& W9 D2 T* p1 T5 V
33.png
$ q( O! T1 [+ j) M
发送“AT+WMODE=STA”使模块进入数据透传模式,设置成功后返回”+ok”。
. w/ u! I! B$ u, W2 D+ a9 ^
44.png

. u2 |, |5 a8 w! s
2) 连接网络

; z9 b+ W1 L+ v6 G" r3 m. [% [
使用“AT+WSSSID=WIFI_TEST” 设置模块要接入的网络名称,这里要注意的是WiFi名不要是汉字否则的话连接不上WiFi,设置成功后返回+ok“”
“AT+WSKEY=WPA2PSK,AES,12345656”这三个参数分别是认证模式、加密算法和密码。设置成功后返回+ok“”

- g, c8 g2 Z3 t1 }
55.png

( z" L/ `9 G  @
3)配置服务器的地址和路径
有的WiFi模块是直接有HTTPD模式的如果有这种模式我们可以直接把服务器的IP地址和端口号,报头路径,请求类型和HTTP的报头配置好然后模块会封装好,在我们每次发送信息时会自动为我们加上,返回服务器的数据时报头也会自动滤除,如果没有HTTPD模式的话我们需要在程序中每次与服务器通讯时自己加上报头,服务器返回数据需要自己解析。那么给我们一个地址我们如何知道这些信息呢。
8 H" l( S, s; v6 ~9 l
121.42.204.154是IP地址有的服务器直接就是域名如:mp.toutiao.com/ 直接填写也可以,模块会自动解析域名
7089是端口号有的IP或域名后面没有写端口号,默认的是80/index就是服务器的报头路径请求类型的话目前有八种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现GET提交的数据会放在URL之后,以?分割URL和传输数据 POST方法是把提交的数据放在HTTP包的Body中.当我们拿到服务器的说明文档时就可以确定请求类型。
( e" Q3 `5 [4 n% c6 _1 ]- n# {
66.png

; c% F6 O# j% E" A  s
4)HTTPD模式配置:

" T6 x" }" @, V
1. 设置HTTP的IP地址和端口号
AT+ HTTPURL=<ip>,<port><CR>
ip:HTTP 服务器的 ip。
port:HTTP 服务器的端口。
设置成功返回+o
. @4 I8 M( ~  s% G' \+ \
2. 设置报头路径
AT+ HTTPPH=<path><CR>
path:报头路径
设置成功返回+ok;

9 F, n5 N7 X; I5 x) r
3. 定义HTTP报头
AT+ HTTPCN=<connection><CR>
Connection:HTTP 协议头的 Connection。
设置成功返回+ok;
AT+ HTTPUA=< User-Agent><CR>
User-Agent:HTTP 协议头的 User-Agent。
设置成功返回+ok;
AT+ TMODE=< Httpclient><CR>
将模块设置为HTTP客户端模式
设置成功返回+ok;

, Z% P3 g: t6 q& m1 [3 {0 A9 W
77.png

# M! u9 K) Q. {  I  k0 U7 R1 e6 \" k
设置完成后重启WiFi即可完成设置与服务器进行连接通讯。
4、使用TCP协议构造报头
如果没有HTTPD模式就需要进行TCP的配置,自己构造报头。
设置网络连接的方法和上面一样,接下来就是配置TCP
使用AT+NETP=TCP,Client,5021,121.42.215.178
设置成功后返回+ok;
GET方式构造报头路径如下:
GET/indexl/?mcc=460&mnc=1&lac=4301&ci=20986&output=csvHTTP/1.1
Host: 121.42.204.154:5021
Connection:keep-alive
User-Agent:lwipl3.2
接下来一定要有两个换行,不然格式是错误的通信不成功。
POST方式构造报头路径如下:
POST /2.php? HTTP /1.1
Connection:keep-alive
User-Agent:lwip1.3.2
Content-Length:4
Host: 121.42.204.154:5021

5 D8 M9 L* E1 k% L. {
接下来一定要有两个换行,不然格式是错误的通信不成功。
; W9 b8 u' U# A- b, Y' G
1234
- q) ^6 k( k% k& }0 t
接下来对服务器返回数据进行解析即可。当构造报头路径时,在编程之前最好使用POST,GET工具对构造的报头进行测试,没有问题在进行程序编写。

; k4 ~( b9 W  c7 J# D7 v# a
' Z4 q; y$ s5 r: z  \
% `, f) q7 x1 Z. n9 g/ ?( |5 v; h
赞 收藏 1 评论1 发布时间:2020-2-21 12:37

举报

1个回答
慎微 回答时间:2020-2-21 17:21:41
感恩分享!

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版