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

这篇具有很好参考价值的文章主要介绍了【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

一、ESP8266模块与STM32连接

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

三、总结

单片机数据通过串口发送给WIFI模块,WIFI模块通过无线通信方式发送至电脑上位机,实现了基本的物联网功能,此处展示的仅为一个简单的测试。文章来源地址https://www.toymoban.com/news/detail-449112.html

到了这里,关于【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32-连接wifi模块(esp8266)

    目录 1. ESP8266模块介绍 1.1. 系统结构图 1.2. 功能介绍  1.3. AT指令说明  2. STM32连接ESP8266 3. ESP8266示例 3.1. ESP8266透传模式  3.2. ESP8266上传数据例程 乐鑫智能互联平台——ESP8266 拥有高性能无线 SOC,是一个完整且自成体系的 WiFi 网络解决方案,能够独立运行,也可以作为 slave 搭

    2024年01月16日
    浏览(67)
  • esp8266WiFi模块通过MQTT连接华为云

    最近 突然想做物联网的项目,做一个类似远程控制家里的设备,比如控制灯,电视机,空调这样的,同时能够将家里的温湿度等信息可以实时上传到手机里。 刚开始认为这个不就是一个很简单的项目嘛, 几个小时 之内就能做出来,可是没想到诸事不顺,遇到各种各样的bu

    2023年04月20日
    浏览(61)
  • 【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)

    #C0104 沧海茫茫千钟粟,且拾吾昧一微尘 ——《沧海拾昧集》@CuPhoenix 【阅前敬告】 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 【如有问题必是本集记录有谬,切勿深究】     WiFi串口通讯模块是嵌入式初学者需要接触到的一种常用模块,可以用

    2024年02月02日
    浏览(48)
  • esp8266WIFI模块教程:ATK-ESP8266——TCP网络通讯和服务器连接

      ATK-MW8266D 模块是正点原子推出的一款高性能 UART-WIFI(串口-无线)模块,ATK-MW8266D 模块板载了正点原子公司自主研发的 ATK-ESP-01 模块,该模块通过 FCC、CE 认证,可直接用于出口欧美地区的产品。   ATK-MW8266D 模块采用串口(LVTTL)与 MCU(或其他串口设备)通讯,且内置

    2024年04月15日
    浏览(47)
  • STM32玩转物联网实战篇:2.ESP8266 WIFI模块TCP通信示例详解

    开发板功能区分布图 开发板俯视图     ESP8266 WIFI模块内置TCP/IP网络协议,模块支持三种网络模式,AP、STA和AP+STA模式,AP模式:模块作为WIFI热点,等待其他设备的连接,进行局域网的通信,STA模式:模块作为客户端通过路由器连接外网,和服务器进行通信,AP+STA模式:两

    2024年02月03日
    浏览(61)
  • ESP8266模块教程,包含电路连接,固件烧录,串口通信

    Author : w2y        Date : 2022.06.28 资料下载: 链接:https://pan.baidu.com/s/1cSpXo7lVzewLXiB9PyWlvg?pwd=wh8a  提取码:wh8a    GPIO0 接地进入下载(烧录)模式,不接进入运行模式                     (下载模式)                                    (运行模式) MQTT_ESP-12S_D

    2024年02月01日
    浏览(64)
  • Arduino uno 通过esp8266WIFI模块连接onenet平台(TCP协议)(1接线、代码篇)

    1.可以用esp8266开发板,也可以用esp01s,有引脚说明(左)或esp01(右)  ESP8266Node-MCU(ESP-12E) esp01s接线如下:  esp01接线: 2.代码1:设置连接方式,WiFi账号密码,tcp协议等 打开串口监视器(右上角放大镜图标) 等待显示“ok ready” 输入AT 返回ok 输入AT+RST 返回 ok 一长段乱码

    2024年02月04日
    浏览(56)
  • STM32f103增加ESP8266模块,通过Wifi用手机TCP服务端远程与STM32通信

    提示:esp8266开启透传模式,连上路由器Wifi(电脑热点),接入STM32串口引脚。另外手机TCP服务端是手机IP地址+串口号(大于8000滴) 最近对ESP8266模块进行小了解,知道只要对8266通过串口发送AT指令进行配置其工作模式,就能够通过手机调试APP创建什么TCP/UDP服务端/客户端和8266进行

    2024年02月16日
    浏览(56)
  • stm32 的 ESP8266 wifi 模块 (ESP - 12s) 的使用

    1. ESP8266 的器件介绍 2. ESP2866外设  的引脚  3. 我所用的的ESP2866 的引脚图 4. 代码 编程的串口 5.wifi 的指令 1. AT     测试指令 2. AT+RST   重启模块 3. AT+GMR  查看版本信息 4. AT+RESTORE   恢复出厂设置 5.  AT+UART=115200,8,1,0,0   串口设置  串口号, 数据位, 停止位,  6. 

    2024年02月02日
    浏览(57)
  • STM32F103C8T6+ESP8266WIFI+DHT11模块连接巴法云

    1.MCU:STM32F103C8T6 2.ESP8266:正点原子WIFI模块 3.串口模块:正点原子串口模块 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: ESP8266固件刷写 我用的是安信可的固件,可以在官网上下载。正点

    2023年04月27日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包