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

article/2025/7/21 12:00:47

概述:
最近一直在弄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的名称和密码。

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

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

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

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

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。

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连接。

AT+CIPSTART=<id>,"<type>","<ip_addr>",<port>

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

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

在这里插入图片描述
这是我自己做的一个网页

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

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

四、总结与展望

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


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


http://www.hkcw.cn/article/mWlwAUodvG.shtml

相关文章

解决方案:__cplusplus宏的值始终为199711L(即 C++98)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 问题现象&#xff1a;被 "冻结" 的__cplusplus宏 在使用 Visual Studio&#xff08;MSVC&#xff09;编译 C 代码时&…

c++流之sstream/堆or优先队列的应用[1]

目录 c流之sstream 解释 注意事项 215.数据流的第k大 问题分析 修正代码 主要修改点 优先队列的比较规则 代码中的比较逻辑 为什么这样能维护第 k 大元素&#xff1f; 举个例子 总结 Python 实现&#xff08;使用heapq库&#xff09; Java 实现&#xff08;使用P…

智慧工厂整体解决方案

该方案围绕智能工厂建设,阐述其基于工业 4.0 和数字化转型需求,通过物联网、大数据、人工智能等技术实现生产自动化、数据化管理及联网协同的特点。建设步骤包括评估现状、设定目标、制定方案、测试调整、实施计划及持续改进,需整合 MES、ERP 等软件系统与传感器、机器人等硬…

OpenTelemetry × Elastic Observability 系列(一):整体架构介绍

本文是 OpenTelemetry Elastic Observability 系列的第一篇&#xff0c;将介绍 OpenTelemetry Demo 的整体架构&#xff0c;以及如何集成 Elastic 来采集和可视化可观测性数据。后续文章将分别针对不同编程语言&#xff0c;深入讲解 OpenTelemetry 的集成实践。 程序架构 Op…

Cypress API 中文详解

🌐 Cypress API 中文详解(全分类汇总) 📌 Cypress 是一款专为现代 Web 应用构建的前端测试工具,它提供了强大且直观的 API 来模拟用户操作、监听网络请求、控制浏览器行为。**本篇文章将系统梳理 Cypress 所提供的常用命令与 API,帮助你快速掌握自动化测试核心能力。 �…

宇树机器狗go2—slam建图(2)gmapping

0.前言 上一篇番外文章带大家认识了一下slam中常用的一些点云格式&#xff0c;本期文章会教大家如何让宇树的机器狗go2在仿真环境中使用gnaaping进行2d建图&#xff0c;在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道。宇树机器狗go2仿真会作为一个长期项目…

CVE-2019-17558源码分析与漏洞复现

漏洞概述 漏洞名称&#xff1a;Apache Solr Velocity 模板注入远程命令执行漏洞 漏洞编号&#xff1a;CVE-2019-17558 CVSS 评分&#xff1a;9.8 影响版本&#xff1a;Apache Solr 5.0.0 - 8.3.1 修复版本&#xff1a;Apache Solr ≥ 8.4.0 漏洞类型&#xff1a;远程代码执行&…

Linux入门——入门常用基础指令(3)

文章目录 入门常用基础指令(3)grep指令压缩解压打包压缩的必要性zip/unzip指令关于rzsz的操作tar指令(重要) bc指令uname指令shutdown指令history指令几个常用的热键ctrl c和ctrl dctrl rTab按键 入门常用基础指令(3) 入门Linux的常用指令还是比较多的。本篇文章是Linux入门部…

常见压缩算法性能和压缩率对比 LZ4 LZO ZSTD SNAPPY

网传压缩算法对比表 算法压缩率压缩速度解压速度支持流式压缩适用场景LZ4低极快极快是实时数据压缩、日志压缩、内存缓存等Zstandard高快快是文件压缩、网络传输、数据库备份等Brotli很高中等快是静态资源压缩&#xff08;HTML、CSS、JS&#xff09;等LZO低极快快是嵌入式系统…

Tkinter软件——显示txt标签的目标水平边框图像

代码&#xff1a; import tkinter as tk from tkinter import filedialog from tkinter import messagebox import cv2 from PIL import Image, ImageTk import osclass ImageBoxApp:def __init__(self, master):self.master masterself.master.title("Image Box Drawer…

学习vue3阶段性复习(插槽,Pinia,生命周期)

目录 插槽(匿名插槽&#xff0c;具名插槽) 插槽概述 匿名插槽 具名插槽 Pinia(统一管理&#xff0c;共享数据&#xff09; pinia概述 安装和使用Pinia 1 使用命令下载Pinia 2 再main.js中导入&#xff0c;注册到vue框架中 3使用pinia 持久化存储插件 1 第一步&…

创建环境 镜像报错UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel...

报错&#xff1a;Platform: win-64 Collecting package metadata (repodata.json): failed UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel anaconda/pkgs/main <https://mirrors.aliyun.com/anaconda/pkgs/main> The channel is not accessible or is inva…

小狼毫输入法雾凇拼音输入方案辅码由默认的部件拆字/拼音输入方案修改为五笔画方案

搜狗拼音输入法不单单是弹出广告的问题&#xff0c;还有收集输入习惯等隐私的嫌疑。所以最近彻底删除了这个输入法&#xff0c;改安装了小狼毫输入法。关于小狼毫输入法的安装和使用网上已经有了无数文章&#xff0c;我这里就不重复了。在试用多个拼音方案后&#xff0c;最终我…

车载通信网络 --- OSI模型中传输层、会话层、表示层和应用层

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

Dify理论+部署+实战

概述 一个功能强大的开源AI应用开发平台&#xff0c;融合后端即服务&#xff08;Backend as Service&#xff09;和LLMOps理念&#xff0c;使开发者能够快速搭建生产级的生成式AI应用。 核心优势 直观的用户界面&#xff1a;提供简洁明了的操作界面&#xff0c;使得用户能够…

Java类和对象详解

文章目录 1.初步认识2.类的定义与实例化2.1 类的定义2.2 类的实例化与使用 3.this关键字4.对象的构造和初始化4.1 默认初始化4.2 就地初始化4.3 构造方法初始化 5.对象的打印6.包的理解6.1 导入包中的类6.2 自定义包6.3 包访问权限 7.封装7.1 访问限定符详解 8.static关键字8.1…

【Go语言】Fyne GUI 库使用指南 (面向有经验开发者)

引言 Fyne 是一个使用 Go 语言编写的、易于使用的跨平台 GUI 工具包和应用程序 API。它旨在通过单一代码库构建在桌面和移动设备上运行的应用程序。本文档面向有一定 Go 语言开发经验的开发者&#xff0c;将详细介绍 Fyne 最新版的核心功能&#xff0c;包括基础组件、布局系统…

1. pytorch手写数字预测

1. pytorch手写数字预测 1.背景2.准备数据集2.定义模型3.dataloader和训练4.训练模型5.测试模型6.保存模型 1.背景 因为自身的研究方向是多模态目标跟踪&#xff0c;突然对其他的视觉方向产生了兴趣&#xff0c;所以心血来潮的回到最经典的视觉任务手写数字预测上来&#xff0…

武警智能兵器室系统架构设计与关键技术解析

在现代化武警部队建设中&#xff0c;武器弹药的安全管理与快速响应能力直接影响部队战斗力。本文基于某实战化智能兵器室建设案例&#xff0c;深入解析其系统架构设计、关键技术实现及创新管理机制&#xff0c;为安防领域提供可借鉴的解决方案。 整体拓扑结构 系统采用分层分布…

HTML5 列表、表格与媒体元素、页面结构分析

1. 列表 无序列表 有序列表 定义列表 列表对比 2. 表格 跨列 跨行 跨行和跨列 3. HTML5的媒体元素 视频元素 注意&#xff1a;autoplay现在很多浏览器不支持了&#xff01; 音频元素 4. 页面结构分析 5. 总结