本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

使用 ESP8266 WiFi 模块前你该知道的事

发布时间:2021-07-14
分享到:

使用 ESP8266 WiFi 模块前你该知道的事

发布时间:2021-07-14
分享到:

ESP8266 是一款 3V WiFi 模块,因其物联网应用而广受欢迎。ESP 8266 最大工作电压为 3.6V。本文将简单的介绍如何为其供电、如何安全地将其与 Arduino 串行连接。

ESP 8266 引脚排列

ESP8266 有 8 个引脚,分别是:

  • 接收
  • 电压互感器
  • 通用输入输出口 0
  • 重启
  • CH_PD
  • 通用输入输出口 2
  • TX
  • 接地

VCC 和 GND 是电源引脚,RX 和 TX 用于通信。(ESP8266 数据表

为 ESP 8266 供电

ESP8266 WiFi 模块有多种供电方式:

  • 可以使用 2 节 AA 电池供电
  • 可以使用 LIPO 电池为 ESP Dev Thing 板供电
  • 可以使用 LM117 3.3V 稳压器

 

(逻辑电平控制器)

ESP8266 的最大电压为 3.6V,因此该器件具有板载 3.3V 稳压器,可为 IC 提供安全、一致的电压。这意味着 ESP8266 的 I/O 引脚也以 3.3V 运行,需要将 5V 信号运行到 IC 中的逻辑电平控制器。

或者,如果想直接向 ESP8266 提供外部稳压电源,则可以通过3V3引脚(在 I2C 接头上)提供该电压。虽然这个电压不一定是 3.3V,但它必须在1.7-3.6V的范围内。

可以使用两节 AA 电池为 ESP 供电。正极从电池到 ESP 的 VCC 和 GND 到 ESP 8266 的 GND。

使用逻辑电平控制器

电平转换器易于使用。电路板需要由系统使用的两个电压源(高压和低压)供电。高电压(例如 5V)连接到“HV”引脚,低电压(例如 3.3V)连接到“LV”,从系统接地到“GND”引脚。

通过 Arduino UNO 与 ESP 8266 通信

要通过 Arduino UNO 与 ESP8266 通信,需要在两者之间使用逻辑电平控制器来安全地与 ESP8266 一起工作。

连接:

  • 将 ESP 连接到 Arduino,将 ESP8266 RX 连接到逻辑电平控制器 Level 1
  • 将 ESP TX 连接到 2 级逻辑电平控制器
  • ESP VCC 至 Arduino UNO 3.3V
  • 逻辑电平控制器电平到 Arduino 3.3V
  • 逻辑电平控制器 GND 到 Arduino GND
  • ESP GND 到 Arduino GND
  • ESP CH_PD 至 Arduino 5V
  • 逻辑电平控制器 HV 到 Arduino 5V
  • 逻辑电平控制器 HV1 至 Arduino 第 11 引脚
  • 逻辑电平控制器 HV2 到 Arduino 第 10 个引脚

与 ESP 8266 模块通信

单击开始,运行,然后键入CMD并按 Enter。输入IPCONFIG ,然后按回车。输入PING 和模块的 IP 地址。成功的 PING 请求将始终返回一组数字。如果收到“请求超时”消息,则表示某些内容未在通信。

然后将IP 地址写入网络浏览器,就可以与 ESP8266 模块进行通信。

在 Circuito.io 中

使用Circuito.io在现实中安全地运行项目,该软件还指导接线并提供测试代码。

Circuito.io提供了构建项目的选择,添加连接作为 ESP8266 WiFi 模块,还可以添加输入和输出。

(添加连接)

单击添加连接,然后选择 ESP8266 WiFi 模块。然后点击预览按钮,得到如下的原理图:

附:代码(点击下载

// 库
#include "Arduino.h"
#include "ESP8266.h"
#include "dweet.h"


// 引脚定义
#define ESP8266_PIN_RX    10
#define ESP8266_PIN_TX    11

// 全局变量和定义

// ====================================================================
// vvvvvvvvvvvvvvvvvvvv WI-FI设置 vvvvvvvvvvvvvvvvvvvv
//
const char *SSID     = "WIFI-SSID"; // 输入Wi-Fi 名 
const char *PASSWORD = "PASSWORD" ; // 输入 Wi-Fi密码
//
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// ====================================================================


// Dweet 令牌已为您​​自动生成
char* const inputToken  = "59a7c547b7e19d001f7002d0_input";
char* const outputToken = "59a7c547b7e19d001f7002d0_output";

//对象初始化
ESP8266 wifi(ESP8266_PIN_RX,ESP8266_PIN_TX);
Dweet dweet( &wifi, inputToken, outputToken);

// 定义用于测试菜单的变量
const int timeout = 10000;       //定义10秒超时
char menuOption = 0;
long time0;

//设置电路工作的基本要素。每次您的电路通电时,它首先运行。
void setup() 
{
    // 设置串口,这对调试很有用
    // 使用串行监视器查看打印的消息
    Serial.begin(9600);
    while (!Serial) ; // 等待串口连接。本机 USB 需要
    Serial.println("start");
    
    wifi.init(SSID, PASSWORD);
    menuOption = menu();
    
}

// 电路的主要逻辑。它定义了您选择的组件之间的交互。设置后,它一遍又一遍地运行,在一个永恒的循环中。
void loop() 
{
    
    
    
    else if (menuOption == '1') {
    
    //设置DWEETS
    
    dweet.setDweet("DemoKey", "DemoValue"); //用你自己的 (key, value) 对替换你的数据
    dweet.sendDweetKeys();
    
    
    //获取 DWEETS  
    dweet.receiveDweetEvents();
    
    if(!strcmp(dweet.getValue() , "DemoEventName"))
    {
        Serial.println("DemoEventName received!");
    }
    }
    
    if (millis() - time0 > timeout)
    {
        menuOption = menu();
    }
    
}

//用于选择要测试的组件的菜单功能
// 按照串行监视器获取指令
char menu()
{

    Serial.println(F("\nWhich component would you like to test?"));
    Serial.println(F("(1) IOT"));
    Serial.println(F("(menu) send anything else or press on board reset button\n"));
    while (!Serial.available());

    //  如果收到,则从串行监视器读取数据
    while (Serial.available()) 
    {
        char c = Serial.read();
        if (isAlphaNumeric(c)) 
        {
            
            else if(c == '1') 
                Serial.println(F("Now Testing IOT"));
            else
            {
                Serial.println(F("illegal input!"));
                return 0;
            }
            time0 = millis();
            return c;
            }
        }
    }

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论