stm32通过ESP8266连接互联网服务器,手机通过网页实现远程控制灯亮灭
一、实验结果
最终实验结果如上图所示,由于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
本次说明到此结束。希望下次做的更好。
stm32通过ESP8266连接互联网服务器,手机通过网页实现远程控制灯亮灭相关推荐
- esp8266监听服务器端口信息,esp8266连接远程服务器收信息
esp8266连接远程服务器收信息 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务 ...
- esp怎么从服务器接受信息,esp8266连接远程服务器收信息
esp8266连接远程服务器收信息 内容精选 换一换 TCP协议适用于注重可靠性,对数据准确性要求高,速度可以相对较慢的场景,如文件传输.发送或接收邮件.远程登录等.您可以添加一个TCP监听器转发来自 ...
- Arduino+ESP8266手机控制小灯亮灭及常见问题
最近在接触Arduino和ESP8266模块,比较基础的就是运用Arduino IDE软件.ESP8266模块和一款手机软件来控制8266测试板上的小灯亮灭. 项目软件: Arduino IDE软件 ...
- 阿里云IOT入门教程(三)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭
阿里云IOT入门教程(一)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭 概述 所需材料 Mqtt预备知识 hacklab端开发 * 硬件端上报 ...
- 最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯)
ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 文章目录 ESP8266和ESP32智能彩灯开发系列文章目录 前 ...
- stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭
stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...
- esp8266接入百度云,使用客户端控制灯亮灭
esp8266接入百度云 摘要:本篇文章介绍了esp8266如何接入百度云的整个流程,最终实现一个简单的小demo,通过mqtt客户端去去控制esp8266上小灯的点亮与关闭.文章包含三个部分: 一. ...
- 安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上)
系列博文: (1)安卓手机与蓝牙模块联合调试(一)--蓝牙模块的串口通讯 (2)安卓手机与蓝牙模块联合调试(二)-- 单片机蓝牙控制LED灯亮灭(上) (3)安卓手机与蓝牙模块联合调试(三)-- 单片 ...
- 采用STM32外部中断模式控制LED灯亮灭
文章目录 实验工具 一.STMCube配置项目 1.配置引脚 2.配置EXIT 3.配置SYS 4.配置GPIO 5.创建代码 二.使用KEil配置代码 1.打开生成的项目,找到stm32f1xx_i ...
最新文章
- 第四周项目二-太乐了
- python编程 语言-python编程语言有什么用途
- 【研讨课】超临界水气化制氢技术 2018-06-11
- java中的console是干什么的_[Java教程]javascript中,你真的会用console吗?
- 微信小程序 三元运算 checked
- postman使用过程中body中的form-data,x-www-form-urlencoded,raw,binary的简单记录
- java中的字符串_Java中的字符串
- 「ECharts」电商平台数据可视化实时监控系统之后台开发
- 解决IntelliJ Idea 集成TortoiseSVN 时找不到svn.exe,也就是 svn安装失败 找不到指定
- hdu-1711(hash)
- 免费c语言入门自学书籍pdf下载,c语言从入门到精通pdf
- Mysql数据库的备份与恢复
- 立创EDA学习笔记(2)——创建元件符号
- 智能手机基于众包的室内定位
- R语言中的ggmap包
- 聚类生成anchor框的尺寸和比例
- 【Flutter】Dart 数据类型 数字类型 ( Dart 文件创建 | num 类型 | int 类型 | double 类型 | num 相关 API )
- python图片转pdf
- video.js视频高度自适应解决方法
- 为什么墨刀的动效这么酷炫?学会神奇移动,你也可以