ESP8266 WIFI

2023-12-04

手机APP,esp8266,单片机之间究竟是如何连接的呢?

esp8266与单片机是串口连接,esp8266仅作为网络模块使用,不需要写代码。 单片机通过串口发送AT指令,esp8266执行AT指令,设置为STA模式,AP模式或混合模式,生成WIFI和服务器IP,完成组网。手机APP可以连接esp8266在AP模式下的热点。也可以连接在STA模式下esp8266连接的那个WiFi。

如何组成一个局域网?

连接同一个局域网的设备是如何通讯的呢?这和esp8266的透传功能有什么联系?

在一个局域网内,一个设备连接另一个设备的IP,那么信息就可以发到另一个设备上。这个IP是在设备接入这个局域网代表了设备地址。APP端向ESP发送字符1,ESP会在串口输出+IPD:0,3,:1。ESP串口速率需要和单片机的串口速率相同。指令为AT+UART_DEF=9600,8,1,0,0,表示8位数据,1位停止位,无校验位,不使能流控。单片机通过串口,用AT指令将数据发送到ESP,同时手机APP也开始采集数据。

不同模式适合咋样的应用场景?

在使用esp8266之前,需要调试一下。将esp8266的发送和接收串口连接到转串口上之后,连接电脑,电脑打开串口调试助手。使用串口调试助手发送AT指令到esp8266,设置它的工作模式。发送AT,返回OK,表示连接正常。然后发送AT+CWMODE=1,设置为STA模式。在这个模式下,esp8266作为一个终端,需要连接WiFi或者热点。然后发送AT+RST,重启之后设置的模式才会生效。设置好模式之后,esp8266需要连接WiFi或者热点。发送AT+CWLAP,查询当前WIFI列表。发送AT+CWJAP="WIFI名",""WIFI密码。连接到此WIFI后,会显示WIFI CONNECTED,GOT IP。断电重启后,ESP8266会自动连接到这个WIFI,获取IP。发送AT+CIFSR,获取当前局域网内,esp8266的ip。这个ip需要记住,因为待会手机APP需要根据这个ip来连接esp8266。发送AT+CIPMUX=1,建立多连接。发送AT+CIPSERVER=1,8080,建立服务器,端口号是8080。esp8266配网完成。手机APP里的服务器地址改为之前记下的esp的IP地址,端口号为8080.点击连接,显示连接成功,串口助手会返回connect。

发送AT+CWMODE=2,设置为AP模式。在AP模式下,esp作为一个热点,手机可以连接。AT+RST重启生效。那么,下一步不需要像STA模式那样,查询WIFI列表并连接。下一步就是查询esp的IP地址,AT+CIFSR。然后就是建立多连接和建立服务器。AP模式配置完成。手机连接ESP生成的WIFI,连接ESP的IP。

无论是STA模式,还是AP模式,手机APP都可以与单片机通讯,ESP扮演了中转站的角色。由于ESP本身不需要编程,主要是单片机需要完成ESP初始化,UART设置,UART_SEND封装各种AT命令,以及UART_RECE接收手机发送的命令。

ESP8266 WIFI模块有TX,RX,VCC,VSS引脚,还有4个分别为CH_PD,GPIO0,GPIO1,RST。GPIO0在需要升级固件时,需要拉低;CH_PD是EN引脚,使用时需要拉高。

#include "stm32f10x.h"
#include "esp8266.h"


void main(void)
{
    ESP8266_USART_Config();
    esp8266_init();
    
    while(1);
     
}

//----------------------------------------------------------------------------

#include"esp8266.h"
#include"stm32f10x.h"


void esp8266_init(void)
{
    usart_sendcmd("AT");
    usart_sendcmd("AT+CWMODE=2");
    usart_sendcmd("AT+RST");
    usart_sendbuild(void);
    usart_sendcmd("AT+RST");
    usart_sendcmd("AT+CIPAP");
    usart_sendcmd("AT+CIPMUX=1");
    usart_sendservicer("AT+CIPSERVICER=1,8080");
     
}

//---------------------------------------------------------------------------

#include"stm32f10x.h"
#include "usart.h"
 
void ESP8266_USART_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

	GPIO_InitStructure.GPIO_Pin = GPIO_PIN_2;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_PIN_3;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	USART_InitStructure.USART_BaudRate = 9600;

	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No ;
	USART_InitStructure.USART_HardwareFlowControl = 
	USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	USART_Init(USART2, &USART_InitStructure);
	
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
      NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);
	NVIC_Configuration();
	
  USART_ITConfig( USART2, USART_IT_RXNE, ENABLE);
  USART_ITConfig (USART2, USART_IT_IDLE, ENABLE ); //使能串口总线空闲中断 	
	
	USART_Cmd(USART2, ENABLE);	    
}


//---------------------------------------------------------------------------------------
void usart_sendcmd(char*p)
{
    for(int i=0;*p!='\0';i++)
    {
        USART_SendData(*p);
        Delay(50); 
        p++;
    }
    Delay(50); 
    USART_SendData('\r');
    Delay(50); 
    USART_SendData('\n');
    Delay(100); 
}

void usart_senddata(uint8_t *p)
{
    usart_sendcmd("AT+CIPSEND=0,7");
    for(int i=0;*p!='\0';i++)
    {
        USART_SendData(*p);
        Delay(50); 
        p++;
    }
    Delay(50); 
    USART_SendData('\r');
    Delay(50); 
    USART_SendData('\n');
    Delay(100);       
}

void usart_sendbuild(void)
{
    char ccmd[100]={0};
    ccmd[100]="AT+CWSAP=\"ESP8266\",\"12345678\",1,0"
    usart_sendcmd(ccmd);
    Delay(50); 
    USART_SendData('\r');
    Delay(50); 
    USART_SendData('\n');
    Delay(100);      
    
}
//-------------------------------------------------------------------------------------
void USART2_IRQHandler(void)
{
    char ch[100]={0};
    if(USART_GetITStatus( USART2,  USART_IT_RXNE)!=RESET)
    {
        ch=USART_ReceiveData( USART2 );
        
    }
    USART_ClearITPendingBit(USART2, USART_IT_RXNE );
    if((ch[0]=='+')&&(ch[1]=='I')&&(ch[2]=='P')&&(ch[3]=='D')&&(ch[4]==',')&&(ch[5]=='0')&&(ch[6]==',')&&(ch[7]=='1')&&(ch[8]==':'))
    {   if(ch[9]==1)
      {
        ON();
      }
      else OFF();
    }
}

//---------------------------------------------------------------------------------------

void Delay(uint32_t nCount)	 
{
	uint32_t i;
	SysTick_Config(SystemCoreClock/1000000);
	for (i=0; i<nCount; i++) {
		while ( !((SysTick->CTRL)&(1<<16)) );
	}

	SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;


}






在OneNet云平台显示数据。使用ESP8266来上传数据。

HTTP协议。

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

ESP8266 WIFI 的相关文章

  • 2.4G SOC收发芯片XL2412P,适用于无线键鼠,遥控器等多种场景

    XL2412P芯片是 款高性能低功耗的SOC集成无线收发芯片 集成MO核MCU 工作在2 400 2 483GHz世界通用ISM频段 该芯片集成了射频接收器 射频发射器 频率综合器 GFSK 调制器 GFSK解调器等功能模块 并且支持一对多
  • 普冉32位单片机 PY32C642,M0+内核,1.7 V ~ 5.5 V宽工作电压

    PY32C642 单片机采用高性能的 32 位 ARM Cortex M0 内核 宽电压工作范围 嵌入 24Kbytes Flash 和 3 Kbytes SRAM 存储器 最高工作频率 24 MHz 包含多种不同封装类型产品 工作温度范围
  • 如何防护零日攻击

    零日攻击是什么 零日攻击 也称为零时差攻击 通常是指利用还没有被补丁的安全漏洞进行的攻击 这些漏洞在被发现后 由于各种原因 软件供应商未能及时发布补丁 使得黑客有机会利用这些漏洞进行攻击 零日攻击通常由技术高超的黑客发起 他们在对目标系统或
  • 八路视频光端机技术导论:多通道视频传输的高效解决方案

    随着光通信技术的快速发展 八路视频光端机 已成为多通道视频传输的有效解决方案 本文将探讨该技术的原理 优势及应用前景 为光通信行业的技术人员和研究学者提供参考 技术原理 八路视频光端机基于 波分复用 WDM 技术 通过一个光纤同时传输多路视
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用
  • 浅谈能耗系统在马来西亚连锁餐饮业的应用

    1 背景信息 Background 针对连锁餐饮业能耗高且能源管理不合理的问题 利用计算机网络技术 通讯技术 计量控制技术等信息化技术 实现能源资源分类分项计量和能源资源运行监管功能 清晰描述各分店总的用能现状 实时监测各供电回路的电压 电
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • 网络空间安全女生就业,怎么学?

    我实验室的学长们基本都是以红队和复现为主 如果学校好点可能还有更多的选择 如果想在这个方向深入下去 推荐流程是先打两年CTF 把大概的技术方向摸一摸 大一的话 如果学校还不错 那就优先建议打好基础 包括C语言 Python一类 建议把CTF
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 太阳诱电 | 陶瓷电容器的静电容量相关

    陶瓷电容器的静电容量会因温度而变化吗 电容器的静电容量的温度特性是什么 陶瓷电容器的静电容量随周围的温度而变化 静电容量因温度而变化的现象 称为静电容量的温度特性 这是由于陶瓷电容器使用的材料造成的 也是所有陶瓷电容的常有现象 以下是本公司
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • HPE Aruba Networking:五大网络现代化策略助力实现校园数字化转型

    作者 Aruba中国区技术销售总监 俞世丹 全球数字化进程日益加深 科技已成为加速教育行业发展的重要驱动力 人工智能 大数据 云计算 物联网 虚拟现实等新兴技术的快速发展 正在深刻改变着教育的形态和模式 为了更好地满足学校师生个性化教育教学
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全

随机推荐