ESP8266远程控制:实现网络通信与设备控制

概述:

最近一直在弄esp8266的网络通信,但是一直都还没搞懂到底esp8266可不可以通过连接一个网络过后,在很远的地方使用网络将其关掉

在网上找了两个教程都有程序,都跑通了

第一个

第二个找不到了,但是程序有

CSDN上放文件好像你们取不了,三连私聊找我取也可以

下面是获取资料的途径和开发工具的途径: https://docs.ai-thinker.com/esp8266

https://docs.ai-thinker.com/tools

有一篇文章提到:http://tcp.doit.am/

这个网站,你们可以打开看看,有一个网址是115开头的,这个IP地址的意思是你在给你esp8266写入AT指令时写入服务器的IP地址,也就是说,写入后,你的esp8266就连上的公用的IP只不过和别人使用的通道可能不同(还必须连一个网络才可以),然后你的手机端就可以通过输入信息到这个IP和通道就可以让esp8266接收信息了

ESP8266远程控制:实现网络通信与设备控制

一、背景与目标

在物联网项目中,远程控制设备是一个常见的需求。ESP8266作为一种低功耗、高性能的WiFi模块,被广泛应用于各种远程控制场景。本文将探讨如何通过ESP8266实现远程控制功能,特别是如何在连接到网络后,通过网络指令远程关闭设备。

二、实现远程控制的方案

(一)硬件与网络基础

ESP8266模块通过WiFi连接到网络,可以接收来自网络的指令来控制设备。为了实现远程控制,需要以下硬件和网络基础:

  • ESP8266模块:用于连接WiFi网络并接收控制指令。
  • 稳定的WiFi网络:ESP8266需要连接到一个可访问互联网的WiFi网络。
  • 云平台或服务器:用于转发控制指令到ESP8266模块。

(二)云平台的选择

在实现远程控制时,选择一个可靠的云平台至关重要。云平台的作用是作为中间人,转发手机或电脑发送的指令到ESP8266模块。Doit.am远程信息转发服务是一个不错的选择,它提供了简单的使用步骤和稳定的转发服务。

(三)编程实现

1. 连接到WiFi网络

首先,需要让ESP8266连接到一个WiFi网络。这可以通过发送AT指令AT+CWJAP来实现,指定WiFi的名称和密码。

c 复制代码
char c[]="AT+CWJAP=\"WIFI名称\",\"WIFI密码\"";
esp8266_send_cmd1((u8 *)c);
2. 建立TCP连接

连接到WiFi后,需要建立一个TCP连接到云平台提供的服务器。使用AT+CIPSTART命令来建立连接,指定服务器的IP地址和端口号。

c 复制代码
char e[]="AT+CIPSTART=0,\"TCP\",\"IP地址\",端口号";
esp8266_send_cmd1((u8 *)e);
3. 接收与处理控制指令

一旦TCP连接建立,ESP8266就可以接收来自云平台转发的控制指令。通过串口接收中断服务函数,可以实时接收并处理这些指令。

c 复制代码
void USART3_IRQHandler(void)
{
    u8 res;
    if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到数据
    {
        res =USART_ReceiveData(USART3);
        if(res != 'A')                     //以'A'为结束位,收到'A'表示一次接收消息完成
        {
            if((USART3_RX_STA&(1<<15))==0)//接收完的一批数据,还没有被处理,则不再接收其他数据
            {
                USART3_RX_BUF[USART3_RX_STA++]=res;	//记录接收到的值
            }
            else
            {
                USART3_RX_STA|=1<<15;				//没有收到结束符'A',收到的字节数>=0x80,强制标记接收完成
            }
        }
        else
        {
            USART3_RX_STA|=1<<15;				//接收消息完成
        }
    }
}

在主函数中,根据接收到的指令控制设备。例如,收到"on"指令时打开LED,收到"off"指令时关闭LED。

c 复制代码
int main(void)
{
    USART_Config();
    delay_init();
    LED_Init();

    usart3_init(115200);

    esp8266_start_trans();

    printf("初始化完成\n");

    USART3_RX_STA=0;
    while(1)
    {
        if(USART3_RX_STA&0x8000)   //如果消息接收完成,则处理
        {
            if(strstr((const char*)USART3_RX_BUF,"on"))  //这里是看接收到的消息中有没有自己设置的命令"on"
            {
                GPIO_ResetBits(GPIOC,GPIO_Pin_13);
            }
            if(strstr((const char*)USART3_RX_BUF,"off"))
            {
                GPIO_SetBits(GPIOC,GPIO_Pin_13);
            }
            USART3_RX_STA=0;    //消息处理完成,开始重新接收
            memset(USART3_RX_BUF,0,600);         //将接收区清0
        }
    }
}

(四)开发工具与资源

为了方便开发,可以使用以下工具和资源:

  • SDK一体化开发环境 :支持ESP32和ESP8266的开发,可以从安信可科技获取。
  • 烧录工具 :用于烧录WiFi固件,可以从安信可科技下载。
  • 串口调试助手 :用于调试串口通信,可以从安信可科技获取。

三、测试与验证

(一)测试环境搭建

  1. 连接ESP8266到WiFi网络:确保ESP8266能够成功连接到指定的WiFi网络。
  2. 建立TCP连接:使用云平台提供的IP地址和端口号,建立TCP连接。
  3. 发送控制指令:通过手机或电脑端的网络调试助手,发送控制指令到ESP8266。

(二)测试结果

通过测试,验证了ESP8266模块可以成功连接到WiFi网络,并通过云平台接收来自手机或电脑的控制指令。当发送"on"指令时,LED灯亮起;发送"off"指令时,LED灯熄灭。


如果需要手机端或者电脑端网络调试软件的可以三连支持一下,私信我获取

使用ESP8266模块连接到一个特定的TCP服务器,这个服务器是由http://tcp.doit.am/提供的远程信息转发服务。

使用AT+CIPSTART命令用于建立一个TCP或UDP连接。

c 复制代码
AT+CIPSTART=<id>,"<type>","<ip_addr>",<port>

使用这个特定的IP和端口可以确保您的ESP8266模块能够连接到这个公共服务器,并与其他客户端进行通信。

如果你想要用APP或者网页来控制你的esp8266,你需要创建一个自己的IP

这是我自己做的一个网页

如果需要这个网页可以私信我获取

通过这个网页向esp8266发送请求对IO口进行控制拉高或者拉低

四、总结与展望

本文介绍了如何使用ESP8266模块实现远程控制功能。通过连接到WiFi网络和云平台,ESP8266可以接收来自网络的控制指令,并根据指令控制设备。未来,可以进一步优化控制逻辑,增加更多的控制功能,如温度监控、湿度监控等,以满足更多的应用场景需求。


如果您需要获取相关代码或进一步的帮助,可以通过私信联系我。

相关推荐
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack5 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理6 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1236 天前
matlab画图工具
开发语言·matlab
dustcell.6 天前
haproxy七层代理
java·开发语言·前端