WiFi模块ESP-07s开发过程(学习笔记)

2023-05-16

目录

  • 注意事项
    • 获取AT指令
    • 用到的指令
    • 通过返回的指令提取自己想要的信息

注意事项

  1. 转义字符:“ \ ” :C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。简单来说就是在一些字符前加 “\” 使它具有其他意义。
  2. 分开处理AT指令的程序和发送AT指令的程序,避免在空等WiFi模块返回指令。可以用switch…case函数来写,网上很多例程都是等待返回的,移植到主程序运行会消耗很多时间,而且其他功能还不能用,要等连上网才能用。
  3. &:取地址符号。

获取AT指令

  1. 可以到乐鑫该官网找,链接: 命令集
  2. 或者找模块商城客服要一份PDF,不同固件对指令的支持不一样;

用到的指令

注意:除了退出透传指令,发送其他指令都要在后面添加“\r\n”

  1. 测试AT启动:AT

  2. 退出透传模式:+++

  3. 设置工作模式为WiFi模式:AT+CWMODE=1

  4. 重启:AT+RST

  5. 连接WiFi:AT+CWJAP=“WiFi名称”,“WiFi密码”

  6. 获取信号强度:AT+CWJAP?
    返回的报文中,带负号“-”的数字就是信号强度。
    其范围为零到负一百:0 ~-100
    数字越大,代表信号越强。

  7. 查询MAC地址:AT+CIPSTAMAC?

  8. 查询本地IP、网关和子网掩码:AT+CIPSTA?

  9. 查询DNS地址:AT+CIPDNS_CUR?
    有些固件不支持这条指令。

  10. 禁用多连接:AT+CIPMUX=0

  11. 连接服务器:AT+CIPSTART=“TCP”,“服务器地址”,端口号

  12. 开启透传模式:AT+CIPMODE=1

  13. 透传模式下发送数据:AT+CIPSEND

这样就可以直接发送数据了,发送指令WiFi模块也不会响应,要发送退出透传模式指令才会对AT指令有反应。

通过返回的指令提取自己想要的信息

  1. 提取信号强度
#include "stdlib.h"
char *ESP_RSSI = NULL;//接收字符串
int RSSI = -1;
void Compare_RSSI(void)//比较信号强度
{
	if(RSSI <= 0 && RSSI >= -55)
	{
		m_atrssi = BEST;//信号强度最好
	}
	else if(RSSI < -55 && RSSI >= -70)
	{
		m_atrssi = BETTER;//信号强度较好
	}
	else if(RSSI < -70 && RSSI >= -85)
	{
		m_atrssi = GENERAL;//信号强度一般
	}
	else if(RSSI<-85 && RSSI >=-100)
	{
		m_atrssi = BAD;//信号强度差
	}
}
void RSSI(void)// 提取信号强度
{
	ESP_RSSI = strstr((char *)RX_BUF,"+CWJAP:");
	ESP_RSSI = strstr((char *)ESP_RSSI + 1,",");
	ESP_RSSI = strstr((char *)ESP_RSSI + 1,",");
	ESP_RSSI = strstr((char *)ESP_RSSI + 1,",");
	
	RSSI = atoi(ESP_RSSI + 1);//把字符串转换成整型数
	//判断级别
	Compare_RSSI();//判断信号强度
}

参考博客

  1. 提取MAC地址
#include “stdio.h”
const char s[2] = "\"";//间隔符 ” 一个双引号字符需要转运符号加 “\” 
char *ESP_MAC1;			
char *ESP_MAC2;
uint8_t ESP_MAC[12] = {0};//MAC地址
void MAC(void)//提取MAC地址
{
	int a = 0;
	ESP_MAC1= strtok((char *)Array,s);//分解接收到的字符串,分隔符为 ”
	while(ESP_MAC1!= NULL)//若未分割完成
	{
		a++;
		if(a == 2)//提取MAC地址
		{
			ESP_MAC2= ESP_MAC1;
		}
		ESP_MAC1= strtok(NULL,s);
	}
	sscanf((const char *)ESP_MAC2,"%c%c:%c%c:%c%c:%c%c:%c%c:%c%c",&ESP_MAC[0],&ESP_MAC[1],&ESP_MAC[2],&ESP_MAC[3],&ESP_MAC[4],&ESP_MAC[5],&ESP_MAC[6],&ESP_MAC[7],&ESP_MAC[8],&ESP_MAC[9],&ESP_MAC[10],&ESP_MAC[11]);
}
  1. 提取本地IP、网关和子网掩码
#include “stdio.h”
char *ESP_MAC1;			
char *ESP_IP;
char *ESP_GW;			
char *ESP_NM;
int ESP_Local_IP[4] = {0};//本地IP
int ESP_Gateway[4] = {0};//网关		
int ESP_Netmask[4] = {0};//子网掩码	
int ESP_DNS[4] = {0};//DNS地址		
void Save_IP(void)//存本地IP
{
	int a = 0;
	ESP_MAC1= strtok((char *)RX_BUF,s);//分解接收到的字符串,分隔符为 ”
	while(ESP_MAC1!= NULL)//若未分割完成
	{
		a++;
		if(a == 2)//提取本地IP
		{
			ESP_IP= ESP_MAC1;
		}
		else if(a == 4)//提取网关
		{
			ESP_GW= ESP_MAC1;
		}
		else if(a == 6)//提取子网掩码
		{
			ESP_NM= ESP_MAC1;
		}
		ESP_MAC1= strtok(NULL,s);
	}
	sscanf((const char *)ESP_IP,"%d.%d.%d.%d",&ESP_Local_IP[0],&ESP_Local_IP[1],&ESP_Local_IP[2],&ESP_Local_IP[3]);
	sscanf((const char *)ESP_GW,"%d.%d.%d.%d",&ESP_Gateway[0],&ESP_Gateway[1],&ESP_Gateway[2],&ESP_Gateway[3]);
	sscanf((const char *)ESP_NM,"%d.%d.%d.%d",&ESP_Netmask[0],&ESP_Netmask[1],&ESP_Netmask[2],&ESP_Netmask[3]);
}

参考语法

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

WiFi模块ESP-07s开发过程(学习笔记) 的相关文章

随机推荐

  • linux网络基础

    文章目录 前言1 网络通信概述2 网络设备概述3 应用层概述4 IP地址分类 xff08 IPv4 xff09 5 linux网络编程实践5 1 socket编程接口介绍5 2 IP地址格式转换函数实践5 3 服务器和客户端程序5 4 发送
  • sudo apt-get update 出现签名无效或者没有数字签名

    错误提示 获取 5 http packages ros org ros ubuntu bionic InRelease span class token punctuation span span class token number 4
  • 现代控制原理专业词汇中英文对照

    自动控制原理专业词汇中英文对照 xff08 一 xff09 自动控制原理专业词汇中英文对照 xff08 二 xff09 自动控制原理专业词汇中英文对照 xff08 三 xff09 中文英文状态state状态变量state variables
  • 自动控制原理专业词汇中英文对照(一)

    自动控制原理专业词汇中英文对照 xff08 二 xff09 自动控制原理专业词汇中英文对照 xff08 三 xff09 现代控制原理专业词汇中英文对照 中文英文自动控制automatic control cybernation自动控制系统a
  • 远程服务器上安装Anaconda并创建python环境、安装pytorch(Linux)

    实验室共用服务器 xff0c 所以需要在自己的文件夹下创建自己的环境 使用远程连接工具 xff1a mobaxterm 第一步 xff1a 官网下载Anaconda 官网 xff1a https www anaconda com distr
  • 使用vscode 的remote 远程连接华为云

    文章目录 使用vscode 的remote 远程连接华为云前言remote development免密码登录使用vscode 远程编写一个c函数 使用vscode 的remote 远程连接华为云 前言 博主前阵子 xff0c 买了个华为云的
  • python扫盲之self、join()和shape、dim

    目录 1 self2 join 3 张量的shape和dim 1 self self相当于全局变量 xff0c 如果某个变量会应用到不止一个函数中 xff0c 那就在 init 函数中定义带有self的变量 xff1b 相反 xff0c 如
  • (matlab)mat文件中的cell数据存到xls中-writematrix()

    mydata3 mat文件的数据结构是这样的 xff1a 其中的trajLU xff08 列名 xff09 是struct类型 xff0c 其中的数据是1 1的cell xff0c 每个cell里又是n 3的double数据 xff0c 说
  • python读取DataFrame的某行或某列

    常用操作 xff0c 记录一下防止忘记 span class token keyword import span numpy span class token keyword as span np span class token keyw
  • python numpy数组含逗号的切片

    普通切片操作 xff1a span class token builtin list span 名 span class token punctuation span 首 xff1a 尾 xff1a 步长 span class token
  • python多张子图画在一张画布上,显示图例和标题,并保存。

    1 分别画4个折线图子图 xff0c 并保存为svg格式 xff08 矢量图 xff0c 放大不模糊 xff09 x span class token operator 61 span span class token punctuatio
  • jupyter使用help函数查询函数功能

    写在前边 切记 xff1a 函数不要带小括号 xff01 xff01 先 import 对应的python库 xff01 xff01 span class token function import span xx help span cl
  • python 列表赋值给另一个列表不改变原列表(深拷贝和浅拷贝)

    先放结论 xff1a 要想列表复制给另一个列表不改变原列表 xff0c 应使用方法三深拷贝 列表内的数值是不可变类型 xff0c 列表内的列表是可变类型 a span class token operator 61 span span cl
  • Ubuntu 20.04 安装 tensorflow-gpu

    1 安装Anaconda3 1 1 下载安装包 wget P tmp https repo anaconda com archive Anaconda3 2020 02 Linux x86 64 sh 1 2 安装 bash tmp Ana
  • 实验3  数据库综合查询

    实验3 数据库综合查询 一 实验目的 掌握SELECT语句的基本语法和查询条件表示方法 xff1b 掌握查询条件种类和表示方法 xff1b 掌握连接查询的表示及使用 xff1b 掌握嵌套查询的表示及使用 xff1b 了解集合查询的表示及使用
  • Ubuntu18安装mysql8.0

    一 删除mysql 5 7 卸载 sudo apt get remove mysql common sudo apt get autoremove purge mysql server 5 7 清理残留数据 dpkg l grep rc a
  • 将arduino uno的数据上传到云平台

    文章目录 将arduino uno的数据上传到云平台解决方案adruino uno方面代码esp8266 方面代码主函数阿里云sdkcpp部分函数头部分 将arduino uno的数据上传到云平台 解决方案 加一块esp8266的单片机 x
  • 华为IS-IS基础配置

    目录 一 原理概述 二 实验要求 三 实验拓扑 四 实验步骤 一 原理概述 1 IS IS xff1a Intermediate System to Intermediate System xff0c 中间系统到中间系统 2 链路状态协议
  • 基于markdown-it打造的markdown编辑器

    前言 markdown it是一个用来解析markdown的库 xff0c 它可以将markdown编译为html xff0c 然后解析时markdown it会根据规则生成tokens xff0c 如果需要自定义 xff0c 就通过rul
  • WiFi模块ESP-07s开发过程(学习笔记)

    目录 注意事项获取AT指令用到的指令通过返回的指令提取自己想要的信息 注意事项 转义字符 xff1a xff1a C中定义了一些字母前加 34 34 来表示常见的那些不能显示的ASCII字符 xff0c 如 0 t n等 xff0c 就称为