物联网通讯之esp8266wifi模块

ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。

ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。

主要功能

ESP8266可以实现的主要功能包括:串口透传,PWM 调控,GPIO控制。

串口透传:数据传输,传输的可靠性好,最大的传输速率为:460800bps。

PWM 调控:灯光调节,三色LED 调节,电机调速等。

GPIO控制:控制开关,继电器等。

工作模式

ESP8266模块支持STA/AP/STA+AP 三种工作模式。

  • STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
  • AP 模式:ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。
  • STA+AP 模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。

应用领域

  • 串口CH340 转Wi-Fi;
  • 工业透传DTU;
  • Wi-Fi 远程监控/控制;
  • 玩具领域;
  • 色LED 控制;
  • 消防、安防智能一体化管理;
  • 智能卡终端,无线POS 机,Wi-Fi 摄像头,手持设备等。

组件

– 1 * Adeept UNO板

– 1 * USB电缆

– 1 * ESP8266-01wifi模块

– 1 *跳线

– 1 *LED

– 1 *220Ω电阻

程序

步骤1:如下图所示连接电路。

步骤2:上传程序

/*************************************
File name:Adeept_wifi_control_led
Description:
Website:www.addept.com
E-mail:support@addept.com
Author:felix
Date:2019/6/10
*************************************/
#include<SoftwareSerial.h>    //use the library to commmunicate with esp8266 wifi module
#define rxPin 2               //define rx and tx pin
#define txPin 3

SoftwareSerial mySerial = SoftwareSerial(rxPin,txPin); //creat an object mySerial

//define esp8266 wifi module variate
char judge = 0;
String comdata = "";
//define receive data
String text1 = "\r\n+IPD,0,1:1";
String text2 = "\r\n+IPD,0,1:2";

// put your setup code here, to run once:
void setup() {
  pinMode(13,OUTPUT);
  mySerial.begin(115200);                  // set up a wifi serial communication baud rate 115200
   delay(4000);
   mySerial.println("AT+RST\r\n");         //reset wifi
   delay(5000);     
   delay(5000);     
   mySerial.println("AT+CWMODE=3\r\n");    //set to softAP+station mode
   delay(4000);     
   mySerial.println("AT+CIPMUX=1\r\n");    //set to multi-connection mode
   delay(4000);
   mySerial.println("AT+CIPSERVER=1\r\n"); //set as server
   delay(4000);
   mySerial.println("AT+CIPSTO=7000\r\n"); //keep the wifi connecting 7000 seconds
   delay(4000);
   digitalWrite(13,HIGH);                  //configuration is complete
   delay(1000);
   digitalWrite(13,LOW);
}

// put your main code here, to run repeatedly:
void loop() {
  //receive the data
  while(mySerial.available()>0)
   {  
    comdata += char(mySerial.read());
    delay(1);
   }

   
  //set the judge
  judgement();
  
  //judge the variate "judge"
           switch(judge)
     {
         case 1: while(!mySerial.available()){digitalWrite(13,HIGH); }
                   break;
         case 2: while(!mySerial.available()) {digitalWrite(13,LOW);} 
                   break;     
         default:  break;
     }
}


  //set the judge
void judgement(){
    if (comdata.length() > 0)
    {
        if(comdata==text1){
          judge=1;
        }
        if(comdata==text2){
          judge=2;
        }
        comdata = "";
    }
}

步骤3:配置网络调试助手(server ip和端口号是esp8266-01模块出厂默认的)

步骤4:连接电脑与esp8266-01模块

步骤5:开始通过网络调试助手无线控制LED

跳至工具栏