跳转至

扫描&定位 应用

一、WiFiSCAN 概述

WiFiSCAN 是指通过无线设备(如智能手机、路由器、物联网设备等)主动扫描周围可用的 WiFi 网络,以获取其基本信息(如 SSID、信号强度、加密方式、频段等)的过程。它是无线通信领域中一项基础且重要的功能,广泛应用于网络配置、设备连接、信号优化及安全检测等场景。

二、演示功能概述

本篇文章演示的内容为:初始化 airlink、wifi 模块,随后进行 wifiscan 操作来扫描附近 wifi。

三、准备硬件环境

参考:Air8000 硬件环境清单,准备好硬件环境。

四、准备软件环境

1、烧录工具:Luatools 工具

2、内核固件文件(底层core固件文件):LuatOS-SoC_V2005_Air8000;参考项目使用的内核固件

3、luatos需要的脚本和资源文件:Core_board_demo/wlan/wifi_scan

注意:烧录 WIFI 固件及脚本时,需要先烧录 4G 固件和 4G 脚本文件,通过 4G 脚本控制 GPIO23, 下电 1ms,详情查看 8000 烧录教程:如何使用 LuaTools 烧录软件 - luatos@air8000 - 合宙模组资料中心

使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件。

五、代码示例

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "air8000_wifiscan"
VERSION = "1.0.5"

-- sys库是标配
_G.sys = require("sys")
require "sysplus"

PWR8000S = gpio.setup(23, 0, gpio.PULLUP) -- 关闭Air8000S的LDO供电

gpio.debounce(0, 1000)
gpio.setup(0, function()
    sys.taskInit(function()
        log.info("复位Air8000S")
        PWR8000S(0)
        sys.wait(20)
        PWR8000S(1)
    end)
end, gpio.PULLDOWN)

function test_scan()
    while 1 do
        log.info("执行wifi扫描")
        wlan.scan()
        sys.wait(30 * 1000)
    end
end
sys.subscribe("WLAN_SCAN_DONE", function ()
    local results = wlan.scanResult()
    log.info("scan", "results", #results)
    for k,v in pairs(results) do
        log.info("scan", v["ssid"], v["rssi"], (v["bssid"]:toHex()))
    end
end)

--  每隔6秒打印一次airlink统计数据, 调试用
sys.taskInit(function()
    while 1 do
        sys.wait(6000)
        airlink.statistics()
    end
end)

sys.taskInit(function()
    -- 稍微缓一下
    sys.wait(10)
    -- 初始化airlink
    airlink.init()
    -- 启动底层线程, 从机模式
    PWR8000S(1)
    sys.wait(200)
    airlink.start(1)
    sys.wait(100)
    wlan.init()
    sys.wait(100)

    -- wifi扫描测试
    test_scan()
end)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

六、功能演示

6.1 手机或电脑查看附近是否存在 WIFI 热点

首先拿手机或电脑等设备查看附近是否存在 WiFi 热点。

6.2 烧录代码

参考:如何使用 LuaTools 给 Air8000 烧录软件,将准备好的软件烧录进 Air8000。

6.3 查看运行日志

烧录代码后等待初始化完成并且确认附近有 WiFi 的情况下,即可扫描到附近的 WiFi。

七、总结

至此,我们已使用 Air8000核心板 演示了WIFISCAN的功能。