ESP8266 模块

目录

一、模块简介

二、功能介绍

三、用法示例

本文将实现 Arduino UNO 通过 ESP8266-01 模块连接机智云平台,从而实现用手机 APP 远程点亮 LED 灯。物联网的英文名称是 Internet of Things。IoT 则是 Internet of Things 的缩写。因此, 物联网 = IoT。通俗地说,物联网是互联网的一种拓展。我们知道互联网是由无数的计算机和智能手机交错连接而编织成的一张网。而正是有了像

ESP8266 这样的物联网模块,让以前不能上网的设备也可以连网。有了这些新联网成员的互联网也就不再是单纯的互联网,而被称作物联网。因此,物联网是互联网延伸到更多的设备以后所形成的网络。因此,物联网使用的就是我们每天都在使用的互联网。

模块简介

ESP8266 是一块芯片,ESP8266 是实现 WiFi 通讯的一个模块种类有很多,分为ESP8266-12、ESP8266-12E、ESP-01s、ESP32 等等这些模块一般用于

WiFi 通讯


arduino ESP8266WiFi库下载 arduino esp8266wifi模块_串口

如图是 ESP-01s 模块它是由一颗ESP8266 作为主控再由一颗 flash 作为存储芯片组成的,带有板载芯片供电采用3.3V 电压使用串口进行烧写程序和 AT指令集调试的,注意芯片一旦烧写了程序便不可使用 AT 指令集需要重新刷回 AT指令集固件才可以使用AT指令集。


arduino ESP8266WiFi库下载 arduino esp8266wifi模块_#define_02

功能介绍

ESP8266 支持 3 种工作模式”STA”、“AP”、“STA+AP”模式:1

STA 模式:该模块通过路由器连接网络,手机或者电脑实现该设备的远程控制。2

AP 模式:该模块作为热点,手机或者电脑连接 wifi 与该模块通信,实现局域网的无线控制。3

STA+AP 模式:两种模式共存,既可以通过路由器连接到互联网,也可以作为WiFi 热点,使其他设备连接到这个模块,实现广域网与局域网的无缝切换。


AT指令结构

1.什么是 AT 指令?我们将终端(如手机等)与 PC 通信的指令叫做 AT 指令,AT 即 attention 前两个字母的。我们要与终端适配器(这里是 WiFi 模块)通信就要用 AT 指令。简单来说,我们想要配置这个模 块,就必须发送相应的 AT 指令!2.每条指令可以

细分为下面四种指令,但不是每个模块都具有下面四种指令 a.

测试指令:用于查询设置命令以及设置的参数及其范围


AT+=?b.

查询指令:返回参数的当前值


AT+?c.

设置指令:设置用户的自定义参数


AT+=<.......>d.

设置指令:执行模块内部的变参数不可变的功能AT+


我们通过串口发送指令


用法示例

一、ESP8266 模块本地调试

当我们参考机智云官网给的教程时,关于 Arduino 平台主要都是关于机智云官方自己的开发板 Gokit 的资料。但当我们只使用 Arduino UNO R3 接入机智云平台,有很多教程通过添加了两个按键来选择 airlink 和 softap 模式,其实我们只要在本地给 ESP8266 配好了网络连接,就不需要每次通过按键切换配网模式。

第一步:首先在官网下载机智云固件 GAgent,


arduino ESP8266WiFi库下载 arduino esp8266wifi模块_#define_03

第二步

:使用 ESP8266 下载工具 ESPFlashDownloadTool,将固件下载至 ESP8266 中。

arduino ESP8266WiFi库下载 arduino esp8266wifi模块_串口_04

第三步:在机智云官网下载机智云串口调试助手

https://accounts.gizwits.com/zh-cn/login?service_id=3292ad7525d6415ba11da87ceab1654a&redirect_url=http://download.gizwits.com/zh-cn/p/98/119

arduino ESP8266WiFi库下载 arduino esp8266wifi模块_arduino 串口通讯 发送一串数据_05

将 ESP8266 通过串口转 USB 工具插在电脑上,安装好驱动,选择中确的驱动后,打开串口,填入在官网申请的 product_key 和 Product Secret 后,就能在右边看见数据点了,此时再打开指令界面,点击 AirLink 命令,ESP8266 就进入了自动配网模式;

第四步

:下载机智云移动端 APP

arduino ESP8266WiFi库下载 arduino esp8266wifi模块_#define_06

arduino ESP8266WiFi库下载 arduino esp8266wifi模块_物联网_07

打开 APP,点击一键配置,输入家里的 WiFi 账号及密码,选择乐鑫,因为刚才我们已经将 ESP8266 设置成 AirLink 透传模式,现在通过 APP 就可以将家里的WiFi 信息发送给 ESP8266,此时 APP 发现新设备下会出现你的 WiFi 模组,点击后就会看到你定义的数据点了。


 1 

材料准备

Uno R3 开发板ESP8266-01 模块LED220 欧姆电阻


 2 

硬件连接图



arduino ESP8266WiFi库下载 arduino esp8266wifi模块_物联网_08

 3 

引脚说明

VCC 连接正极,GND 连接负极RXD:数据的接收端 (连接单片机或者 USB 转 TTL 模块的 TXD) TXD:数据的发送端 (连接单片机或者 USB 转 TTL 模块的 RXD)RST: 复位,低电平有效IO_0:用于进入固件烧写模式低电平->烧写,高电平->运行模式(默认)


arduino ESP8266WiFi库下载 arduino esp8266wifi模块_串口_09

arduino ESP8266WiFi库下载 arduino esp8266wifi模块_物联网_10


LED 接上 220 欧姆电阻,连在 Arduino 的 D4 上,ESP8266CH-PD 和 vcc 都接高电平。

注意

在给Arduino烧录程序的时候要断开ESP8266与Arduino的串口连接,否则会有干扰导致代码烧录不成功;ESP8266-01s 只能供给 3.3v 电压,5v 电压可能会烧坏 WiFi 模组

可从 arduino IDE 下载 Wire 头文件


arduino ESP8266WiFi库下载 arduino esp8266wifi模块_串口_11

 4 

示例代码

#include  //包含智云头文件#include //包含 Wire 库头文件#include //包含软串口头文件int myledPin = 4;//LED 连接到数字引脚 4,控制灯的开关int sensorValue = 0; //从壶中读取的值varR_LED_OnOff = 0;//判断灯开关的逻辑值Gizwits myGizwits; //我的云端//定义配置模式#define KEY1 6 #define KEY2 7 #define KEY1_SHORT_PRESS 1//Soft AP 模式:key1 按键短按#define KEY1_LONG_PRESS 2//模组复位:key1 按键长按#define KEY2_SHORT_PRESS 4//Soft AP 模式:key2 按键短按#define KEY2_LONG_PRESS 8//模组复位:key2 按键长按#define NO_KEY 0#define KEY_LONG_TIMER 3 //计时器unsigned long Last_KeyTime = 0;unsigned long gokit_time_s(void){     return millis() ;}void setup() {    Serial.begin(9600);    // 初始化串口,设定串口通信速率为 9600(波特)    pinMode(ledPin, OUTPUT);    //将数字引脚设置为输出    pinMode(myledPin, OUTPUT);     //将数字引脚设置为输出    pinMode(KEY1, INPUT_PULLUP);     //将按键 1 设置为输入    pinMode(KEY2, INPUT_PULLUP);     //将按键 2 设置为输入    myGizwits.begin();    //初始化云端}void loop() {    sensorValue = analogRead(A0);    //读ESP数据    unsigned long varW_ADCValue = sensorValue;    //添加传感器数据收集     myGizwits.write(VALUE_ADCValue, varW_ADCValue);    //连接云端    if(myGizwits.hasBeenSet(EVENT_LED_OnOff))    {         myGizwits.read(EVENT_LED_OnOff,&varR_LED_OnOff);        //数据存储地址     }    if(varR_LED_OnOff==1)     // 打开 LED    {    digitalWrite(myledPin, HIGH);     }    else    {// 关闭 LED    digitalWrite(myledPin, LOW);     }    KEY_Handle();     //关键句柄,网络配置    myGizwits.process();    //关闭云端}


至此,你的 ESP8266 模组就成功连接上机智云服务平台了,无论你在任何地方,无论用 WiFi 和 4G 都能通过 APP 来控制 LED 等的亮灭了,机智云还提供了 APP的开源框架,我们可以在此基础上高度自由地定制我们自己的 APP 接入机智云物联网平台。有关 Gizwits 的函数可见如下官网: http://docs.gizwits.com/zh-cn/deviceDev/Gokit3Voice/GoKit-MCU- explanation.html

 5 

库函数简介

1、

Wire.begin() 和 Wire.begin(address)

初始化 wire 库 ,并且加入到 I2C 网络,前者作为 Master 或 Slaver,并且只能调用一次。 参数


address :7 位的器件地址(可选),如果没有输入,则以 Master 的形式加入到 I2C 网络。2、

Wire.requestFrom()

主设备请求从设备一个字节,这个字节可以被主设备用 read()或 available()接受。

Wire.requrstFrom(addtess,quantity)Wire.requrstFrom(addtess,quantity,stop)

参数


addtess : 7 位的器件地址 quantity : 请求得到的数量

stop :布尔形,‘1’ 则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接。

返回


字节形 ,从从机接受到的字节数目。3 、

Wire.beginTransmission(address)

开始一次传输数据,发送一个 I2C 开始字符 参数

address : 器件的 7 位地址

返回值 

无4、 Wire.endTransmission()和 Wire.endTransmission(stop)


结束一个由 beginTransmission()开始的并且由 write()排列的从机的传输。在 Arduino 中 endTransmission()接受到一个布尔形变量,如果为 1 则 endTransmission()发送一个停止信息;如果为0 则发送开始信息

返回值

0 成功 1 数据溢出 2 发送 addtess 时从机接受到 NACK 3 发送数据时接受到NACK 4 其他错误5、 Wire.write()


向从机发送数据

形式

Wire.write(value)

Wire.write(string)

Wire.write(data, length)

参数

value :要发送的数值

string :字符组的指针

data :一个字节数组

length :传输的数


以上代码文件及使用的库可以到以下QQ群统一下载