WiFi AP 文件管理系统
作者:拓毅恒
一、WiFi AP 文件管理系统概述
本文档介绍基于 Air8000 工业引擎实现的 WiFi AP 文件管理系统功能,通过该功能可以将设备变身为一个轻量级的文件服务器,用户只需连接到设备创建的 WiFi 热点,即可通过浏览器方便地浏览、管理和下载设备内部存储及 SD 卡中的文件。
1.1 工作原理
Air8000 工业引擎支持两种无线网络工作模式:
-
AP 模式:
-
AP 是 Access Point 的缩写,即无线接入点,作为无线网络的中心节点
- 设备工作在 AP 模式时,可以创建一个 WiFi 热点,供其他设备连接
-
其他设备连接到该热点后,可以直接与 Air8000 进行通信
-
STA 模式:
-
STA 是 Station 的缩写,它是无线网络中的一个终端站点设备
- 处于 STA 模式下的设备连接到 AP 节点进行网络访问
本项目利用 Air8000 的 AP 模式,创建 WiFi 热点并启动 HTTP 服务器,实现文件的远程访问和下载功能。
1.2 系统架构
WiFi AP 文件管理系统由以下核心组件构成:
- WiFi AP 模块:创建名为
LuatOS_FileHub
的 WiFi 热点 - SD 卡管理模块:挂载和管理 SD 卡存储
- HTTP 服务器:提供文件列表浏览和下载功能
- 任务控制模块:管理系统的启动和停止
二、准备硬件环境
2.1 Air8000 开发板
使用 Air8000 开发套件,如下图所示:
淘宝购买链接:Air8000 开发套件淘宝购买链接 ;
此开发套件的详细使用说明参考:Air8000 产品手册 中的 Air8000 硬件手册,以及 Air8000 的 LuatOS 快速入门。
2.2 PC 电脑
WIN10 以及以上版本的 WINDOWS 系统;
2.3 数据通信线
USB 数据线(其一端为 Type-C 接口,用于连接 Air8000)。
2.4 SD/TF 卡
在各位选择使用的 TF 卡时,我们建议不要使用白牌卡,尽量选择大品牌高速卡。
三、准备软件环境
3.1 软件工具
- 烧录工具:Luatools 工具
- Air8000 烧录需要的固件:https://docs.openluat.com/air8000/luatos/firmware/sdkdemo
- 本示例使用的脚本文件:Air8000/project/wifi_ap_read_file
- LuatOS 运行所需要的 lib 文件:使用 Luatools 烧录时,勾选添加默认 lib 选项,使用默认 lib 脚本文件
准备好软件环境之后,查看如何烧录项目文件到 Air8000 开发板中,将项目文件烧录到 Air8000 开发板中。
3.2 API 介绍
这里仅介绍本项目所使用的主要 API:
wlan.init()
初始化 WiFi 模块
wlan.createAP(ssid, passwd, gateway, netmask, channel, opts)
启动 AP 模式,创建 WiFi 热点
exremotefile.open()
打开远程文件管理系统
exremotefile.close()
关闭远程文件管理系统
四、功能实现
4.1 功能概述
本项目实现的核心功能包括:
- 任务控制:通过 boot 按键控制文件管理系统的启停
- 热点创建:自动创建名为
LuatOS_FileHub
的 WiFi 热点 - 文件服务:启动 HTTP 服务器,提供文件浏览和下载功能
- 用户认证:提供简单的用户名密码认证机制
- SD 卡支持:自动挂载并管理 SD 卡中的文件
4.2 代码结构
项目代码结构清晰,主要由以下几个文件组成:
- main.lua:主入口文件,初始化系统环境
- task_control.lua:控制系统服务的启动和停止
- check_wifi.lua:检查和升级 WiFi 固件(可选)
- 123.mp3、456.txt:示例文件,用于演示文件下载功能
4.3 核心代码示例
main.lua(主入口文件)
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "WIFI_AP_READ_FILE"
VERSION = "001.000.000"
-- 在日志中打印项目名和项目版本号
log.info("main", PROJECT, VERSION)
-- 如果内核固件支持wdt看门狗功能,此处对看门狗进行初始化和定时喂狗处理
if wdt then
--配置喂狗超时时间为9秒钟
wdt.init(9000)
--启动一个循环定时器,每隔3秒钟喂一次狗
sys.timerLoopStart(wdt.feed, 3000)
end
-- 使用文件管理系统功能需要WIFI版本≥14
-- 如果模组中WiFi版本<14,则需要打开此功能启动升级
-- require "check_wifi"
-- 引入任务控制模块
require"task_control"
-- 结尾总是这一句
sys.run()
task_control.lua(任务控制模块)
-- 配置说明:
-- 1. 设置为true: 开机自动创建ap热点,初始化sd卡,创建http 文件服务器
-- 2. 设置为false: 默认不创建ap热点,不初始化sd卡,不创建http 文件服务器;通过短按boot按键控制开关
-- 导入exremotefile库
local exremotefile = require "exremotefile"
local AUTO_START = false -- 默认使用boot按键控制方式
-- 系统状态变量
local is_running = false -- 标记系统是否正在运行
-- 启动系统服务
local function start_services()
if not is_running then
log.info("main", "启动系统服务")
-- 自定义参数启动(使用8000开发板)
-- 启动后连接默认AP热点,访问日志中的地址"http://192.168.4.1:80/explorer.html"来访问文件管理服务器。
exremotefile.open(nil, {is_8000_development_board = true})
is_running = true
log.info("main", "系统服务启动完成")
end
end
-- 停止系统服务
local function stop_services()
if is_running then
log.info("main", "停止系统服务")
-- 关闭远程文件管理系统
exremotefile.close()
is_running = false
log.info("main", "系统服务已停止")
end
end
-- 初始化按键,这里选取boot键作为功能键
local function press_key()
log.info("boot press")
sys.publish("PRESS", true)
end
gpio.setup(0, press_key, gpio.PULLDOWN, gpio.RISING)
gpio.debounce(0, 100, 1)
local function config_services()
-- 根据配置决定是否自动启动服务
if AUTO_START then
start_services()
else
log.info("main", "系统已就绪,等待boot按键触发")
end
while 1 do
sys.waitUntil("PRESS")
-- 切换系统状态
if is_running then
stop_services()
else
start_services()
end
end
end
sys.taskInit(config_services)
五、功能演示
5.1 启动系统
- 烧录固件后上电,设备初始化按键功能
- 观察串口日志,等待"系统已就绪,等待 boot 按键触发"的提示
- 按下 boot 按键,启动文件管理系统
5.2 连接 WiFi 热点
使用手机或电脑搜索并连接名为 LuatOS_FileHub
的 WiFi 热点,密码为 12345678
5.3 访问文件管理系统
连接热点后,打开浏览器,输入 http://192.168.4.1/explorer.html
访问文件管理系统
5.4 用户认证
使用默认用户名 admin
和密码 123456
登录文件管理系统
5.5 浏览和下载文件
登录成功后,可以查看设备内部存储和 SD 卡中的文件列表,点击文件可直接下载
5.6 示例文件访问
项目中包含两个示例文件:
- 456.txt:文本文件
- 123.mp3:音频文件
可以通过文件管理系统直接下载这些文件进行测试
六、总结
本文档详细介绍了基于 Air8000 工业引擎的 WiFi AP 文件管理系统实现方法。通过简单的配置和操作,用户可以快速将设备变为一个轻量级的文件服务器,实现文件的远程浏览和下载功能。
系统具有以下特点:
- 操作简单:通过 boot 按键即可控制系统的启停
- 使用方便:用户只需连接 WiFi 热点,通过浏览器即可访问
- 功能实用:支持文件浏览和下载,支持 SD 卡扩展存储
- 安全可靠:提供用户认证机制,保护文件安全
该系统适用于需要远程访问设备文件的场景,如设备配置、日志查看、数据导出等应用。
七、常见问题
7.1 无法连接 WiFi 热点
确保设备已成功启动系统服务(观察串口日志),检查热点名称和密码是否正确。
7.2 无法访问文件管理系统
确认设备已连接到正确的 WiFi 热点,检查浏览器输入的 URL 是否正确(http://192.168.4.1/explorer.html
)。
7.3 登录失败
默认用户名:admin,默认密码:123456,请确保输入正确。
7.4 无法识别 SD 卡
确保 SD 卡格式正确(建议使用 FAT32 格式),检查 SD 卡是否正确插入。
7.5 WiFi 版本兼容性问题
文件管理系统功能需要 WiFi 版本 ≥14,如果遇到兼容性问题,可以打开 check_wifi.lua
模块进行 WiFi 固件升级。