LuatOS是运行在嵌入式硬件的实时操作系统,只需要少量内存的flash空间就能运行,用户编写lua代码就可完成各种功能
Lua base RTOS, build for many embedded systems
- 基于Lua 5.3.5
- 低内存需求, 最低32kb, 96kb flash空间
- 硬件抽象层兼容M3/arm/risc-v等
- 可测试,可模拟(qemu)
- 在线升级
- 可裁剪,可扩展
QQ群: 1061642968
总体架构
代码示例节选
详细代码请查阅 script/app/playit/main.lua
local sys = require("sys")
local httpv2 = require("httpv2")
sys.subscribe("WLAN_READY", function ()
print("!!! wlan ready event !!!")
-- 马上进行时间同步
socket.ntpSync()
end)
disp.init("ssd1306")
display_str("Booting ...")
-- 配网回调
sys.subscribe("WLAN_PW_RE", function(ssid, password)
if ssid then
log.info(TAG, "airkiss GOT", ssid, password)
local conf = {ssid=ssid,password=password}
json.encodeFile(conf, "/wlan.json")
else
log.info(TAG, "airkiss fail")
end
end)
-- 业务流程, 联网后定时发送温度数据到服务器
sys.taskInit(function()
while 1 do
if wlan.ready() then
sys.wait(1000)
local temp = (sensor.ds18b20(28) or "")
local code,headers,body = httpv2.request("GET", "http://site0.cn/api/w60x/report/ds18b20?mac=" .. wlan.get_mac() .. "&temp=" .. tostring(temp))
display_str("Temp: " .. temp .. " rssi:" .. tostring(wlan.rssi()))
log.info("network", "http complete, sleep 5s", code, body)
sys.wait(5000)
else
log.warn("main", "wlan is not ready yet")
sys.waitUntil("WLAN_READY", 30000)
end
end
end)
-- 主循环, 必须加
sys.run()
资源
- 参阅 Luat 平台层
- 文档索引
- 搭建开发环境
- 如何开发
- 预编译固件
- Lua 5.3中文手册
- 合宙官网
- 合宙商城
- 联盛德W600/合宙Air640W专属说明
- 合宙Air302专属说明
- Lua API文档
使用到的开源项目
- rt-thread 国产rtos, 非常好用
- rtt-ds18b20 在RT-Thread环境下读取ds18b20
- LuaTask 合宙LuaTask
- iRTU 基于Luat的DTU, 稀饭大神
- airkissOpen 参考其实现思路
- minmea 解析nmea
- u8g2_wqy u8g2的中文字体
- printf A printf / sprintf Implementation for Embedded Systems
- YMODEM for Python YMODEM 用于下载脚本