打印
[IOT技术]

新定义NBK-RD8x3x核心开发板+5、ESP12F+AT开发

[复制链接]
2587|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xu@xupt|  楼主 | 2023-10-10 17:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
新定义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毫秒。
  • 10. `ESP12_AT_SendCommand("AT+GMR", "OK", 100);`:这行代码调用`ESP12_AT_SendCommand`函数发送AT指令"AT+GMR",并等待接收到"OK"作为响应。这个指令的作用是查询ESP12F模块的版本信息。
  • 11. `OLED_Clear();`和`OLED_ShowString(0, 0, "Step:04", 16);`:这两行代码用于清除OLED显示屏上的内容,并在第一行显示"Step:04"。这是一个简单的显示操作,用于在OLED上显示当前配置步骤。
  • 12. `TimeSliceDelayMS(500);`:这行代码用于延时500毫秒。
  • 13. `ESP12_AT_SendCommand("AT+CWMODE=1", "OK", 100);`:这行代码调用`ESP12_AT_SendCommand`函数发送AT指令"AT+CWMODE=1",并等待接收到"OK"作为响应。这个指令的作用是设置ESP12F模块的Wi-Fi模式为Station模式。
  • 14. `OLED_Clear();`和`OLED_ShowString(0, 0, "Step:05", 16);`:这两行代码用于清除OLED显示屏上的内容,并在第一行显示"Step:05"。这是一个简单的显示操作,用于在OLED上显示当前配置步骤。
  • 15. `TimeSliceDelayMS(500);`:这行代码用于延时500毫秒。
  • 16. `if (ESP12_AT_SendCommand("AT+CWJAP=\"xxss\",\"999999999\"", "OK", 8000) == 0)`:这行代码调用`ESP12_AT_SendCommand`函数发送AT指令"AT+CWJAP=\"xxss\",\"999999999\"",并等待接收到"OK"作为响应。这个指令的作用是连接到Wi-Fi网络。如果连接成功,则继续执行下面的代码;否则,显示"WiFi Connect Error!"并返回。
  • 17. `if (ESP12_AT_SendCommand(NULL, "OK", 8000) == 0)`:这行代码调用`ESP12_AT_SendCommand`函数发送一个空指令,只等待接收到"OK"作为响应。这个指令的作用是等待一段时间,以确保Wi-Fi连接成功。如果等待超时,则显示"WiFi Connect Error!"并返回。
  • 18. `OLED_Clear();`和`OLED_ShowString(0, 0, "Step:06", 16);`:这两行代码用于清除OLED显示屏上的内容,并在第一行显示"Step:06"。这是一个简单的显示操作,用于在OLED上显示当前配置步骤。
  • 19. `TimeSliceDelayMS(500);`:这行代码用于延时500毫秒。
  • 20. `ESP12_InitFlag = 1;`:将`ESP12_InitFlag`变量的值设置为1,表示ESP12F模块已经配置完成。

总体来说,这段程序通过发送一系列的AT指令来配置ESP12F模块,包括开启回显、查询版本信息、设置Wi-Fi模式和连接到Wi-Fi网络。在每个配置步骤完成后,会在OLED显示屏上显示当前的配置步骤。
5、实验结果

使用特权

评论回复
沙发
forgot| | 2023-10-12 09:45 | 只看该作者
ESP12与ESP01的AT指令与配置流程是不是都是一样的?

使用特权

评论回复
板凳
xu@xupt|  楼主 | 2023-10-12 15:09 | 只看该作者
forgot 发表于 2023-10-12 09:45
ESP12与ESP01的AT指令与配置流程是不是都是一样的?

ESP12和ESP01是两种不同的ESP8266模块,虽然它们都支持AT指令集,但在一些细节上有所不同。
AT指令集:ESP12和ESP01都支持基本的AT指令集,如AT、AT+RST、AT+CWMODE等。但是,由于ESP12具有更多的GPIO引脚和其他功能,因此它支持更多的AT指令,如AT+CIPMUX、AT+CIPSERVER等。
配置流程:ESP12和ESP01的配置流程基本相同,但由于ESP12具有更多的功能,因此配置过程可能会有所不同。例如,配置ESP12的WiFi模式时,可以选择STA模式、AP模式或STA+AP模式,而ESP01只支持STA模式。此外,由于ESP12具有更多的GPIO引脚,因此在配置过程中可能会有更多的选项可供设置。

总的来说,ESP12和ESP01的AT指令和配置流程基本相同,但由于硬件功能的差异,可能会有一些细节上的不同。在使用这两种模块时,需要根据实际情况进行相应的配置和指令操作。

使用特权

评论回复
地板
forgot| | 2023-10-12 15:11 | 只看该作者
xu@xupt 发表于 2023-10-12 15:09
ESP12和ESP01是两种不同的ESP8266模块,虽然它们都支持AT指令集,但在一些细节上有所不同。
AT指令集:ES ...

谢谢哈,我用过01,写过一个demo,到时候我也给移植过来驱动一下这个12看看行不行

使用特权

评论回复
5
caigang13| | 2023-10-12 20:29 | 只看该作者
乐鑫把WIFI芯片干到了极致啊。

使用特权

评论回复
评论
xu@xupt 2023-10-12 21:55 回复TA
必须滴。跑题啦,是新定义的试用 
6
西风起| | 2023-10-25 16:18 | 只看该作者
很好的资料,学习啦~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

702

帖子

3

粉丝