当前位置: 首页 > news >正文

基于亚博K210开发板——WiFi 模块联网

开发板

亚博K210开发板
在这里插入图片描述

实验目的

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

实验元件

板载WiFi 模块
在这里插入图片描述

元件特性

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,拔掉跳线帽则不通。
在这里插入图片描述

实验原理

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)
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. 初始化串口的配置,波特率设置为 115200,串口数据宽度为 8 位,停止位1 位,不使用奇偶校验。
// 初始化USB串口,设置波特率为115200uart_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. 开机的时候发送“hello yahboom!”,提示已经开机完成。
 char *hello = {"hello yahboom!\n"};uart_send_data(UART_USB_NUM, hello, strlen(hello));
  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. 编译调试,烧录运行
    进入自己项目 build目录,运行以下命令编译。
cmake .. -DPROJ=watchdog -G "MinGW Makefiles"
make

实验现象

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

实验总结

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

相关文章:

  • C语言 学习 文件操作(开关,读写,定位,大小)操作 2025年6月8日12:19:24
  • C语言 学习 模块化编程 2025年6月9日19:39:17
  • 论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
  • 触发DMA传输错误中断问题排查
  • Redis哨兵模式以及主从
  • LLM基础5_从零开始实现 GPT 模型
  • CMIP6气候模式资料概览
  • 免费在线PDF转图片工具
  • gephi绘制网络拓扑图:批量给节点着色
  • nginx安装和部署
  • 免费PDF转图片工具
  • NVIDIA CUDA 技术详解:开启 GPU 并行计算的大门
  • CocosCreator 之 JavaScript/TypeScript和Java的相互交互
  • 创建型模式-单例模式
  • Python网页自动化Selenium中文文档
  • 24.解释器模式:思考与解读
  • 从零手写Java版本的LSM Tree (四):SSTable 磁盘存储
  • 9个数据分析指令为工作赋能
  • 升级背后:CANOPEN转MODBUS TCP技术如何实现精准控制?
  • 精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
  • SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈
  • C# 表达式和运算符(求值顺序)
  • 李沐--动手学深度学习--GRU
  • RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
  • 人工智能与无人机的组合如何撕开俄空天军的 “核心“
  • [docker]镜像操作:关于docker pull、save、load一些疑惑解答
  • ubuntu 22.04搭建SOC开发环境
  • “详规一张图”——新加坡土地利用数据
  • 使用大模型预测巨细胞病毒视网膜炎的技术方案
  • 【AI学习】李广密与阶跃星辰首席科学家张祥雨对谈:多模态发展的历史和未来