扫描&定位 应用
一、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的功能。