开发板

K210开发板

基于K210开发板WiFi 模块联网测试_#define

实验目的

本次测试主要学习 WiFi 模块的连接网络的功能。

实验元件

板载WiFi 模块

基于K210开发板WiFi 模块联网测试_串口_02

元件特性

K210 开发板自带的 WiFi 模块是 ESP8285 芯片模块,其实 ESP8285 还有更加热门的好兄弟 ESP8266,ESP8285 与 ESP8266 共享同一套 SDK,ESP8285 比 ESP8266多了一片 1MB FLASH 芯片,并且是 DOUT 模式,所以固件编译和下载时需要设置为 DOUT 模式才可以下载;而且还多了两个 IO 口(GPIO9 和 GPIO10)可以供用户使用。 除此之外,ESP8285 还有其他特性,如:体积小、远距离传输、低功耗、可外接天线、耐高温、无线透传、串口转 WiFi 等。

硬件连接

K210 开发板出厂默认已经焊接好 WiFi 模块,WiFi 模块与 K210 之间有三个跳线帽,如果插入跳线帽,则 ESP8285 的 WIFI_TXD 连接 K210 的 IO13,WIFI_RXD连接 IO14,WIFI_EN 连接 IO15,拔掉跳线帽则不通。

基于K210开发板WiFi 模块联网测试_串口_03

实验原理

WiFi 模块内部集成一个 ESP8285 芯片,可以通过 AT 指令的方式连接搜索到的 WiFi 信号。通过 K210 的串口传输数据的功能,把串口助手接收到的数据传给WiFi 模块,WiFi 模块根据 AT 指令的内容,查找附近的 WiFi 信号,匹配密码,这样就可以连接到 WiFi 路由器上。

实验过程

  1. .首先根据上面的硬件连接引脚图,K210 的硬件引脚和软件功能使用的是FPIOA 映射关系。IO4 和 IO5 是 K210 开发板的 USB 串口引脚,所以也要初始化。USB 串口使用的是串口 3,而 WiFi 模块的串口使用的是串口 1。
// 硬件IO口,与原理图对应
#define PIN_UART_USB_RX       (4)
#define PIN_UART_USB_TX       (5)

#define PIN_UART_WIFI_RX      (13)
#define PIN_UART_WIFI_TX      (14)

#define PIN_LED_0             (0)
#define PIN_LED_1             (17)

/*****************************SOFTWARE-GPIO********************************/
// 软件GPIO口,与程序对应
#define UART_USB_NUM           UART_DEVICE_3

#define UART_WIFI_NUM          UART_DEVICE_1

#define LED0_GPIONUM          (10)
#define LED1_GPIONUM          (11)

/*****************************FUNC-GPIO************************************/
// GPIO口的功能,绑定到硬件IO口
#define FUNC_UART_USB_RX       (FUNC_UART1_RX + UART_USB_NUM * 2)
#define FUNC_UART_USB_TX       (FUNC_UART1_TX + UART_USB_NUM * 2)

#define FUNC_UART_WIFI_RX      (FUNC_UART1_RX + UART_WIFI_NUM * 2)
#define FUNC_UART_WIFI_TX      (FUNC_UART1_TX + UART_WIFI_NUM * 2)

#define FUNC_LED0             (FUNC_GPIOHS0 + LED0_GPIONUM)
#define FUNC_LED1             (FUNC_GPIOHS0 + LED1_GPIONUM)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
void hardware_init(void)
{
    /* USB串口 */
    fpioa_set_function(PIN_UART_USB_RX, FUNC_UART_USB_RX);
    fpioa_set_function(PIN_UART_USB_TX, FUNC_UART_USB_TX);

    /* WIFI模块串口 */
    fpioa_set_function(PIN_UART_WIFI_RX, FUNC_UART_WIFI_RX);
    fpioa_set_function(PIN_UART_WIFI_TX, FUNC_UART_WIFI_TX);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  1. 初始化串口的配置,波特率设置为 115200,串口数据宽度为 8 位,停止位1 位,不使用奇偶校验。
// 初始化USB串口,设置波特率为115200
    uart_init(UART_USB_NUM);
    uart_configure(UART_USB_NUM, 115200, UART_BITWIDTH_8BIT, UART_STOP_1, UART_PARITY_NONE);

    /* 初始化WiFi模块的串口 */
    uart_init(UART_WIFI_NUM);
    uart_configure(UART_WIFI_NUM, 115200, UART_BITWIDTH_8BIT, UART_STOP_1, UART_PARITY_NONE);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  1. 开机的时候发送“hello yahboom!”,提示已经开机完成。
char *hello = {"hello yahboom!\n"};
    uart_send_data(UART_USB_NUM, hello, strlen(hello));
  • 1.
  • 2.
  1. 最后循环接收串口的数据,如果 WiFi 模块有数据传到 K210 芯片,K210会把数据通过串口传输到电脑上显示;如果电脑上的串口助手发送数据到 K210芯片,K210 也会把数据经过 WiFi 模块的串口发送给 WiFi 模块。
char recv = 0, send = 0;

    while (1)
    {
        /* 接收WIFI模块的信息 */
        if(uart_receive_data(UART_WIFI_NUM, &recv, 1))
        {
            /* 发送WiFi的数据到USB串口显示 */
            uart_send_data(UART_USB_NUM, &recv, 1);
        }

        /* 接收串口的信息,并发送给WiFi模块 */
        if(uart_receive_data(UART_USB_NUM, &send, 1))
        {
            uart_send_data(UART_WIFI_NUM, &send, 1);
        }
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  1. 编译调试,烧录运行 进入自己项目 build目录,运行以下命令编译。
cmake .. -DPROJ=watchdog -G "MinGW Makefiles"
make
  • 1.
  • 2.

实验现象

  • 烧录完成固件后,系统会弹出一个终端界面,如果没有弹出终端界面的可以打开串口助手显示调试内容。

基于K210开发板WiFi 模块联网测试_数据_04

  • 从串口助手,可以接收到 hello yahboom!的欢迎语。然后按一下 WiFi 模块的复位键,可以看到一大串乱码,这个不用管,只要看到ready 字符则表示 WiFi模块正常。然后在底部输入 AT 字符,然后点击发送,串口助手会显示 OK。如果没有接收到OK,请确认发送设置中的参数为 ASCII,自动解析转义符,AT 指令自动回车。

基于K210开发板WiFi 模块联网测试_#define_05

  • 发送 AT 指令设置 WiFi 模块的模式为工作站。
AT+CWMODE_DEF=1
  • 1.

基于K210开发板WiFi 模块联网测试_数据_06

  • 发送 AT 指令设置连接的 WiFi 信号。
AT+CWJAP_DEF="WiFi 名称","密码"。
  • 1.

基于K210开发板WiFi 模块联网测试_数据_07

  • 获取当前的 WiFi 模块 IP 地址
AT+CIFSR
  • 1.

基于K210开发板WiFi 模块联网测试_串口_08

  • ping 一下网络试试通不通,有数值则表示网络正常。

基于K210开发板WiFi 模块联网测试_串口_09

实验总结

  • WiFi 模块与 K210 通过串口连接的方式通讯。
  • K210 在此过程只起到中间搬运数据的功能,不会处理数据。
  • 其实 WiFi 模块如果连接其他串口芯片,也是可以通过 AT 指令操作的。
  • 以下连接的 WiFi 信号,下次 WiFi 模块重启后,开机会自动连接这个 WiFi 信号。