ESP8266模块学习记录

计算机网络:

MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1] 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层以上实现网络互连是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。【说明:由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP!】
默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址
IP地址和网关不能一样bai,TCP/IP协议规定,网du络的数据包首先访问网关地址,找zhi到指定的网关地址后,再访问该网关地址上的daoIP地址,如果网管地址和IP地址一样,造成冲突,则无法正常访问
问:
无线路由器设置wifi 加密方式选择wpa,3600秒自动换密钥,那么自己怎么登陆?
答:那个密匙是用来加密无线信号的,跟你登陆路由器没有关系。电脑连接无线路由器信号仍然用着你原先设定的密码,不会变。另外,WPA加密方式比较容易被软件破解,建议你尽量不用这种方式
WEP:使用一个静bai态的密钥来加密所有的通信,那么如果网管人员想更新密钥,就得亲自访问每台主机
WPA:与之前WEP的静态密钥不同,WPA需要不断的转换密钥。WPA采用有效的密钥分发机制
WPA2:实现了802.11i的强制性元素,特别是Michael算法被公认彻底安全的CCMP(计数器模式密码块链消息完整码协议)讯息认证码所取代

在这里插入图片描述

ESP8266

ai cloud 人工智能云
厂商:安信可
URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址
SSID(Service Set Identifier):
RSSI:这个理解起来更简单,就是通过STA扫描到AP站点的信号强度。
AP(Access Point):无线接入点

ESP8266总共有多达16个GPIO管脚。
ESP8266EX 集成了⼀一个通⽤用的 10bit 精度的 ADC。可检测的模拟输⼊入电压范围在 0 到 1V。该 ADC主要⽤用于检测传感器输出或是电池电量等。 在 EXP8266EX 发包时不可使⽤用 ADC,否则将会导致电压值的不准确。
AT指令是应用于终端设备与PC应用之间的连接与通信的指令。AT 即Attention。每个AT命令行中只能包含一条AT指令;对于AT指令的发送,除AT两个字符外,最多可以接收1056个字符的长度(包括最后的空字符)。
什么是透传模式?

透传就是指不需要关心wifi协议是如何实现的。所需要做的就是A通过串口发数据,B通过串口收数据,整个过程中A串口和B串口就像是用导线直接连接起来了一样。则对于开发人员来看,就是完全透明的。

更简单地理解就是:

如果不开启透传模式,我们怎么发送数据呢?在每次发送数据前都必须先发送指令AT+CIPSEND=,例如:

AT+CIPSEND=4

OK

           //在 > 后面输入要上传的数据

但是一旦开启了透传模式,我们就不需要在每次发送数据前都发送指令AT+CIPSEND=了,只需要发送一次AT+CIPSEND,之后发送的所有内容全部当成是数据了!

但是这也存在一个问题,要是我后来又想发送命令了,但是却也当成是数据发送过去了。这可怎么办?

这就要退出透传模式了。怎么退出,发送数据"+++"就可以了。注意:此时“+++”后面,不接“发送新行”!

strstr((const char*)USART3_RX_BUF,(const char*)str);
char * strstr ( const char *, const char * );
strstr函数要求输入的参数必须是const char *类型的,所以强制转换一下
若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此位置到str1末尾的所有字符;如果str2不是str1的子串,则返回NULL。(注:若想返回str2在str1第一次出现的位置,不是这个函数)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
跟AT指令集手册一样要打上?和=

s = va_arg(ap, const char *);
				
				for ( ; *s; s++) 
				{
					USART_SendData(USARTx,*s);
					while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET );
				}

*s是判断s指向的内容不为0,s++是指向下一个内存,这个是循环遍历数组s,直到找到一个为0的元素为止,一般用来遍历字符串,因为字符串的结束符\0的ASCII码就是0,所以遇到\0就会退出循环。
在这里插入图片描述
keil中
if (!value)
{
*ptr++ = 0x30;
*ptr = 0;
return string;
}
value为int类型,if(!10)结果为0,keil非零整数取反为0

//整形转字符,stm32不支持标准的itoa,这里自己实现
char *myitoa(int value, char *string, int radix)
{
    int     i, d;
    int     flag = 0;
    char    *ptr = string;
 
    /* This implementation only works for decimal numbers. */
    if (radix != 10)
    {
        *ptr = 0;
        return string;
    }
 
    if (!value)
    {
        *ptr++ = 0x30;
        *ptr = 0;
        return string;
    }
 
    /* if this is a negative value insert the minus sign. */
    if (value < 0)
    {
        *ptr++ = '-';
 
        /* Make the value positive. */
        value *= -1;
    }
 
    for (i = 10000; i > 0; i /= 10)
    {
        d = value / i;
 
        if (d || flag)
        {
            *ptr++ = (char)(d + 0x30);
            value -= (d * i);
            flag = 1;
        }
    }
 
    /* Null terminate the string. */
    *ptr = 0;
 
    return string;
 
} /* NCL_Itoa */
 
//字符串转整形,stm32不支持标准的atoi,这里自己实现
int myatoi(const char *str)
{
	int s=0;
	uint8_t falg=0;
	
	while(*str==' ')
	{
		str++;
	}
 
	if(*str=='-'||*str=='+')
	{
		if(*str=='-')
		falg=1;
		str++;
	}
 
	while(*str>='0'&&*str<='9')
	{
		s=s*10+*str-'0';
		str++;
		if(s<0)
		{
			s=2147483647;
			break;
		}
	}
	return s*(falg?-1:1);
}

WIFI模块中,AP和STA模式bai中分别意思是:

1、AP:也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接

2、STA站点就是每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点 Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

C语言

va_list,vsprintf
https://blog.csdn.net/ZKR_HN/article/details/99558135
https://www.runoob.com/cprogramming/c-standard-library-stdarg-h.html

功能
C库函数 int vsprintf(char *str,const char *format,va_list arg)使用 参数列表格式化 输出到字符串
参数
str 指向一个字符串数组的指针
format 这是一个字符串,包含了要被写入到字符串str的文本(format可以是包含嵌入的format标签,这些标签可以被随后的附加参数中指定的值替换,并按需格式化)
format具体讲解
一般形式:%[flags][width][.precision][length]specifier
specifier为必选参数,跟我们常用的printf参数没什么两样,比如%d表示十进制数,%c表示字符。具体细节如下表:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ESP8266是一款高性能的WIFI串口模块,内部集成MCU能实现单片机之间串口通信,是目前使用最广泛的一种WIFI模块之一。它可以简单理解为一个WIFI转串口的设备,不需要太多的WIFI相关知识,只需要了解如何使用串口即可。ESP8266装有的系统可以表现出一些领先的特征,比如快速切换节能VoIP在睡眠/唤醒模式之间、配合低功率操作的自适应无线电偏置、处理前端信号的功能以及消除蜂窝/蓝牙/DDR/LVDS/LCD干扰的能力。对于用户来说,他们可以通过使用一个USB转TTL的模块或单片机的串口来与ESP8266进行通信,通过发送AT指令来对WiFi模块进行控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [学习笔记——ESP8266](https://blog.csdn.net/weixin_52801934/article/details/126180831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [ESP8266 WiFi模块介绍](https://blog.csdn.net/weichen_78/article/details/128542817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值