跳转至

Air6205 Wifi模组(AirLink)使用说明

一、概述

Air6205 作为780 系列(4G Cat.1)/1601 系列(MCU)模组的专用无线从机,仅通过 Airlink 协议与主模组配合工作,适用于需为 4G/Cat.1 设备扩展 WiFi/BLE 无线通信能力的物联网场景。这里以1601开发板或1602核心板+6205配件板为硬件环境,来介绍Air6205做为Wifi模组(AirLink)使用。

二、硬件环境

1601开发板

1、Air1601开发板一块:Air1601开发板资料

2、TYPE-C USB数据线一根,Air1601开发板和数据线的硬件接线方式为:

  • Air1601开发板通过USB口供电;
  • TYPE-C USB数据线直接插到开发板的USB1口(串口下载)座子,另外一端连接电脑USB口;

拨码开关位置请参考如下文档串口烧录章节1601开发板使用说明

3、使用airlink网络接线方式请参考如下文档WIFI接口章节1601开发板使用说明

4、购买链接:

Air6205/Air6205A极简WiFi模组 仅可搭配合宙4G模组/MCU模组使用-淘宝网

Air1601开发板 多功能5寸RGB屏 支持AirUI 摄像头 赠全套资料-淘宝网

Air1602核心板+Air6205配件板链接图

Air1602核心板Air6205配件板接线表

Air1602核心板 核心板 Air6205配件板
RX3 U1_TX
TX3 U1_RX
PWM3 IRQ
VBAT VBAT
GND GND

1、Air1602核心板+Air6205配件板各一块

2、TYPE-C USB数据线一根,Air1602核心板和数据线的硬件接线方式为:

  • Air1602核心板通过USB口供电;
  • TYPE-C USB数据线直接插到开发板的USB口,另外一端连接电脑USB口;

三、软件环境

1、烧录:烧录Air6205固件如何使用 Luatools 烧录软件 Air1601软件

2、内核固件:Air1601使用大于等于1016版本号的内核固件

3、内核固件:Air6205使用大于等于1022版本号的内核固件

4、内核固件:Air1602使用大于等于1018版本号的内核固件

4、脚本和资源文件:Air1601_Air6205_uart

四、程序结构

1、Air1601: Air1601/1602中运行的程序,可以使用wifi网络

2、main.lua:主程序入口;

3、network_airlink.lua:

1. 初始化Air6205外挂WiFi网络连接。
2. Air1601/1602与对端设备进行数据交互。
3. 通过HTTP GET请求测试网络连接情况。

注意:Air6205只需烧录对应固件即可,无需烧录代码

五、代码详解

5.1 main.lua

主程序文件 main.lua 是整个项目的入口点。它负责初始化系统环境。

5.2 network_airlink.lua

初始化Air6205外挂WiFi网络连接,Air1601/1602与对端设备进行数据交互,Air1601/1602与对端设备进行数据交互。

注意事项:

exnetif.set_priority_order中的,WiFi名称和密码,修改为自己测试时wifi热点的名称和密码;

仅支持2.4G的wifi,不支持5G的wifi

local exnetif = require "exnetif"

-- 初始化网络,使得Air1601可以通过airlink外挂Air6205实现WiFi联网功能。
local function init_airlink_net()
    -- 配置airlink WiFi单网卡
    -- 实际测试时,根据自己要连接的WiFi热点信息修改ssid和password参数
    -- Air6205仅支持2.4G WiFi,不支持5G WiFi
    exnetif.set_priority_order({
        {
            airlink_wifi = {
                auto_socket_switch = false,       -- 切换网卡时是否断开之前网卡的所有socket连接并用新的网卡重新建立连接
                airlink_type = airlink.MODE_UART, -- airlink工作模式:UART模式
                airlink_uart_id = 3,              -- airlink使用的UART接口ID
                airlink_uart_baud = 2000000,      -- airlink使用的UART波特率,默认2000000
                ssid = "116",                     -- WiFi名称
                password = "wangshuai123"         -- WiFi密码
            }
        }
    })
    -- 注意:airlink_wifi使用socket.LWIP_STA作为网卡标识(由exnetif内部硬编码),
    -- 不支持airlink_adapter自定义网卡标识
end

-- Air1601发送数据信息给Air6205。
local function airlink_sdata_Air6205()
    -- 设置网络时间同步。
    -- socket.sntp()
    while 1 do
        -- rtos.bsp():设备硬件bsp型号;os.date():本地时间。
        local data = rtos.bsp() .. " " .. os.date()
        log.info("发送数据给对端设备", data, "当前airlink状态", airlink.ready())
        airlink.sdata(data)
        sys.wait(1000)
        log.info("ticks", mcu.ticks(), hmeta.chip(), hmeta.model(), hmeta.hwver())
        airlink.statistics()
    end
end


-- 一个简单的HTTP GET请求测试程序,用于判断Air1601的网络连接情况。
local function http_get_test()
    while true do
        sys.wait(10000)
        -- 检查WiFi网卡是否就绪
        log.info("网卡状态", netdrv.ready(socket.LWIP_STA))
        -- 发起一个HTTP GET请求。
        log.info("发起HTTP GET请求", "https://httpbin.air32.cn/bytes/2048")
        local code, headers, body = http.request("GET", "https://httpbin.air32.cn/bytes/2048", nil, nil, {
            timeout = 9000,
            adapter = socket.LWIP_STA
        }).wait()

        -- 打印HTTP请求的结果,包括响应码code和响应体长度#body。
        if code == 200 then
            log.info("HTTP请求成功", "响应码", code, "响应体长度", body and #body)
            sys.publish("打印网卡信息", "succeeded")
        else
            log.error("HTTP请求失败", "错误码", code)
            sys.publish("打印网卡信息", "failed")
        end
    end
end

-- airlink ping回调
-- sys.subscribe("AIRLINK_PING_RESULT", function(id, ok, v1, v2)
--     if ok then
--         log.info("ping", "成功", "rtt=" .. v1 .. "ms", "echo=" .. v2)
--     else
--         log.info("ping", "失败", tostring(v1)) -- v1 = "timeout" 或错误码
--     end
-- end)

-- airlink ping函数
-- local function airlink_ping()
--     sys.waitUntil("IP_READY")
--     while true do
--         local ping_id = airlink.ping("hello_airlink", 2000)
--         log.info("Ping已发送", "id=" .. ping_id)
--         sys.wait(20000) -- 每20s ping一次
--     end
-- end

-- 订阅airlink的SDATA事件,打印收到的信息。
local function airlink_sdata(data)
    -- 打印收到的信息。
    log.info("收到AIRLINK_SDATA!!", data)
end

-- 开启airlink
sys.taskInit(init_airlink_net)
-- Air1601发送数据信息给Air6205。
sys.taskInit(airlink_sdata_Air6205)
-- Air1601 http get测试
sys.taskInit(http_get_test)
-- Air1601 airlink ping测试
-- sys.taskInit(airlink_ping)
-- 订阅airlink的SDATA事件,打印收到的信息。
sys.subscribe("AIRLINK_SDATA", airlink_sdata)

六、运行结果展示

1、搭建好硬件环境

2、烧录内核固件和本项目的Lua脚本:

  • Air6205烧录对应的内核固件

  • Air1601/1602烧录Air1601文件夹下的 main.lua:主程序入口,network_airlink.lua:airlink多网融合模块

3、启动设备,观察日志有如下日志输出,说明联网成功: 以下为Air1601日志输出(Air1602同Air1601)

七、总结

通过本章内容的学习,你可以学习到Air1601/1602+Air6205的Air1601/1602可以使用WIFI网络联网和数据交互功的应用。