stm32f103c8t6控制ESP8266与手机APP通信

之前已经发表过利用stm32控制蓝牙模块与手机APP通信的文章,那么现在我就来说说用WIFI模块来控制与手机APP的通信
首先需要的器件如下:
stm32f103c8t6
ESP8266-01S(默认波特率115200)
除此之外还需要手机下载一个通讯软件,我用的是安卓手机应用宝上面的TCP连接这个APP
WIFI模块的连接如下所示:

代码很简单,我主要附上主函数代码:

/*
ESP8266 AP+Station服务器模式测试UART2 PA2 PA3  与网络模块ESP进行通信UART1 PA9 PA10 进行数据跟踪
*/#include  "delay.h"
#include  "led.h"
#include  "usart.h"
#include  "string.h"
#include  "stdio.h"
extern  u8 RX_buffer[tbuf];
extern u8 RX_num;                //接收计数变量u8  esp_at[]="AT\r\n";                  // 握手连接指令,返回"OK"
u8  esp_cifsr[]="AT+CIFSR\r\n";         // 本机IP地址查询指令
u8  esp_cipsend[]="AT+CIPSEND=6\r\n";   // 设置发送数据长度
u8  esp_test[]="sunny\r\n";              //  数据内容
u8  esp_rst[]="AT+RST\r\n";                     // 软件复位u8  esp_cwmode[]="AT+CWMODE=3\r\n";     // 设置ESP8266的工作模式3 AP+Station,返回"OK"或者"no change"
u8  esp_cwsap[]="AT+CWSAP=\"ESP8266_TEST\",\"1234567890\",1,3\r\n";//设置WIFI的名称及密码
u8  esp_cipmux[]="AT+CIPMUX=1\r\n";            //打开多连接
u8  esp_cipserver[]="AT+CIPSERVER=1,8080\r\n";  //建立TCP服务器,开放端口8080//指定字符串与缓存数组数据进行数据比较
//*p 要比较的指定字符串指针数据
//返回:1 数据一致  0 数据不一致
u8 Data_compare(u8 *p)
{ if(strstr(RX_buffer,p)!=NULL)return 1;elsereturn 0;
}int main(void){    delay_init();            //延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);       //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);   //串口初始化为9600  LED_Init();          //初始化与LED连接的硬件接口memset(RX_buffer, 0, tbuf);//清缓存数据RX_num=0;                   //接收计数变量清0//配置wifi工作模式为ap+sta模式while(1){Uart2SendStr(esp_cwmode);      // 设置ESP8266的工作模式3 AP+Station,返回"OK"或者"no change"if(Data_compare("OK")||Data_compare("no change"))break;else  Uart1SendStr("ERROR1,some problems with ESP8266 \r\n");delay_ms(600);}Uart1SendStr("OK,set mode as AP+Station with ESP8266! \r\n");    memset(RX_buffer, 0, tbuf);//清缓存数据 RX_num=0;                 //接收计数变量清0while(1){Uart2SendStr(esp_cwsap);     //设置WIFI的名称及密码if(Data_compare("OK"))break;else  Uart1SendStr("ERROR2,some problems with ESP8266 \r\n");delay_ms(600);}Uart1SendStr("OK,set cwsap success! \r\n"); memset(RX_buffer, 0, tbuf);//清缓存数据   RX_num=0;                  //接收计数变量清0while(1){Uart2SendStr(esp_cipmux);       //设置多连接 (多路连接模式)if(Data_compare("OK"))break;else  Uart1SendStr("ERROR3,some problems with ESP8266 \r\n");delay_ms(600);}Uart1SendStr("OK,set cipmux success! \r\n");memset(RX_buffer, 0, tbuf);//清缓存数据RX_num=0;                //接收计数变量清0while(1){Uart2SendStr(esp_cipserver);     //设置wifi模块为TCP服务器模式,并配置端口为8080if(Data_compare("OK"))break;else  Uart1SendStr("ERROR4,some problems with ESP8266 \r\n");delay_ms(600);}Uart1SendStr("OK,set server success! \r\n");memset(RX_buffer, 0, tbuf);//清缓存数据RX_num=0;                 //接收计数变量清0while(1){  if(Data_compare("LEDK"))               //点亮板上了的led{       led(1); memset(RX_buffer, 0, tbuf);//清缓存数据RX_num=0;                   //接收计数变量Uart1SendStr("led is open!\r\n");                           }else if(Data_compare("LEDG"))           //关闭板上了的led{led(0);      memset(RX_buffer, 0, tbuf);//清缓存数据RX_num=0;                   //接收计数变量清0Uart1SendStr("led is close!\r\n");                                    }   }}

这里主要用到有如下几个AT指令:
AT+CWMODE=3(设置ESP8266的工作模式3 AP+Station,返回"OK"或者"no change")
AT+CWSAP=“ESP8266_TEST”,“1234567890”,1,3(设置WIFI的名称及密码,这个名称和密码你可以随便取你自己喜欢的就行,后面两个是通道号和密码模式,默认1,3就好)
AT+CIPMUX=1(打开多连接 )
AT+CIPSERVER=1,8080(建立TCP服务器,开放端口8080)
这些AT指令我是在程序中执行的,不过你也可以利用USB转TTL模块直接与WIFI模块连接进行配置,这里说明一下,配置AP+Station模式以及配置WIFI名称和密码只要配置一次就行,即使之后断电再上电也不用重复配置,每次上电后只要输入AT+CIPMUX=1和AT+CIPSERVER=1,8080即可。为了让刚接触WIFI模块的人能直接使用这个模块,我在程序中把AP+Station模式以及WIFI名称和密码都写进去,这样无论你的模块之前是被配置成什么样,现在经过这四个配置后就可以在你的电脑上面热点发现有这个WIFI的出现,如下图:
到这里,我们的WIFI已经设置成功了。
还有就是每次发送AT指令给WIFI模块,WIFI模块收到你发送的特定指令后基本都会发送一串数据返回(当作是数据应答,为了就是让你知道你这个AT指令是否配置成功,具体的AT指令集我将在文章末尾附上链接,在我看来下面的AT指令集很全面)
接下来,我就简单的说下手机上面的APP"TCP连接"如何使用:
打开APP之后,点击右上角的连接,此时他会叫你选择一个远程主机进行连接(你如果刚刚下载的话,下面是没有任何一个连接的),而在你点击右上角连接后,会看到右上角有一个省略号,点进去后,他会叫你输入地址以及端口号,这个地址固定是:192.168.4.1,如果不放心可以使用“AT+CIFSR”查询(用USB转TTL模块直接与WIFI模块连接,然后在PC端上面的串口调试助手可以看到你发送AT+CIFSR后,在上面会显示WIFI模块返回的数据,返回的数据中就包括了这个地址),端口:8080,这对应着“AT+CIPSERVER=1,8080”。然后点击APP上面的连接,这样就将手机APP与WIFI模块的通讯完成了(也就是手机连接上了WIFI模块创建出来的WIFI,不过这个WIFI是不能上网的,只能拿来通讯用),就可以实现通过手机APP控制WIFI模块,进而控制STM32控制板了,上面的程序中,我是写接收到LEDK(也就是LED开的缩写)就亮起stm32f103c8t6上面的红灯PA1,接收到LEDG(也就是LED关的缩写)就熄灭stm32f103c8t6上面的红灯。手机界面如下:

是不是看起来跟蓝牙串口的界面很像,这也是另一种通讯的方法,在我之前的文章中也有一篇是专门讲蓝牙通讯的,感兴趣的可以去看看。好了,要说的话就这么多了,下面就附上相关程序以及AT指令集的链接。
stm32f103c8t6控制ESP8266与手机APP通信程序
ESP8266AT指令集
代码要的下方留言邮箱我会第一时间发给你们的,有什么问题也可以下面评论!

stm32f103c8t6控制ESP8266与手机APP通信相关推荐

  1. 车载TBOX标准-用于和后台系统/手机APP通信,实现手机APP车辆控制

    基于新能源汽车控制数据智能终端T-BOX对于共享汽车(汽车分时租赁)场景中司机通过手机APP实现预订车辆.查找车辆.无线开门.启动车辆.还车等操作. 手机APP.云端平台与车辆实现信息互通. T-Bo ...

  2. 树莓派蓝牙与手机APP通信

    文章目录 前言 一.树莓派的蓝牙基本配置 二.安装pybluez库 1.安装pybluez的必要编译环境 2.示例传输代码 3.运行文件 4.可能存在的问题 4.1 无法连接蓝牙 4.2 命令端口显示 ...

  3. 多路继电器控制4G远程手机APP

    多路继电器控制4G远程手机APPS274是多功能可编程的无线工业物联网数据监测采集控制 终端,是多功能多应用场景的 4G 物联智能网关.  采用 GSM/GPRS/3G/4G 网络通信,不受距离限制 ...

  4. 基于51单片机hc-05,hc-06蓝牙传送数据到手机APP

    项目场景: 通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 1s (自己可设定)传输一批传感器数据 最近在封装一些传感器的程序,在通过蓝牙连接手机调试数据的时候遇到的一点小问题.蓝牙的介绍网上有 ...

  5. 实现微信小程序和手机app(基于vue)PDF预览功能

    引言:最近在做微信小程序和手机端app开发(基于vue),实现一个pdf预览功能. 需求:点击pdf列表,跳转到预览pdf页面,页面上强制阅读10s后,显示一个按钮返回,更新阅读状态: 要求:不能调用 ...

  6. stm32f103c8t6+esp8266在WiFi下通过手机控制外设

    stm32f103c8t6+esp8266在WiFi下通过手机控制外设 前言 准备材料 实验目的 实验效果 代码 主函数 对esp8266初始化 总结 代码 前言 通过上一篇,介绍了esp8266的基 ...

  7. 实现微信小程序和手机app远程控制51单片机控制L298N电机驱动器控制马达(ESP8266 AT89S52 http请求转串口通信系统 mqtt )

    首先你有这样的8266 这种8266自身带2个按键和烧录芯片方便调试,综合性价比较高. 还有就是你需要有一个51单片机或者其他芯片都行.有了这2个芯片我们开始吧! 1.先看一段视频效果演示,再来介绍实 ...

  8. 阿里云IOT入门教程(三)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭

    阿里云IOT入门教程(一)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭 概述 所需材料 Mqtt预备知识 hacklab端开发 * 硬件端上报 ...

  9. 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

最新文章

  1. CPU深夜狂飙,一帮大佬都傻眼了...
  2. Windows Phone开发(48):不可或缺的本地数据库
  3. mybatis configuration的内容必须匹配问题
  4. Pytorch离线安装的纯净版
  5. 写在 Dubbo go 的第五年
  6. 分布式系统开发注意点_分布式系统开发注意事项
  7. 【转】有限状态机用法教程
  8. 关于IDEA代码的整理以及函数
  9. 广工计算机组成原理实验报告_计算机组成原理:存储器
  10. Python基础-循环
  11. 细说PHP:人人都能玩转PHP和MySQL Web开发
  12. Android 上专为视屏直播打造的轻量级弹幕库(100 多 kb)
  13. 基于肤色和眼睛定位的人脸检测算法——MATLAB实现
  14. Android的build-tools的下载方式
  15. 云栖大会压轴好戏 阿里云发布视频云V5计划与系列新产品
  16. 服务器系统装显卡驱动,windows2019服务器系统安装显卡驱动(A卡篇)
  17. 科技圈的“三座大山”正在崩塌中。。。
  18. 2016年腾讯实习生面试技术面一面二面
  19. 01.奇特的一生——柳比歇夫一生的秘密
  20. LAMP兄弟连-招募PHP技术讲师

热门文章

  1. 联想拯救者Y9000P 2022 配置
  2. 优维科技低代码开发平台在券商系统的落地实践
  3. vscode开启鼠标滚轮缩放字体大小设置
  4. app的崩溃率标准,优秀,合格,轻微隐患,严重隐患
  5. python安装作业
  6. 独立的荣耀将首次与华为打擂台,谁的折叠手机更有优势?
  7. 努比亚 系统升服务器设置,努比亚Nubia x6官方系统升级教程与方法
  8. python——田字格
  9. 多项式拟合缺点_多项式拟合
  10. scrapy爬取微信公众号内容,多管道储存,orm数据储存