ESP8266 01S WIFI 网络
ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。
ESP8266是上海乐鑫信息科技设计的低功耗WiFi芯片,集成完整的TCP/IP协议栈和MCU。而ESP8266模块是深圳安信可公司基于ESP8266芯片研发(增加必要外围电路、串口flash、板载天线等)的串口WiFi模块,成本低、使用简便、功能强大。
硬件与网络的桥梁
和串口蓝牙模块一样,串口WiFi模块也是扩展单片机功能的又一神器。在没有接触8266之前,我对单片机如何联网的问题很是好奇,在书里看过用笨重繁琐的以太网模块实现,但一点都不帅好吧。而小巧的 ESP8266 WiFi模块通过串口AT指令与单片机通讯,实现串口透传,非常好上手。
透传,又称透明传输,具体来说就是“输入即输出(如从WiFi模块串口输入的字符会透传到服务器端)”,数据不改变,不同协议之间的转换(如串口到WiFi、蓝牙等)由模块完成。使用者无需关心内部具体实现,因此模块对于使用者是“透明的”、似乎不存在的(因为可无视中间的实现原理)。一个高度封装的模块,应该隐藏内部实现细节,仅对外提供使用接口。
把硬件联网之后,就再也不是“玩单机”了。配合服务器端的Socket网络编程,可以玩许多东西。所以我觉得WiFi模块是连接软件(网络编程)与硬件(单片机)的桥梁,把我所学的单片机和Web知识联系起来了。
而近来“物联网”或者说“智能硬件”似乎也火了起来,许多强大的芯片和模块的出现使得联网设备的开发门槛大大降低。正是有了这些为物联网大业铺路的各大厂商们,我等对网络一窍不通的渣渣也能轻松将硬件联网、实现网络通讯。
原理图及引脚说明
Function | Description |
---|---|
URXD | UART_RXD,接收 |
UTXD | UART_TXD,发送 |
GPIO 16 | 外部Reset信号,低电平复位,高电平工作(默认高) |
GND | GND |
VCC | 3.3V,模块供电 |
GPIO 0 | 工作模式选择:悬空:FlashBoot,工作模式;下拉:UARTDownload,下载模式 |
CH_PD | 高电平工作;低电平模块供电关掉 |
GPIO 2 | (1)开机上电时必须为高电平,禁止硬件下拉;(2)内部默认已拉高 |
模块的连线
要让模块上电正常工作只需三处接线:VCC和CH_PD接3.3电源正极,GND接地。刚好USB-TTL下载模块上有3.3V的电源。而使用串口调试要再把模块与下载器的TXD和RXD交叉连接。这样一来WiFi模块就能与电脑连接、用串口助手进行测试了。
模块上电
电脑安装好USB-TTL模块的驱动后,USB口插上模块,在设备管理器查看串口号后,打开串口调试工具sscom,串口号选择模块对应的,默认波特率115200,数据-停止-校验-流控:8-1-None-None,勾选“发送新行”(一定一定要记得勾选“发送新行”,否则WiFi无法识别AT指令),点击“打开串口”按钮,然后将CH_PD引脚的3.3V电源断了重接进行复位,若串口打印乱码后看到“ready”,说明模块上电初始化正常。
和某些需要按键进入AT指令模式的蓝牙模块不同,ESP8266上电后就运行在AT指令模式下。
免冷启下载器的坑
记得有一次在实验室用ESP8266时怎么都不能成功上电初始化显示“ready”,AT指令也无法工作。最终把固件烧了一遍又一遍,把模块都“玩坏了”也还是不行,就像见了鬼一样……最终竟然是因为使用了免冷启下载器的原因。后来才知道ESP8266电源要求十分苛刻,必须“稳定纯净”,估计这种“高级下载器”内部电路会造成模块上电时电源不稳定,从而导致上电初始化失败。如果你也遇到同样的问题不妨换个USB-TTL下载器试试。
ESP8266的AT指令
AT指令最早在蓝牙模块上接触过,所谓AT指令实质上就是一些起控制作用的特殊字符串。模块可以通过AT指令控制使用和用源代码API函数开发,前者开发速度快,难度非常低(傻瓜化使用)。后者灵活,难度较大。 而我只用过AT指令,所以本文不涉及SDK开发。
AT+RST 重启
AT+RESTORE 恢复初始化,和手机恢复出厂一样
AT+GMR 查看版本信息
AT+UART=115200,8,1,0,0 "修改波特率、也叫设置串口配置"8是数据位8字节
AT+CWMODE? 查询工作模式
AT+CWMODE_DEF=1 配置WiFi工作模式
1.Station (客户端模式,模块可以连接到路由器) 2.AP (接入点模式,相当于路由器) 3.Station+AP (两种模式共存)")
Station:
AT+CWLAP
扫描当前附近WiFi,模块会返回可用AP列表。
AT+CWJAP="WiFi名称","WiFi密码"
连接到指定的路由器, 返回的“WIFI CONNECTED”说明连接成功,“WIFI GOT IP”代表模块分配到了IP。
AT+CWQAP
断开当前连接的WiFi。
AT+CWJAP? 查询当前连接的路由器
AP:
AT+CWSAP="ESP8266","12345678",3,4
设置AP的ssid为“ESP8266”,密码12345678,最后两个参数3和4分别表示信道和加密方式。
AT+CWLIF
可查看当前连接到AP的客户端列表。
AT+CIFSR 查询IP地址、MAC地址
TCP/IP:
AT+CIPMUX=0
设置单连接
AT+CIPMUX=1 设置成多连接 ,才能开启TCP服务
AT+CIPSERVER=1,8080 开启TCP服务
AT+CIPSERVER=0,8080 关闭TCP服务
AT+CIPPORT? 查询当前的TCP/UDP端口号
AT+CIPSTART="TCP","192.168.4.1",1234
(指令参数分别为连接类型、目标IP地址和端口号)向服务器发起TCP连接请求
AT+CIPMODE=1
开启透传模式
AT+CIPSEND
进入透传模式,此时模块会把所有串口收到的数据都从TCP端口发送至服务器,同样的,从服务器收到的数据也会从模块串口发送出去。这样WiFi模块就真正成为了连接硬件与网络的桥梁,实现了串口到TCP的协议转换。若要退出透传模式返回AT指令模式,需发送不带回车换行的 +++
(取消勾选sscom的“发送新行”再发送指令即可)
AT+CWSMARTSTART 启动智能配网 (使用微信可以云服务,安信可平台)
AT+CWSMARTSTOP 停止智能配网 (使用微信可以云服务,安信可平台)
AT+CLDSTART 开启云服务 (使用微信可以云服务,然后用安卓客户端)
其他常用指令
除了上面列举的主要功能指令,ESP8266 模块还有一些常用的指令:
指令 | 描述 |
---|---|
AT+CIOBAUD | 设置串口波特率 |
AT+SAVETRANSLINK | 保存透传到 Flash |
AT+CWSTARTSMART | 开启 SmartConfig |
AT+CWSTOPSMART | 停止 SmartConfig |
AT+CIOBAUD
指令用于设置串口波特率,示例: AT+CIOBAUD=9600
(设置波特率为9600)。 设置好TCP连接信息后通过 AT+SAVETRANSLINK
指令把TCP连接透传保存到Flash,掉电不丢失。重新上电后模块会自动联网建立TCP连接后进入透传模式,实现了真正意义上的透传,示例: AT+SAVETRANSLINK=1,"192.168.43.140",1234,"TCP"
。而 AT+CWSTARTSMART
和 AT+CWSTOPSMART
则时用来实现智能配置(Smart Config)的。
注意事项
使用WiFi模块的一些细节及注意事项
模块使用3.3V供电,一定注意电源的稳定,一些USB转串口模块电源不能满足要求。
模块在连接WiFi后若断电,则会在下一次上电后自动重连。同理,模块在透传模式下断电后,下次上电仍会进入透传模式,不响应AT指令,很容易误以为模块坏了。
如果断开TCP连接时没有实现完整的TCP退出流程,ESP8266 会判断为异常开,对TCP server 进行重连。
AT指令一定以回车换行符”\r\n”结尾,但退出透传模式需发送不带回车换行的
+++
ESP8266 01S WIFI 网络的更多相关文章
- 使用 ESP8266 制作 WiFi 干扰器 - 无需密码即可使用任何 WiFi
嘿,朋友,我是 Kedar,你有没有想阻止所有的 WiFi信号?或者只是想从 WiFi 踢某人或邻居 WiFi .那么,本玩法是你等待结束的时刻了.这是为你提供的.仅需 $8 的 DIY Wifi 干 ...
- Arduino IDE for ESP8266 ()esp8266项目 WIFI攻击器
https://www.wandianshenme.com/play/esp8266-nodemcu-create-portable-wifi-jammer/ 使用 ESP8266 制作 WiFi 干 ...
- 玩转X-CTR100 l STM32F4 l ESP8266串口WIFI模块
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]- ESP8266是一款非常火的WIFI模块,性价 ...
- ESP8266串口WiFi扩展板详解
产品简介 ESP8266串口WiFi扩展板是深圳四博智联科技有限公司开发的一款基于乐鑫ESP8266的超低功耗的UART-WiFi模块,兼容Arduino UNO.Mega等标准主板,可以方便地进行二 ...
- 【技术贴】大型发布会现场的WiFi网络应该如何搭建?
WiFi网络的部署要远远比一般人想象的复杂,不是说放上几十个AP带宽就自动增加几十倍,恰恰相反,简单放几十个AP带宽会由于AP之间的竞争而 迅速使带宽下降为几乎不可用.实际上这个问题完全可以写一本书了 ...
- 主机WIFI网络环境下,Linux虚拟机网络设置
在主机使用WIFI网络环境下,怎么样进行虚拟机静态ip设置和连接互联网呢,原理什么太麻烦,另类的网络共享而已: 1.其实简单将网络连接模式设置成NAT模式即可. 2.虚拟网络编辑器依旧是桥接模式,选择 ...
- 九、Android学习第八天——广播机制与WIFI网络操作(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...
- 如何在 Arch Linux 的终端里设定 WiFi 网络
如果你使用的是其他 Linux 发行版 而不是 Arch CLI,那么可能会不习惯在终端里设置 WiFi.尽管整个过程有点简单,不过我还是要讲一下.在这篇文章里,我将带领新手们通过一步步的设置向导,把 ...
- Android监听WIFI网络的变化并且获得当前信号强度
MainActivity如下: package cc.testwifi; import android.os.Bundle; import android.app.Activity; /** * De ...
随机推荐
- 捕获数据中的某个序列---verilog
捕获数据中的某个序列---verilog 状态变化图 先是检测序列,每当接收到cmp_equal信号时跳转到下一个状态,等待另外一个cmp_equal信号到来. 代码: always @ * case ...
- Win10安装Ubuntu子系统教程(附安装图形化界面)
一.启用“适用于Linux的Windows子系统” 通过Win10任务栏中的Cortana搜索框搜索打开“启用或关闭Windows功能”,向下滚动列表,即可看到“适用于Linux的Windows子系统 ...
- CentOS 7 install Tensorflow-gpu
# install TensorFlow GPU on CentOS 7.0# https://www.server-world.info/en/note?os=CentOS_7&p=tens ...
- HTTPS SSL & TLS
HTTPS (HTTP Secure) is an adaptation of the Hypertext Transfer Protocol (HTTP) for secure communicat ...
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- 在windows下安装、配置、运行PostgreSQL【转】
安装PostgreSQL 在Windows下的安装就位无脑安装,选择好安装路径就好了,我的安装目录为D:\PostgreSQL\10,需要注意一下几点: 安装过程中需要一个数据库的目录,我的为D:\P ...
- 了解原型设计工具pencil project
Pencil Pencil是一个功能强大的界面原型设计工具,可以设计网页和桌面程序界面,侧重点在于设计,支持自定义控件和导出模板,功能确实很强大. 内置形状集合 从2.0.2开始铅笔默认包含更多形状集 ...
- VB 调用 webservice 出现:WSDLReader:Loading of the WSDL file failed HRESULT=0×80040154: 没有注册类别 解决方案
有些 VB 程序在调用 webservice 的时候出现“WSDLReader:Loading of the WSDL file failed HRESULT=0×80040154: 没有注册类别 ...
- OpenCV中Mat的使用
一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...
- Python数据类型的内置函数之tuple(元组),dict(字典),set(集合)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) tuple(元组)的操作 - (count)统计元组中元素出 ...