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

Esp8266和Onenet的简单牵手

  • 编者言
    • 往期目录
    • 第三天(04/22)
      • Esp8266固件
      • AT指令(简约版)
    • 第四天(昨天下了课竟然睡着了)
      • Esp8266三种模式(⭐)
        • STA 模式
        • AP 模式
        • STA+AP 模式
        • 需求
          • Post
          • Get(Bug好多)
    • 第二期Over

编者言

这是第二部分关于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)

多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第1张图片
刚美图秀秀修的这张大图,首先是来展示用到的东西。

材料 注释
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指令(简约版)

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

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

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

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

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

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

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

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

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

多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第2张图片
参数定义:

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

画风突变开始群爬:
加入接入点:AT+CWJAP语法规则:(这个就是Wifi模块加入路由器或者移动设备发出的热点)
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第3张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第4张图片
退出接入点:AT+CWQAP语法规则:
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第5张图片
设置AP模式下的参数:AT+CWSAP语法规则:
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第6张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第7张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第8张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第9张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第10张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第11张图片
(⭐)
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第12张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第13张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第14张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第15张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第16张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第17张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第18张图片
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第19张图片

多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第20张图片
当然,因为这段是趴的,所以真诚的附上博主链接(奶鹅护体):
亲爱的某博主别举报我谢谢: 苍月代表我.

Esp8266三种模式(⭐)

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

STA 模式

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

Esp8266
路由器
Pc
Pc
Android

分析:
很明显,这是一种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
Pc
Pc
Android
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}]}]}
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第21张图片
返回结果:
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第22张图片
代表数据上传成功。
但是确实直接以数据流形式显示的:
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第23张图片
所以可以改变上传内容
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第24张图片
这样结果就是直接按照你的数据流里面进行更新。两种方法都有好处,也都有弊端。自己选择。

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

操作步骤 返回
AT OK
AT+CWMODE=1 STA模式
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劅銓cd宐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好多)

查了好多资料终于搞成了啧啧啧!!!!!!!!!!!!
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第25张图片
一直失败的原因:
多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。_第26张图片
后面有两个回车!!!
换一种语气:
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劅隳cd腸{|莃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这个往往就是重启一下,大家可以自己尝试尝试看看其他模块之前的设置是不是在重启之后被改变了。 ↩︎

你可能感兴趣的:(多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记【二】(完结)。)