• 【毕业设计】ESP8266 WiFi 模块使用介绍 - 单片机 物联网 嵌入式



    1 简介

    Hi,大家好,这里是丹成学长,今天学长向大家介绍一下ESP8266 WiFi 模块,该模块常被用于物联网开发,无论是毕业设计还是公司项目都产常用的模块,今天带大家初步认识ESP8266.

    大家可用于 课程设计 或 毕业设计

    2 ESP 8266 引脚排列

    在这里插入图片描述

    ESP8266 有 8 个引脚,分别是:

    • 接收
    • 电压互感器
    • 通用输入输出口 0
    • 重启
    • CH_PD
    • 通用输入输出口 2
    • TX
    • 接地
    • VCC 和 GND 是电源引脚,RX 和 TX 用于通信

    3 供电方式

    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”引脚。

    4 单片机与ESP8266交互

    这里以arduino单片机为例
    在这里插入图片描述
    要通过 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 个引脚

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

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

    5 测试代码

    // 库
    #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;
                }
            }
        }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110

    6 最后

  • 相关阅读:
    【毕业设计】基于单片机的自动浇花灌溉系统设计 -嵌入式 物联网 stm32 c51
    开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片
    温度响应性纳米水凝胶光子品体/纤维素修饰荧光水凝胶/载脂质体水凝胶的制备方法
    我的NPI项目之Android Camera (一) -- Camera选型
    下载HTMLTestRunner并修改
    Linux | 网络服务管理相关不完全总结
    [github配置] 远程访问仓库以及问题解决
    大数据Flink(一百零一):SQL 表值函数(Table Function)
    java分析工具jvisualvm
    genius-storage使用文档,一个浏览器缓存工具
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/125396067