(Arduino)ESP8266通过局域网通信控制LED

时间:2024-04-10 10:56:47

接线参考https://blog.csdn.net/jackhuang2015/article/details/45015691

要达到的效果是用你的电脑或者手机通过局域网去把信号传输给ESP8266,让8266控制LED灯闪烁。

首先你要下载一个Arduino IDE

其次你要买一个esp8266小板(我用的是esp8266-01)

(Arduino)ESP8266通过局域网通信控制LED

思路如下

	首先,我们要接入局域网,那么我们的esp8266和电脑就必须先要处于同一个局域网下,通俗点讲,这俩货要连在同一个wifi下,比如你家的同一个路由器下,好的,esp8266和电脑虽然都连在同一个wifi下,但是咋通信呢,他俩怎么互相找到对方呢,有个常识就是要想通信,一般有一个作为服务端,一个作为客户端,然后给服务端取个名字,客户端通过这个名字去找,这样他俩就能连到一起了,互相握个手,就能开始交谈了,这就是典型的TCP通信,你的电脑也是这么连上百度的服务器的(当然还有路有什么的,目前不关我们事,先不管)。

开始边撸代码边实验

电脑通过网络调试助手开一个tcpserver作为服务端,esp8266作为客户端。
(Arduino)ESP8266通过局域网通信控制LED

#include <ESP8266WiFi.h>      //加入ESP8266wifi头文件

#define LEDPIN 2                   //GPIO2
WiFiClient client;

const char *ssid     = "HEXBOT";        //ssid,你家的wifi名称
const char *password = "HEXBOT01?02?03";//wifi密码
const char *host = "192.168.0.107";   //改为上图所示的IP地址(改为你自己的)
const int tcpPort = 8266;//改为上图所示的本地端口号(改为你自己的)


void setup()
{
    Serial.begin(115200);    
    pinMode(LEDPIN,OUTPUT);
    delay(10);
    Serial.println();
    Serial.print("Connecting to ");//会通过usb转tll模块发送到电脑,通过ide集成的串口监视器可以获取数据。
    Serial.println(ssid);

    WiFi.begin(ssid, password);//启动

     //在这里检测是否成功连接到目标网络,未连接则阻塞。
    while (WiFi.status() != WL_CONNECTED) 
    {
        Serial.println("WiFi connection failed......");
        delay(500);
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());  //WiFi本地IP
}


void loop()
{
    while (!client.connected())   //若未连接到电脑服务端,则esp8266客户端进行连接。
    {
        if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true
        {
            Serial.println("connection....");
            delay(500);

        }
    }

    while (client.available())//available()表示是否可以获取到数据
    {
        char val = client.read();//read()表示从网络中读取数据。
        Serial.println(val);    //打印出来接收到的值
        if(val=='a'){          //pc端发送a和b来控制
           digitalWrite(LEDPIN, LOW);
        }
        if(val=='b')
        {
            digitalWrite(LEDPIN, HIGH);
        }
    }
}

正常情况下就可以通过发送a和b控制你的小灯了。

端口如下:
(Arduino)ESP8266通过局域网通信控制LED

你可以测量gpio2电平变化。

如果你把esp8266通过串口把信息发到其他单片机上,那就能做更多的事情了。

手机连接同上。


(Arduino)ESP8266通过局域网通信控制LED

在这里插入图片描述

(Arduino)ESP8266通过局域网通信控制LED

(Arduino)ESP8266通过局域网通信控制LED