文章目录

  • 前言
  • 一、ESP8266模块与STM32连接
  • 二、单片机代码
  • 三、总结

前言

承接上文WIFI上位机部分:【上位机】通过WIFI上位机与网络调试助手通信绘制曲线,现阶段实现了STM32单片机与ESP8266WIFI模块作为下位机与WIFI上位机通信。

一、ESP8266模块与STM32连接

ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线)模块,此处使用的是正点原子团队自主开发的ATK-ESP-01模块。该模块通过串口与单片机(此处使用启明欣欣的STM32F407ZGT6)进行通信,只需连接四个引脚,使用十分方便。
在与单片机使用前,建议先连接电脑,使用串口调试助手与网络调试助手进行互相通信的测试,确保WIFI模块的正常及网络的连通。参考教程:ESP8266模块使用教程
测试完毕后,可与单片机串口连接,如下所示:

二、单片机代码

对于ESP8266的使用,其本质是使用串口发送AT指令操纵模块,可参考:AT指令集,故只需熟悉基本指令,便可编写相关代码。以下是部分操作指令:

#include "esp8266.hpp"
using namespace ESP8266_Space;extern "C" void MineMain(void)
{char buf[339];wifi.init();HAL_Delay(100);//wifi.sendCmd("AT+RESTORE", "ODDK", 60000);//wifi.sendCmd("AT+CWMODE=1", "OK" , 100);  //切换到STA模式//wifi.sendCmd("AT+RST", "OK" , 100);  //切换到STA模式//HAL_Delay(60000);while(wifi.sendCmd("AT", "OK", 100) == Timeout){wifi.quitTrans(); //退出透传}wifi.sendCmd("ATE0"    , "OK" , 100);  //关闭回显//wifi.sendCmd("AT+CWLAP", "OK" , 5000); //显示可加入的AP/* 加入wifi */sprintf(buf,"AT+CWJAP=\"%s\",\"%s\"","dxxy16-403-1","1234567890");wifi.sendCmd(buf, "WIFI GOT IP", 15000); //加入APwifi.send((char*)"", "OK"         , 2000); //加入AP/* 与PC机建立连接 */sprintf(buf,"AT+CIPSTART=\"%s\",\"%s\",%s", "TCP","192.168.0.171","8086");wifi.sendCmd(buf, "OK", 15000);/* 进入透传模式 *///wifi.sendCmd("AT+CIPMODE=1", "OK", 200); //开启透传模式//wifi.sendCmd("AT+CIPSEND"  , ">", 100); //进入透传for(;;){static char messa[339] = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40|"\"1,1,1,0.994,0.993,0.991,0.889,0.875,0.866,0.850,0.838,0.816,0.806,0.789,0.775,0.759,0.745,0.739,0.724,0.715,0.710,0.689,0.667,"\"0.658,0.645,0.635,0.626,0.598,0.578,0.568,0.559,0.496,0.481,0.472,0.452,0.435,0.418,0.406,0.389,0.377";sprintf(buf,"%s\r\n",messa);HAL_Delay(500);//非透传wifi.sendCmd("AT+CIPSEND=676",">",100); //将要发送676个数据wifi.send(buf, "SEND OK", 100);//透传模式//wifi.sendNoAck((uint8_t *)buf);}
}

这里使用了模块的STA模式,即WIFI模块作为一个客户端(Client)与WIFI上位机(Server)通信,原理与上一篇文章相似。只需要更改相应的指令,就可切换至AT或AT/STA模式,但AT模式与STA模式的使用方法稍有不同(AT模式时模块作为服务端)。我们使用一个char型数组将所要发送的消息存储起来,注意格式与上位机所规定的协议保持一致。
使用另外一个串口将单片机与电脑相连,好处是能够观察WIFI模块是否已连接且正常工作:

#include "esp8266.hpp"
#include "string.h"extern DMA_HandleTypeDef hdma_usart6_rx;//使用了串口的DMA,usart6与电脑相连CPP_UART test_uart = CPP_UART(&huart3);
ESP8266 wifi = ESP8266(&huart6, &hdma_usart6_rx, &htim6);/*** @brief  ESP8266 类 构造函数* @param  huart  : 连接ESP8266所用到的串口* @param  dma_rx : 串口接收对应的DMA* @param  htim   : 用于计数是否超时的定时器* @note  huart 对应的串口配置要求正确,波特率用默认的115200(也可自己更改,* @            但要注意ESP8266本身接收串口的速率),并且需要打开中断* @     dma_rx 串口设置dma的接收,一次一个字节,循环模式(circle)* @       htim 不用开启定时器中断,不用关心预分频系数和自动重装载值和OnePulse模式* @retval None**/
ESP8266::ESP8266(UART_HandleTypeDef* huart, DMA_HandleTypeDef *dma_rx, TIM_HandleTypeDef *htim):uart(huart)
{this->dma_rx     = dma_rx;this->tim        = htim;this->uart_state = Idle;this->mode       = NOINIT;
}

完整源码:ESP8266模块使用代码(基于C++)
这里可能出现的问题是可能会连接不上或者出现busy提示,此时重启一下模块并重新连接。程序烧录后执行效果如下:

三、总结

单片机数据通过串口发送给WIFI模块,WIFI模块通过无线通信方式发送至电脑上位机,实现了基本的物联网功能,此处展示的仅为一个简单的测试。

【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信相关推荐

  1. 51单片机通过WIFI模块ESP8266控制LED灯

    完整源码下载地址:https://download.csdn.net/download/tongxin082/21440621 一.系统方案 手机APP通过ESP8266 WIFI模块与51单片机通信 ...

  2. 15单片机通过WIFI模块ESP8266实现手机远程监控可燃气体浓度

    15单片机通过WIFI模块ESP8266实现手机远程监控可燃气体浓度 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 一,系统方案 1.方案描 ...

  3. 华为无线wifi设备连接到服务器,wifi模块如何连接云服务器

    wifi模块如何连接云服务器 内容精选 换一换 本节为您介绍如何在本机使用远程登录工具MSTSC登录Windows弹性云服务器.弹性云服务器状态为"运行中".如果弹性云服务器采用密 ...

  4. 物联网系列之WIFI模块ESP8266一介绍

    内容 Change history 内容 1        前言 1.1        目的 2        计划 2.1        测试环境 2.2        计划 3        行动 ...

  5. WIFI模块——ESP8266

    1.ESP8266简介 ESP8266是一款高性能的WIFI串口模块,内部集成MCU能实现单片机之间串口通信,是目前使用最广泛的一种WIFI模块之一.可以简单理解为一个WIFI转串口的设备,不用知道太 ...

  6. 【毕设调试一】WiFi模块esp8266的调试

    硬件说明: 提示 :主控芯片STM32F103C8T6,与WiFi通信串口为串口二,打印串口为串口三(不使用串口一是当时设计时,方便pcb走线) 说明 :因为我是使用PCB画板的方式来走线的,并不是按 ...

  7. 无线抄表免费透传云服务器,两个WIFI模块USR-WIFI232-B2连接有人云实现远程一对一透传...

    本案例基于STA模式的无线网络配置: 数据流向:PC端串口调试软件----1号A2/B2设备-----有人云透传组----2号A2/B2设备---PC端串口调试软件 客户实际应用:串口设备---A2/ ...

  8. 1.WiFi模块ESP8266模块的使用(针对初学者)

    虽然esp8266有很多种,但是对于我们初学者来说,只需要有RXD,TXD,VCC,GND四个引脚,简单入门足够了 1. 引脚说明: VCC连接正极(有些是3.3V,有些是5V,我的这个是5V),GN ...

  9. WI-FI模块ESP8266(针对初学者)

    1.管脚定义 VCC连接正极(建议接TTL下载器3.3V,接5V模块会很容易发烫,可能会烧坏) RXD:数据的接收端 (连接单片机或者USB转TTL模块的TXD) TXD:数据的发送端 (连接单片机或 ...

最新文章

  1. 谷歌提出新分类损失函数:将噪声对训练结果影响降到最低
  2. android avc格式,Android权限 - avc权限问题
  3. 折腾一天总结下安装centos的安装方法。。。
  4. c语言药房系统书写指导书,C语言药房管理系统[文书借鉴]
  5. Github 1.3万星,迅猛发展的JAX对比TensorFlow、PyTorch
  6. apache为什么更适合处理动态请求_[适合初中级Java程序员修炼手册从0搭建整个Web项目](一)...
  7. linux编译c++ 静态库,C/C++ 条件编译静态库
  8. [日志]开车要掌握的十六大绝技
  9. 袁永福的博客系列文章链接集合
  10. Ubuntu中软件安装与卸载
  11. 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
  12. 历时一年 Apache Spark 3.3.0 正式发布,新特性详解
  13. Linux SD卡驱动开发
  14. html转PDF并添加水印
  15. ActiveX插件在关闭IE窗口时使得IE崩溃
  16. 海龟画图 python太阳花_python海龟绘图实例教程
  17. 苹果MAC电脑双系统教程——MAC安装Windows双系统教程
  18. Android开机向导setupwizard,设置系统语言,WiFi向导
  19. HMM(马尔科夫过程及隐马尔科夫过程)
  20. Day02—homework

热门文章

  1. 【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
  2. 深入浅出scala之函数(匿名函数)(P41-45)
  3. javascript内置函数是什么
  4. SKU与SPU(外行人都能看懂)
  5. 鸿蒙os适配平板,华为新平板搭载高通4G芯片,鸿蒙OS已适配完成,友商随时可用...
  6. 啥地方规定豆腐干豆腐
  7. Charles--使用Charles抓Https包
  8. 智慧化工厂:化工厂人员定位+化工厂定位系统实现全智能化化工厂自动管理考勤-新导智能
  9. C++编程基础(1)-C中的malloc/free和C++中的new/delete
  10. day06三级缓存 二次采样