用 Lua 控制你的树莓派

2023-06-09 08:18:15 来源:Linux中国

Lua 是一种有时会被误解的语言。它与 Python 等其他语言不同,但它是一种通用的扩展语言,广泛用于游戏引擎、框架等。总的来说,我发现 Lua 对开发人员来说是一个有价值的工具,可以让他们以一些强大的方式增强和扩展他们的项目。

你可以按照 Seth Kenlon 的文章《Lua 值得学习吗?》的介绍下载并运行常用的 Lua,该文章中还包括了简单的 Lua 代码示例。但是,要充分利用 Lua,最好将它与采用该语言的框架一起使用。在本教程中,我演示了如何使用名为 Mako Server 的框架,该框架旨在使 Lua 程序员能够轻松地编写 IoT 和 Web 应用代码。我还向你展示了如何使用 API 扩展此框架以使用树莓派的 GPIO 引脚。


【资料图】

要求

在学习本教程之前,你需要一个可以登录的正在运行的树莓派。虽然我将在本教程中编译 C 代码,但你不需要任何 C 代码经验。但是,你需要一些使用POSIX终端的经验。

安装

首先,在树莓派上打开一个终端窗口并安装以下工具,以使用 Git 下载代码和编译 C 代码:

$ sudo apt install git unzip gcc make

接下来,通过运行以下命令编译开源 Mako Server 代码和 lua-periphery 库(树莓派的 GPIO 库):

$ wget -O Mako-Server-Build.sh \  https://raw.githubusercontent.com/RealTimeLogic/BAS/main/RaspberryPiBuild.sh

查看脚本以了解它的作用,并在你觉得没问题后运行它:

$ sh ./Mako-Server-Build.sh

编译过程可能需要一些时间,尤其是在较旧的树莓派上。编译完成后,脚本会要求你将 Mako Server 和 lua-periphery 模块安装到/usr/local/bin/。我建议安装它以简化软件的使用。别担心,如果你不再需要它,你可以卸载它:

$ cd /usr/local/bin/$ sudo rm mako mako.zip periphery.so

要测试安装,请在终端中输入mako。这将启动 Mako 服务器,并在你的终端中看到一些输出。你可以按CTRL+C停止服务器。

IoT 和 Lua

现在 Mako 服务器已在你的树莓派上设置好,你可以开始对 IoT 和 Web 应用进行编程,并使用 Lua 操作树莓派的 GPIO 引脚。Mako Server 框架为 Lua 开发人员提供了一个强大而简单的 API 来创建物联网应用,而 lua-periphery 模块让 Lua 开发人员可以与树莓派的 GPIO 引脚和其他外围设备进行交互。

首先创建一个应用目录和一个.preload脚本,其中插入用于测试 GPIO 的 Lua 代码。.preload脚本是一个 Mako 服务器扩展,在应用启动时作为 Lua 脚本加载和运行。

$ mkdir gpiotst$ nano gpiotst/.preload

将以下内容复制到Nano 编辑器中并保存文件:

-- Load periphery.so and access the LED interfacelocal LED = require("periphery").LEDlocal function doled()  local led = LED("led0") -- Open LED led0  trace"Turn LED on"  led:write(true)   -- Turn on LED (set max brightness)  ba.sleep(3000)    -- 3 seconds  trace"Turn LED off"  led:write(false)  -- Turn off LED (set zero brightness)  led:close()endba.thread.run(doled) -- Defer execution                     -- to after Mako has started

上面的 Lua 代码使用你编译并包含在 Mako 服务器中的 Lua-periphery 库控制树莓派 LED。该脚本定义了一个名为doled的函数来控制 LED。该脚本首先使用 Luarequire函数加载periphery库(共享库periphery.so)。返回的数据是一个包含所有 GPIO API 函数的Lua 表。但是,你只需要 LED API,你可以通过在调用require后附加.LED来直接访问它。接下来,代码定义了一个名为doled的函数,它执行以下操作:

通过调用periphery库中的LED函数,并将字符串led0传给它,打开树莓派主 LED,识别为led0。将消息Turn LED on打印到跟踪(控制台)。通过调用 LED 对象上的write方法并将布尔值true传递给它来激活 LED,该值设置 LED 的最大亮度。通过调用ba.sleep(3000)等待 3 秒。将消息Turn LED off打印到跟踪。通过调用 LED 对象上的write方法并将布尔值false传递给它来停用 LED,这会将 LED 的亮度设置为零。通过调用 LED 对象上的close函数关闭LED

.preload脚本的末尾,doled函数作为参数传递给ba.thread.run函数。这允许将doled函数的执行推迟到 Mako 服务器启动之后。

要启动gpiotst应用,请按如下方式运行 Mako 服务器:

$ mako -l::gpiotst

控制台中打印以下文本:

Opening LED:opening "brightness": Permission denied.

访问 GPIO 需要 root 访问权限,因此按CTRL+C停止服务器并重新启动 Mako 服务器,如下所示:

$ sudo mako -l::gpiotst

现在树莓派 LED 亮起 3 秒。成功!

Lua 解锁 IoT

在本入门教程中,你学习了如何编译 Mako 服务器,包括 GPIO Lua 模块,以及如何编写用于打开和关闭树莓派 LED 的基本 Lua 脚本。在以后的文章中,我将在本文的基础上进一步介绍 IoT 功能。

同时,你可以通过阅读它的文档来更深入地研究 Lua-periphery GPIO 库,以了解有关功能以及如何将其与不同外设一起使用的更多信息。要充分利用本教程,请考虑关注交互式 Mako Server Lua 教程以更好地了解 Lua、Web 和 IoT。编码愉快!

关键词:

相关文章

热文推荐

用 Lua 控制你的树莓派
用 Lua 控制你的树莓派

Lua是一种有时会被误解的语言。它与Python等其他语言......更多>

当前通讯!中天科技:协同行业构建可持续发展数字世界
当前通讯!中天科技:协同行业构建可持续发展数字世界

今年是5G发牌四周年,中国已经建成全球规模最大、技术......更多>

女人常吃香菜有什么好处和坏处_世界热文
女人常吃香菜有什么好处和坏处_世界热文

关于女人常吃香菜有什么好处和坏处的内容,包含女人吃......更多>

南通12.2亿成交3宗宅地 总建面36.8万平方米
南通12.2亿成交3宗宅地 总建面36.8万平方米

观点网讯:6月8日,南通3宗住宅用地完成出让,均底价......更多>

排行推荐

商务部将组织开展汽车促消费活动;5月新能源车批发销量同比增59% 世界热消息
商务部将组织开展汽车促消费活动;5月新能源车批发销量同比增59% 世界热消息
商务部将组织开展汽车促消费活动。乘联会:5月新能源... 更多>
银河证券:硬件和内容良性循环 VR生态加速构建|全球观天下
银河证券:硬件和内容良性循环 VR生态加速构建|全球观天下
银河证券研报认为,在VR领域,软硬件相互促进,协同发... 更多>
光大证券:硅料价格下降盈利有望分化 关注盈利拐点的细分环节龙头|时快讯
光大证券:硅料价格下降盈利有望分化 关注盈利拐点的细分环节龙头|时快讯
光大证券研报表示,产业链价格持续下跌,多晶硅致密料... 更多>
中信证券:当前偏低估值背景下银行板块步入可积极配置区间 天天热点
中信证券:当前偏低估值背景下银行板块步入可积极配置区间 天天热点
中信证券研报认为,降低银行存款成本仍属今年重点方向... 更多>
世界热讯:家用供暖设备哪种省钱(家庭供暖品牌)
来为大家解答以上问题,家用供暖设备哪种省钱,家庭供... 更多>
pan.baidu com/s/ 百度网盘电脑版(music.baidu.com)|环球观天下
来为大家解答以上问题,pan baiducom s 百度网盘电... 更多>
天天关注:漫游数据是什么意思要不要打开(除雾要不要打开AC?)
相信大家对漫游数据是什么意思要不要打开,除雾要不要... 更多>
诸葛亮的八个经典故事绘本(诸葛亮的八个经典故事)-每日短讯
来为大家解答以上的问题。诸葛亮的八个经典故事绘本,... 更多>
期货报告今日需关注的期货数据与事件提醒(2023年6月9日)周五1.中国至6月8日45个港口铁矿石库存;2.中国公布5月CPI年率;3.中国至6月9日外购仔猪养殖利润;4.中国至6月9日自繁自养生猪养殖利润;5.中国至6月9日菜粕周度库存,至6月9日豆粕周度库存;6.中国至6月9日全国主要油厂大豆压榨开机率,至6月9日全国主要油厂大豆压榨量 当前速讯
期货报告今日需关注的期货数据与事件提醒(2023年6月9... 更多>
木工做的柜子不满意能拆吗怎么办(木工做的柜子不满意能拆吗) 天天热闻
相信大家对木工做的柜子不满意能拆吗怎么办,木工做的... 更多>
今头条!上市公司积极布局“AI+教育” 相关技术可赋能高考复习、押题、阅卷等环节
6月7日,三六零(601360)集团董事长周鸿祎发出一条微博... 更多>
存款利率灵活调整 中小银行料跟进下调 实时焦点
6月8日,国有大行下调活期存款和部分定期存款挂牌利率... 更多>
美国总统拜登:任命Polly Trottenberg为美国联邦航空管理局(FAA)代理局长
美国总统拜登:任命PollyTrottenberg为美国联邦航空管... 更多>
大行存款“降息” 中小银行有望跟进|当前速读
继去年9月大行存款“降息”、今年4月中小银行补降后,... 更多>

汽车产业或进入“微增长”时代 动

5月上海二手房成交回落,挂牌活跃

华泰证券:布局低位猪股 关注新技

全球时讯:韩国LG Electronics和加

2020年西安户口迁入政策是什么样的

魔兽世界安其拉开门任务怎么做(魔

荣盛发展:股票于2023年6月9日(星

工银河北高速集团高速公路REIT被受

1天更新4次!他们这样为高考考生加

上海电影王健儿:3年3亿孵化“文创+