stm32通过ESP8266连接互联网服务器,手机通过网页实现远程控制灯亮灭

2023-10-26

一、实验结果

最终实验结果如上图所示,由于csdn限制gif图像大小,所以模糊了点,但是还是可以看清的。

图中是手机在网页中进行操作,然后发送请求到php服务器,php服务器建立tcp链接,该链接通过一个JAVA写的TCP请求转发器,把tcp请求转发到stm32中,stm32中代码对请求进行解析,解析到不同的指令,譬如灯亮/灭,就执行对应的操作。

 

二、实验图解

下面用一张图来说明:

步骤A:stm32通过手机热点连接到TCP SERVER,由于tcp协议的特性,可以保持持久连接

步骤B1:手机通过互联网访问控制页面,接入到TCP SERVER

步骤B2:手机通过发送请求,告知TCP SERVER:帮我把请求转发给STM32

步骤C1:TCP SERVER 把请求转发给了STM32,STM32中解析请求并执行(灯亮灭)

步骤C2:STM32执行了请求之后,进行回馈,通过步骤A中建立的TCP连接,告知TCP SERVER:帮我告诉手机B端,我已经做完了任务

步骤D:TCP SERVER 把请求转发给手机B,B收到信息,进行弹窗提示。步骤结束。

 

三、实验分析

执行以上操作的前提是stm32已经提前通过ESP8266模块连接到手机的热点上,然后通过热点发送TCP请求到TCP请求转发器中。

其中TCP请求转发器的工作原理类似于websocket,即建立一个TCP SERVER,然后把连接到该TCP SERVER的TCP 连接以KEY-VALUE的形式放入到一个MAP中。

后期其他TCP连接就可以通过在请求中说明KEY值,然后通过KEY找到对应的TCP链接,再转发给相应的TCP链接.

举个例子:STM32链接到转发器中,以A - SOCKET(key-value)的形式保存在MAP中,然后手机端B发送TCP请求给SERVER,在请求中说明:请帮我把请求转发给一个叫做A的TCP链接去,然后TCP SERVER就把B 发送的请求内容转发给A,从而实现B控制A。

同样,STM32也可以直接请求TCP SERVER 把stm32采集到的数据转发给手机B端

 

重点说明:该实验中,只要STM32 连接到一个能上网的手机热点中,就可以连接到服务器(TCP SERVER),该TCP SERVER是通过花生壳进行内网穿透暴露出来的端口,所以没有距离的限制,只要手机能上网,STM32就可以连接到TCP SERVER。

同理,只要手机端B端可以上网,就可以访问控制端的页面,从而通过网页控制STM32。

四、具体实现

1.STM32端通过串口给ESP8266模块发送AT指令,进行连接手机热点、发送TCP请求;

设置ESP8266对应的USART3的中断,接收数据并保存到一个字符数组中。解析字符数组,执行指令(灯亮灭)

也可以直接发送stm32采集的信息(温湿度),直接发送到TCP SERVER,或者转发到手机端B

     图1                                                                图2

其中图1 是通过AT指令进行连接热点

图2 是设置串口3的中断进行TCP请求的接收

具体操控ESP8266的代码太长了就不放出来了٩(๑❛ᴗ❛๑)۶,一般淘宝买ESP8266都会有附赠。

 

2.TCP SERVER端,采用JAVA实现,编写了一个基于TCP 的server,这个server的内容其实很简单,做了两件事:

      1.就是把每一个连接到TCP SERVER的socket以KEY-VALUE的形式保存到MAP中。

      2.解析每一个TCP请求,若TCP请求中有说明要求进行转发,则在MAP中找到对应要转发的SOCKET,进行转发

值得说明的是,TCP server所监听的端口要使用花生壳进行内网穿透,如监听8089端口,就要通过花生壳软件将该端口映射到外网,如下图示范:这样处于外网的机器就可以通过访问172XXXX.:31253 ,从而访问到本地的127.0.0.1:8089端口

上图是TCP SERVER的截图,写的比较简陋,后期写一个GUI界面会好看点

 

3.由于本人只有一台花生壳账号,所以在同一台电脑上同样适用花生壳对外开放了80端口进行PHP服务器的架设

4.手机访问页面

通过手机访问页面后,然后点击按钮,就可以控制stm32

 

本次说明到此结束。希望下次做的更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32通过ESP8266连接互联网服务器,手机通过网页实现远程控制灯亮灭 的相关文章

随机推荐

  • 深度学习——更深层次的神经网络

    一个深层次的CNN网络结构 这里使用的卷积层全都是3 3的小型滤波器 特点是随着层的加深 通道数变大 卷积层的通道数从前面的层开始按顺序以16 16 32 32 64 64的方式增加 此外 插入了池化层 以逐渐减小中间数据的空间大小 并且
  • C++ 字符串

    C 提供了以下两种类型的字符串表示形式 C 风格字符串 C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言 并在 C 中继续得到支持 字符串实际上是使用 null 字符 0 终止的一维字符数组 因此 一个以
  • OpenMV的单颜色识别讲解

    OpenMV的官方教程 寻找色块 single color rgb565 blob tracking示例讲解 视频讲解 需要提前看的文章 程序烧录 颜色阈值设置 目录 threshold index和thresholds解析 固定代码部分
  • Vue记住滚动条位置 scrollBehavior + debounce

    Vue记住滚动条位置 1 先给占位符加一层缓存 2 在路由上加一个源信息meta 记录滚动条的top值 3 使用 scrollBehavior 4 给页面添加事件监听 使用前端路由 当切换到新路由时 想要页面滚到顶部 或者是保持原先的滚动位
  • 浅谈 js运行机制 、宏观任务、微观任务

    今天我们谈一下我对js 运行机制 和宏观任务 微观任务的理解 js运行机制有同步运行和异步运行 js是单线程运行模式在进入任务当中如果是同步任务 那么就直接被主线程运行 如果是异步任务 那么就进入任务队列中进行等待运行 直到主线程任务执行完
  • 二叉树基础

    文章目录 一 树的基础 1 树的概念 2 非树 3 树的相关概念 image 20220402143804166 https img blog csdnimg cn img convert a8bbb6f8483be3ca9edd9e354
  • 虚假人脸检测实验

    虚假人脸检测实验 虚假人脸识别 数据集链接 链接 https pan baidu com s 1ZY7 PqPGsxCBFerpfRW13Q pwd 0w2r 或者https download csdn net download weixi
  • 关于Windows Mobile手机视听电脑视音频的程序实现(一)

    心情不好 突然想写博客了 嘿嘿 其实这一个程序是差不多一年前实现的 那时正好着手一个项目 同时后来也因为这一个项目买了一款多普达手机 呵呵 这一个项目大概实现这么一个功能 电脑 服务器端 安装一个用于抓取摄像头与麦克风的数据 Windows
  • Qt元对象系统

    元对象系统 Meta Object System 元对象系统是一个基于标准C 的扩展 为Qt提供了信号与槽机制 实时类型信息 动态属性系统 元对象系统的三个基本条件 类必须继承自QObject 类声明Q OBJECT宏 默认私有有 元对象编
  • 如何解决幻读?

    一 什么是幻读 幻读 一个事务按相同的查询条件重新读取以前的检索过的数据 却发现其他事务插入了满足其条件查询的新数据 这种现象被成为幻读 进行了读取 分别读取了不同的数据 重点在于新增 insert 针对多笔数据 举个例子 事务A对数据进行
  • python机器人编程——无人机python联动控制实现(VREP仿真)1——手搓一个类ROS机器人消息订阅发布模块

    目录 一 前言 二 总体设想 三 系统的组成 四 python代码构建 构建一个MessageBroker消息代理类 以下这个是常规的MessageBroker类 以下这个是引入协程的MessageBroker类 下面是使用MessageB
  • uni-app插件使用注意事项

    1 将插件设置为全局组件后需要将项目重新运行 2 有些插件的功能会互斥 不要贪多全部装上 按需安装即可
  • QT中QMap使用实例详解

    QMap QMultiMap属于关联式容器 其底层结构是通过二叉树实现 故其查找value的效率很快 QMap中的数据都是成对出现的 第一个称为key 键 第二个称value 键值 目录 实例化QMap对象 插入数据 移除数据 遍历数据 由
  • siege压力测试工具安装和介绍

    前言 最近公司有个项目需要做一个短轮询类推送服务器 推送服务器分为三种 短轮询 长轮询 长连接 用户量不大 但是为了保险起见还是做一下压力测试 用的工具是siege 目录 前言 目录 siege介绍 siege安装 siege使用 1 si
  • python爬虫---用数据解析bs4爬取整部三国演义(不用诗词名句网)

    python爬虫 用数据解析bs4爬取整部三国演义 不用诗词名句网 需求 使用bs4实现将三国演义小说的每一章的内容爬取到本地磁盘进行存储 诗词名句网无法进去 所以我自己找了个网站爬取 思路差不多 首先 对首页的页面数据进行爬取 url h
  • 矩阵的逆矩阵 和 转置矩阵

    这几天用到了逆矩阵 就在这里总结一下逆矩阵和转置矩阵 逆矩阵 逆矩阵就是一个矩阵的逆向 比如一个点乘以一个矩阵后得到了一个新的点的位置 如果想通过这个点再获得矩阵转换前的位置 那我们就需要乘以这个矩阵的逆矩阵 在Three js里面 我们可
  • 国产数据库

    作者 JiekeXu 来源 JiekeXu DBA之路 ID JiekeXu IT 大家好 我是 JiekeXu 很高兴又和大家见面了 今天和大家一起来体验一下 TiDB 5 0 欢迎点击上方蓝字关注我 标星或置顶 更多干货第一时间到达 T
  • springboot对bean的生命周期管理

    声明 代码是JavaEE开发的颠覆者 Spring Boot实战代码中的 我只是拿去学习 传统方式 public class BeanWayService public void init System out println Bean i
  • windows10上通过python3远程连接hive

    注意 impyla 既可以连接impala 也可以连接hive 环境 windows10 python版本 3 6 hive版本 1 1 impyla安装过程 安装依赖 pip3 install bit array pip3 install
  • stm32通过ESP8266连接互联网服务器,手机通过网页实现远程控制灯亮灭

    一 实验结果 最终实验结果如上图所示 由于csdn限制gif图像大小 所以模糊了点 但是还是可以看清的 图中是手机在网页中进行操作 然后发送请求到php服务器 php服务器建立tcp链接 该链接通过一个JAVA写的TCP请求转发器 把tcp