多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。

编者言

这是第二部分关于Esp8266在电脑端接入Onenet平台,并进行数据处理。以及Esp8266的一些用法。最大的目的就是为了之后自己在写Stm32的时候,直接拿这个做参考,这样会感觉很巴适。

往期目录

Onenet部分(第一期):
https://blog.csdn.net/nja12/article/details/105648774.
Esp8266部分(第二期):
https://blog.csdn.net/nja12/article/details/105660222.
Stm32部分(第三期):
https://blog.csdn.net/nja12/article/details/105751015.
Stm32Wifi接收部分+++(第四期):
https://blog.csdn.net/nja12/article/details/105852408.

第三天(04/22)

Esp8266和转接口
刚美图秀秀修的这张大图,首先是来展示用到的东西。

材料注释
Esp8266型号选择 1(点1跳到注释)
UsbtoEsp8266两种用法2(点2跳到注释)

Esp8266固件

Esp8266大家常见的其实就是AT固件,当然因为AT固件其实是比较老的,所以会有跟多更新的版本,甚至有些平台会用其他固件来完全代替AT。虽然那些固件其实还是按照AT来修改的。比如机智云的 GAgent 固件等。
At固件,GAgent固件和烧录包:
https://github.com/Basums/Csdn-resource-At.git.

首先Onenet平台咱们用的话AT固件就够了,之后咱们在Keil自己封装一下把这些东西给封装到咱们自己的库了就足够了。
那麽对于AT固件其实是对应AT指令集的。
常见的一些指令下面也罗列一下吧。

AT指令(简约版)

第四天(昨天下了课竟然睡着了)

写着写着也一边测试着(感觉自己写这一段像个爬虫)

指令返回值注释
ATOK------
AT+RSTOK3 (点击3跳到注释)重启模块

选择WiFi应用模式:AT+CWMODE语法规则:

命令类型语法返回和说明
设置命令AT+CWMODE = <mode>OK(此指令需重启后生效(AT+RST))
查询命令AT+CWMODE?+CWMODE:<mode> OK(当前处于哪种模式?)
测试命令AT+CWMODE?+CWMODE:<mode> OK(当前可支持哪些模式?)

参数定义:(Csdn弄下面这个表格还要我用Html5差评啧啧啧)

参数定义取值说明
<mode>WiFi应用模式
1Station模式
2AP模式
3AP+Station模式

列出当前可用接入点:AT+CWLAP语法规则:(就是看看Wifi模块检测到附近有啥热点)

命令类型语法返回和说明
执行命令AT+CWLAP
+CWLAP: <ecn>,<ssid>,<rssi>[,<mode>]
此指令返回AP列表
打码图

在这里插入图片描述
参数定义:

参数定义取值说明
<ecn>加密方式
0OPEN
1WEP
2WPA_PSK
3WPA2_PSK
4WPA_WPA2_PSK
<ssid>接入点名称 字符串参数
<rssi>信号强度
<mode>连接模式
0手动连接
1自动连接

画风突变开始群爬:
加入接入点:AT+CWJAP语法规则:(这个就是Wifi模块加入路由器或者移动设备发出的热点)
在这里插入图片描述
在这里插入图片描述
退出接入点:AT+CWQAP语法规则:
在这里插入图片描述
设置AP模式下的参数:AT+CWSAP语法规则:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(⭐)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
当然,因为这段是趴的,所以真诚的附上博主链接(奶鹅护体):
亲爱的某博主别举报我谢谢: 苍月代表我.

Esp8266三种模式(⭐)

这个我真的搞了很久。当然也期盼着学学计算机通信网络就会了(然而并没有)
首先来看Esp8266的三种模式,以及配置方法,以及各自的操作(Pc上,单片机上的之后在说到单片机部分的时候再开始讲)

STA 模式

ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
要说具体扮演什么角色这里也有张参考例图:

Esp8266<Client>
路由器
Pc<Server>
Pc<Client>
Android<Client>

分析:
很明显,这是一种Pc机提供局域网,其他部分就是单纯的客户端,简单来说就是,

Client:我连上你的热点了
Server:好的哥,您随便聊

那么怎么用呢?上面提到很多AT指令,那么咱们的用法是什么呢?

(昨天夜里没保存直接关电脑了&&&&败笔)

重新写一下:
STA模式:

即电脑采用AP模式

电脑开放一个热点

WiFi模块去连接我们的热点

AT+CWMODE=1

AT+CWJAP="jzc",'asd11asd'

wifi连接

AT+RST

AT+CIPSTATUS

电脑助手连接

AT+CIPSTART="TCP","电脑的地址",端口

(电脑TCPServer模式)

透传模式

AT+CIPMODE=1

AT+CIPSEND

都可以发

------------

+++退出

并不会断开连接

AT+CIFSE

AT+CIPSTATUS

AT+CIPCLOSE
AP 模式

ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。

MCU
Esp8266<Server>
Pc<Client>
Pc<Client>
Android<Client>
AT

AT+CWMODE=2

AT+CWSAP="JZC","123456789",4,3

AT+RST

AT+CIPMUX=1

连接WIFI热点

AT+CIPSERVER=1,8080

打开网络调试助手

电脑当客户端使用

WIFI做服务器



查WIFI模块IP 

AT+CIFSR

连接

发送消息

AT+CIPSEND=0(ID),4(长度)

TCPClient 8080
STA+AP 模式

两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。

需求

我们的需求其实并不是跟本地主机进行联系而是直接跟Onenet云主机联系~~~~
所以就算是Esp8266我们也依旧可以使用Post和Get方法

Post

Post请求往往是为了我们能上传数据点:
根据网络调试助手的操作是这样的:

协议类型Tcp Client
服务器Ip地址183.230.40.33
端口80
发送数据格式报文

报文格式:
POST /devices/592808742/datapoints?type=3 HTTP/1.1
api-key:Jl6WGd3z9Qmms0uGX7uGm=dq8jU=
Host:api.heclouds.com
Content-Length:60(别查错了)

{“datastreams”:[{“id”:“Online”,“datapoints”:[{“value”:0}]}]}
在这里插入图片描述
返回结果:
在这里插入图片描述
代表数据上传成功。
但是确实直接以数据流形式显示的:
在这里插入图片描述
所以可以改变上传内容
在这里插入图片描述
这样结果就是直接按照你的数据流里面进行更新。两种方法都有好处,也都有弊端。自己选择。

下面更换到Esp266:(STA模式就行)

操作步骤返回
ATOK
AT+CWMODE=1STA模式
AT+RST重载
AT+CWJAP="@K2",“PASSOWR”连接热点(只需要操作一次下次自动保存)
AT+CIPMUX=0设置成单路连接模式
AT+CIPSTART=“TCP”,“183.230.40.33”,80连接TCP服务器(重启的时候从这里开始就好了)
AT+CIPMODE=1设置为透传模式 (如果错误多点一下)
AT+CIPSEND启动透传发送
下面是关闭的时候的操作
+++退出透传模式,注意把发送新行勾掉
AT+CIPCLOSE断开连接

正在打开串口...

[12:42:37.791]发→◇AT
□
[12:42:37.795]收←◆AT

OK

[12:43:53.433]发→◇AT
□
[12:43:53.433]收←◆AT

OK

[12:43:55.001]发→◇AT+CWMODE=1
□
[12:43:55.005]收←◆AT+CWMODE=1

OK

[12:43:56.495]发→◇AT+RST
□
[12:43:56.499]收←◆AT+RST

OK
WIFI DISCONNECT

[12:43:56.599]收←◆
 ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 1856, room 16 
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8 
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8 
tail 0
chksum 0x79
csum 0x79

2nd boot version : 1.5
  SPI Speed      : 40MHz
  SPI Mode       : DOUT
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000


[12:43:56.699]收←◆\0
[12:43:56.723]收←◆屻?僴鞊{傮o|??弢{l勩{揹膌?d`你;?靌?$`屻s踠彏\0?dl sd徝sl尀銓bl宐r|廲x`靗鋌$s刲#潋'鐎no?宒鹥$?l剣???弆?l?o黒0臒銓#d烨p劅銓cd宐8{lsd
Ai-Thinker Technology Co. Ltd.

ready

[12:43:59.165]发→◇AT+CWJAP="Q2020","ai0406.0"
□
[12:43:59.173]收←◆AT+CWJAP="Q2020","ai0406.0"
WIFI DISCONNECT

[12:44:01.463]收←◆WIFI CONNECTED

[12:44:02.191]收←◆WIFI GOT IP

[12:44:04.173]收←◆
OK

[12:44:04.245]发→◇AT+CIPMUX=0
□
[12:44:04.253]收←◆AT+CIPMUX=0

OK

[12:44:06.755]发→◇AT+CIPSTART="TCP","183.230.40.33",80
□
[12:44:06.763]收←◆AT+CIPSTART="TCP","183.230.40.33",80

[12:44:06.811]收←◆CONNECT

OK

[12:44:10.178]发→◇AT+CIPMODE=1
□
[12:44:10.182]收←◆AT+CIPMODE=1

OK

[12:44:11.786]发→◇AT+CIPSEND
□
[12:44:11.790]收←◆AT+CIPSEND

OK

>
[12:44:43.703]发→◇POST /devices/592808742/datapoints?type=3 HTTP/1.1 
api-key:Jl6WGd3z9Qmms0uGX7uGm=dq8jU=
Host:api.heclouds.com 
Content-Length:20

{"Online":1;"Tec":0}
□
[12:44:43.775]收←◆HTTP/1.1 200 OK
Date: Sat, 25 Apr 2020 04:44:45 GMT
Content-Type: application/json
Content-Length: 26
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache

{"errno":0,"error":"succ"}

撒花

Get(Bug好多)

查了好多资料终于搞成了啧啧啧!!!!!!!!!!!!
在这里插入图片描述
一直失败的原因:
在这里插入图片描述
后面有两个回车!!!
换一种语气:
GET [具体你要用那种方式]\r\n
api-key:你的APIKEY\r\n
Host:api.heclouds.com\r\n
Connection: close\r\n\r\n(⭐)

然后是上Esp8266:
跟Post前面的操作完全一样,所以可以简单Rst之后,直接开启透传模式


[13:21:52.820]发→◇AT+RST
□
[13:21:52.828]收←◆AT+RST

OK
WIFI DISCONNECT

[13:21:52.928]收←◆
 ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 1856, room 16 
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8 
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8 
tail 0
chksum 0x79
csum 0x79

2nd boot version : 1.5
  SPI Speed      : 40MHz
  SPI Mode       : DOUT
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000


[13:21:53.032]收←◆\0屻?僩溘s凔'|??莬sd屻r踠宒?l`屸s抣鋖?l`勩{揹菬\0?ld`;l噧{d劅隳cd腸{|莃p`?靋l{宒c禧o锢g'?刲騲l?$寧???嘾?$€'黒0専銊cl鋸8尀銊cl腸prd;l
Ai-Thinker Technology Co. Ltd.

ready

[13:21:55.409]收←◆WIFI CONNECTED

[13:21:56.021]收←◆WIFI GOT IP

[13:21:56.425]发→◇AT+CWJAP="Q2020","ai0406.0"
□
[13:21:56.433]收←◆AT+CWJAP="Q2020","ai0406.0"
WIFI DISCONNECT

[13:21:58.738]收←◆WIFI CONNECTED

[13:21:59.545]收←◆WIFI GOT IP

[13:22:01.431]收←◆
OK

[13:22:01.527]发→◇AT+CIPMUX=0
□
[13:22:01.536]收←◆AT+CIPMUX=0

OK

[13:22:03.809]发→◇AT+CIPSTART="TCP","183.230.40.33",80
□
[13:22:03.817]收←◆AT+CIPSTART="TCP","183.230.40.33",80

[13:22:03.858]收←◆CONNECT

OK

[13:22:06.157]发→◇AT+CIPMODE=1
□
[13:22:06.165]收←◆AT+CIPMODE=1

OK

[13:22:07.914]发→◇AT+CIPSEND
□
[13:22:07.918]收←◆AT+CIPSEND

OK

>
[13:22:15.824]发→◇GET /devices/592808742/datastreams/Online HTTP/1.1
api-key: Jl6WGd3z9Qmms0uGX7uGm=dq8jU=
Host: api.heclouds.com
Connection: close


□
[13:22:15.899]收←◆HTTP/1.1 200 OK
Date: Sat, 25 Apr 2020 05:22:17 GMT
Content-Type: application/json
Content-Length: 190
Connection: close
Server: Apache-Coyote/1.1
Pragma: no-cache

{"errno":0,"data":{"unit":"bool","create_time":"2020-04-21 15:32:05","unit_symbol":"bool","update_at":"2020-04-25 12:44:45","id":"Online","tags":["mobile"],"current_value":1},"error":"succ"}

(单片机的时候可以直接按照定时器的间隔进行Post和操作,然后进行数据解析。)

第二期Over

第二期大概结束了。下面开始上板子。


  1. 关于Esp8266的型号选择,真的很多。网上的资料也比较复杂。我之前找过一些放在云服务器但是域名被收回,服务器也被回收了咳咳咳,全给我解析掉了。但是Github也是一个好地方:
    Esp8266资料: https://github.com/Basums/Csdn-resource-Esp8266.git/. ↩︎

  2. 一开始其实没太在意,以为就是8对8插进去就完事了。不过之前用机智云烧录固件的时候知道了这几个道道。其实像这种转接口的目的其实还是为Esp服务的,根据Esp用法的转接口的连接上也分两类。具体关于这部分的资料其他Csdn有比较详细的说明,可以自行查阅。我这里主要提两点我看到比较好的解释。
    第一点: 像这转接口建议直接买两个,用焊枪把第二个根据需要做修改就可以很容易把它改装成一个烧固件的转接口。
    第二点: 烧固件千万不能中途停止,否则会很尴尬。
    第三点: 可以买点公对母和姆对姆的杜邦线,否则有时候会严重影响做下去的心情。 ↩︎

  3. 当然大家看到是实际效果并不只是OK,还会有很多。像Esp8266这种东西往往配置一次基础在之后就不需要重新配置。而AT+RST这个往往就是重启一下,大家可以自己尝试尝试看看其他模块之前的设置是不是在重启之后被改变了。 ↩︎

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值