物联网 NodeMCU:AT 篇
智能家具,物联网,说很火也火,一两年前,但我感觉现在更多的是技术沉淀中。当大环境发生变化,物联网这技术还是会爆发。
——所以我们先来点基础干货。
本 Chat 是用了基于 ESP8266 的 NodeMcu WIFI 模组进行讨论分享,为什么会选这一模组呢?因为不用再为 ESP8266其他模块怎么接线,上拉下拉什么鬼刷固件而抓狂,这个即插即用即刷,是一块非常适合新手入门的模块。
在本 Chat 中,你会学习到 GET 到:
- 物联网的一些基础概念。
- NodeMcu ESP8266 怎么刷写 AT 固件。
- NodeMcu ESP8266 怎么联网?
- NodeMcu ESP8266 怎么获得服务器数据?
- AT 固件常用的 AT 命令。
本教程最后要实现的功能就是:获取某网址上的 HTML 源代码。
本文会从最初的步骤讲起:
模块到手 --> 连接电脑 --> 刷写 AT 固件 --> 连接 WIFI --> 获取网址的 HTML 源码
在本 Chat 中,你会学习到:
- 物联网的一些基础概念。
- NodeMcu ESP8266 怎么刷写 AT 固件。
- NodeMcu ESP8266 怎么联网?
- NodeMcu ESP8266 怎么获得服务器数据?
- AT 固件常用的 AT 命令。
一、刷写 AT 固件
1.1 知识点
NodeMCU 认识 ESP8266 为核心的开发板 NodeMCU,极大的简化 ESP8266 刷写固件的接线方式,直接即插即用。
AT 固件 一种以 AT 开头执行命令的固件。能实现与互联网交互。
ESP8266 下载刷写工具用于 ESP8266 的固件刷写。
串口调试工具用于调试串口,查看发送或接收串口的数据 AT 命令、简单的AT测试命令。
TCP协议TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。具体请自行搜索。
数据透传透传即是透明传送,是指传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理。具体请自行搜索。
1.2 元件说明
NodeMCU 标准的解释可自行搜索,我说说我理解的那部分,这是一款非常方便的物联网开源硬件,以 ESP8266 为核心。
普通的 ESP8266 模块,例如 ESP-01,ESP-12 等等,刷写固件就接线就要搞个半天了,什么拉高拉低这里接那里接还要另外提供电源。
比起 ESP8266 的模块,这 NodeMCU 就显得易用很多,免除了很多麻烦,即插即用。
所以推荐新手入手 NodeMCU 模块,进行测试开发。
1.3 准备
操作系统:
使用 Windows 系统,本实例使用 Win10 系统平台
硬件:
NodeMCU 开发板 * 1
Micro USB 数据线(安卓手机用的那种)* 1
软件:
AT固件:AiCloud 2.0 AT(32mbit)
刷写工具:flash download tools 3.6.4
串口调试工具:sscom v5.13.1
1.4 连接模块
把NodeMCU 用 Micro USB 数据线连接计算机。
1.5 准备烧写
1. 打开烧写工具 Flash Download Tools 3.6.4
解压 Flash Download Tools 3.6.4,找到如下 exe 文件,双击运行!
运行程序后,会看到如下对话框,点击“ESP8266 DownloadTool”
2. 加载 AT 固件
在弹出的对话框中,可对固件的加载和刷写设置。
我们先选择我们需要刷写的固件,点击“…”,进行加载固件。
选择我们的固件,在这里 NodeMcu 使用的是 32Mbit 的 AT 固件,点击打开。
3. 烧写设置
如下图设置就好,值得注意的是 COM 口是你计算机对应的 COM 口,所以需要根据你的计算机设置。我把 NodeMcu 连接电脑,是 COM3,所以我需要在 COM 中选择 COM3。注意:AT 固件的烧写地址为 0x00000。
4. 完成烧写
点击“START”,开始烧写,稍等片刻,就会看到 FINISH 字样,表示已经完成烧写。
1.6 测试固件
1. 打开串口调试工具 sscom v5.13.1
解压 sscom v5.13.1,找到如下 exe 执行文件,双击运行!
2. 打开串口
弹出如下对话框,在端口号中,选择你计算机对应的端口,本例子我的计算机应用的 COM3,所以就选 COM3 了。波特率选择 115200。
设置好,点击打开串口,此时,需要按一下 NodeMcu 模块上面的 rst 按键,重启模块。过程中会显示出一些信息在文本框中。
3. 在输入框中,输入“AT”
在输入框中,输入“AT”,然后点击发送,文本框中返回了“OK”表示固件烧写成功,并且正常运行。
注意要勾选“加回车换行”,还有就是看是否已经打开串口。
4. 返回”OK”,刷写成功
二、连接本地WIFI
之前我们已经学了发送一个简单的命令"AT",会返回"OK"。
这里我们可以学习发送一些组合的命令,例如"AT+GRM",可返回当前固件版本信息。
1. AT+CWMODE_DEF=1
配置 WIFI 模块的工作模式为单 STA 模式,并把配置保存在 Flash,配置成功后,返回 OK
- STA 模式(1):ESP8266 模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
- AP 模式(2):ESP8266 模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。
- STA+AP 模式(3):两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。
2. AT+CWJAP_DEF="lingshun_lab","00000000"
配置 WIFI 名称和密码,并把配置保存在 Flash,每次模块通电后自动连接,格式如下:
AT+CWJAP_DEF="\名称/","\密码/"
连接成功后,逐行返回:
WIFI CONNECTEDWIFI GOT IPOK
至此,NodeMcu 已经连接上 WIFI 了,接下来测试是否连接成功和访问互联网。
3. AT+CIFSR
获取本地IP地址,返回:
+CIFSR:STAIP,"192.168.43.237"+CIFSR:STAMAC,"xxx:xxx:xxx:xxx:xxx:xxx**"OK
4. AT+PING="www.lingshunlab.com"
PING 互联网的网址,“”里面也可以是 IP 地址。其他网址正常会返回OK,如果没法访问是返回 ERROR。本例子返回:
+289OK
三、获取网站 HTML 代码
在之前的操作我们的模块已经确实能够与互联网连接的情况下,进行以下操作就可以获取网站的 HTML 代码。
1. AT+CIPSTART="TCP","www.baidu.com",80
建立TCP连接,这里以 www.baidu.com 为例,与该网站建立 TCP 连接。
连接成功,返回:
CONNECTOK
2. AT+CIPMODE=1
设置透传,即设置透传数据模式。设置成功,返回 OK。
3. AT+CIPSEND
开始发送数据。
设置接下来,开始发送数据,在返回的数据中会看到 >
这表示已经可以发送请求数据。
设置成功返回 OK。
4. 发送 GET 请求
例如以下语句:(更多详细的请搜索 html get 请求协议)
GET / HTTP/1.1Content-Type: application/json;charset=utf-8Host: www.baidu.comConnection: Keep Alive
(注意这里还要回车增加一个空行,具体请看图片)
注意:这需要在文本框中整段发送,发送后会获得一堆数据,这里就是HTML代码。举一反三,如果你的网址提供的是 json 数据,那么就可以获取服务器的一些信息,例如需要我开或者关的 0 或 1 数据。
5. +++
退出透传模式。
在文本框输入+++,把"加回车换行"的勾去掉,发送这段命令,就可以退出数据透传模式,返回 CLOSED。
结束
至此,学会了怎么与服务器获取数据,那提交数据呢?
当然用 get 也是可以提交数据的, 具体请查看相关协议,只是这样提交数据安全性有所欠缺。 学会了与服务器交互,那么你的 WIFI 模块只要能上网,就能外网控制了。
最后, 还有个 POST 协议, 相对安全地提交数据, 但我还没能成功实现,如果你测试成功了, 请在留言区与我分享,感谢。
AT 固件我怎么脱离计算机去做产品呢? 其实串口调试也就是串口数据,使用开发板的串口功能,就能与 WIFI 模块通信,实现更多功能。
本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。
阅读全文: http://gitbook.cn/gitchat/activity/5afe2aab0b9abe23960f1135
一场场看太麻烦?订阅GitChat体验卡,畅享300场chat文章!更有CSDN下载、CSDN学院等超划算会员权益!点击查看
上一篇: Linux 串口编程
下一篇: (嵌入式)STM32嵌入式应用系统设计