本帖最后由 kevia 于 2024-11-17 22:40 编辑
新定义NBK-RD8x3x核心开发板+5、ESP12F+AT开发
1、NBK-EBS003 IOT扩展板简介
背部一个带AT固件的EPS-12Fwifi模块。
2、电路图
NBK-EBS003 IOT模块可以和NBK-D8x3x完美配合,。
ESP12F RXD0TXDTX0 RD8T36P48
ESP12F TXD0RXDTX0 RD8T36P48
3、ESP12F AT 开发基础教程
以下是一个AT开发的基础教程,帮助你开始使用AT指令进行开发:
连接设备:将EPS-12F模块通过串口连接到开发工具。
设置波特率:使用开发工具的串口设置功能,将波特率设置为与EPS-12F模块一致的数值(默认为115200)。
发送AT指令:通过串口向EPS-12F模块发送AT指令,可以使用开发工具的串口发送功能,或者在开发工具的代码中使用串口发送函数。
接收响应:EPS-12F模块会返回对应的响应结果,通过串口接收功能,可以接收到EPS-12F模块返回的响应信息。
解析响应:根据AT指令的不同,EPS-12F模块返回的响应格式也不同。需要根据AT指令的文档,解析EPS-12F模块返回的响应信息,获取所需的数据或状态。
错误处理:在开发过程中,可能会遇到一些错误情况,如AT指令执行失败、模块无响应等。需要根据EPS-12F模块的错误码和错误信息,进行相应的错误处理。
实现功能:根据需求,使用不同的AT指令,实现相应的功能,如网络连接、数据传输、传感器控制等。
调试和优化:在开发过程中,可以使用调试工具或者打印调试信息的方式,帮助定位问题和优化代码。
更多信息参考:https://docs.espressif.com/projects/esp-at/zh_CN/release-v2.2.0.0_esp8266/AT_Command_Set/Basic_AT_Commands.html
4、程序
程序参考:https://bbs.21ic.com/icview-3287188-1-1.html
void ESP12_Configure(void)
{
uint8_t Result = 0;
OLED_Clear();
OLED_ShowString(0, 0, "Step:01", 16);
OLED_ShowString(0, 2, "ESP12 Configure", 16);
TimeSliceDelayMS(500);
do
{
TimeSliceDelayMS(10);
Result = ESP12_AT_SendCommand("AT", "OK", 100);
} while (0 == Result);
OLED_Clear();
OLED_ShowString(0, 0, "Step:02", 16);
OLED_ShowString(0, 2, "AT->OK", 16);
TimeSliceDelayMS(500);
/* 开回显 */
ESP12_AT_SendCommand("ATE1", "OK", 100);
OLED_Clear();
OLED_ShowString(0, 0, "Step:03", 16);
OLED_ShowString(0, 2, "ATE1", 16);
TimeSliceDelayMS(500);
/* 查询版本信息 */
ESP12_AT_SendCommand("AT+GMR", "OK", 100);
OLED_Clear();
OLED_ShowString(0, 0, "Step:04", 16);
OLED_ShowString(0, 2, "AT+GMR", 16);
TimeSliceDelayMS(500);
/* 设置当前Wi-Fi模式: Station模式 */
ESP12_AT_SendCommand("AT+CWMODE=1", "OK", 100);
OLED_Clear();
OLED_ShowString(0, 0, "Step:05", 16);
OLED_ShowString(0, 2, "Station Mode", 16);
TimeSliceDelayMS(500);
/* 连接WiFi */
if (ESP12_AT_SendCommand("AT+CWJAP=\"xxss\",\"999999999\"", "OK", 8000) == 0)
{
if (ESP12_AT_SendCommand(NULL, "OK", 8000) == 0)
{
OLED_Clear();
OLED_ShowString(0, 0, "WiFi Connect Error!", 16);
return;
}
}
OLED_Clear();
OLED_ShowString(0, 0, "Step:06", 16);
OLED_ShowString(0, 2, "WiFi Connect OK", 16);
TimeSliceDelayMS(500);
ESP12_InitFlag = 1;
}
这段程序是一个函数`ESP12_Configure`,用于配置ESP12F模块。下面是对程序的详细解释:
1. `uint8_t Result = 0;`:定义一个名为`Result`的变量,用于存储函数执行结果。
2. `OLED_Clear();`和`OLED_ShowString(0, 0, "Step:01", 16);`:这两行代码用于清除OLED显示屏上的内容,并在第一行显示"Step:01"。这是一个简单的显示操作,用于在OLED上显示当前配置步骤。
3. `TimeSliceDelayMS(500);`:这行代码用于延时500毫秒。`TimeSliceDelayMS`函数是一个时间片延时函数,用于在定时器中断中实现延时。
4. `do { ... } while (0 == Result);`:这是一个do-while循环,用于重复执行下面的代码,直到`Result`的值不等于0。在循环内部,首先调用`TimeSliceDelayMS(10);`进行10毫秒的延时,然后调用`ESP12_AT_SendCommand`函数发送AT指令"AT",并将返回结果存储在`Result`变量中。这个循环的目的是等待ESP12F模块的响应,直到接收到"OK"为止。
5. `OLED_Clear();`和`OLED_ShowString(0, 0, "Step:02", 16);`:这两行代码用于清除OLED显示屏上的内容,并在第一行显示"Step:02"。这是一个简单的显示操作,用于在OLED上显示当前配置步骤。
6. `TimeSliceDelayMS(500);`:这行代码用于延时500毫秒。
7. `ESP12_AT_SendCommand("ATE1", "OK", 100);`:这行代码调用`ESP12_AT_SendCommand`函数发送AT指令"ATE1",并等待接收到"OK"作为响应。这个指令的作用是开启回显功能。
8. `OLED_Clear();`和`OLED_ShowString(0, 0, "Step:03", 16);`:这两行代码用于清除OLED显示屏上的内容,并在第一行显示"Step:03"。这是一个简单的显示操作,用于在OLED上显示当前配置步骤。
9. `TimeSliceDelayMS(500);`:这行代码用于延时500毫秒。 |