Redian新闻
>
用 Lua 控制你的树莓派 | Linux 中国

用 Lua 控制你的树莓派 | Linux 中国

科技
 
导读:学习如何使用 Lua 编程语言为物联网(IoT)设备编程,并与树莓派上的通用输入/输出(GPIO)引脚互动。
本文字数:3571,阅读时长大约:4分钟

学习如何使用 Lua 编程语言为物联网(IoT)设备编程,并与树莓派上的通用输入/输出(GPIO)引脚互动。

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

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

要求

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

安装

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

  1. $ sudo apt install git unzip gcc make

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

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

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

  1. $ sh ./Mako-Server-Build.sh

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

  1. $ cd /usr/local/bin/
  2. $ 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 脚本加载和运行。

  1. $ mkdir gpiotst
  2. $ nano gpiotst/.preload

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

  1. -- Load periphery.so and access the LED interface
  2. local LED = require('periphery').LED
  3. local function doled()
  4. local led = LED("led0") -- Open LED led0
  5. trace"Turn LED on"
  6. led:write(true) -- Turn on LED (set max brightness)
  7. ba.sleep(3000) -- 3 seconds
  8. trace"Turn LED off"
  9. led:write(false) -- Turn off LED (set zero brightness)
  10. led:close()
  11. end
  12. ba.thread.run(doled) -- Defer execution
  13. -- to after Mako has started

上面的 Lua 代码使用你编译并包含在 Mako 服务器中的 Lua-periphery 库控制树莓派 LED。该脚本定义了一个名为 doled 的函数来控制 LED。该脚本首先使用 Lua require 函数加载 periphery 库(共享库 periphery.so🔗 periphery.so)。返回的数据是一个包含所有 GPIO API 函数的 Lua 表🔗 opensource.com。但是,你只需要 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 服务器:

  1. $ mako -l::gpiotst

控制台中打印以下文本:

  1. Opening LED:
  2. opening 'brightness': Permission denied.

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

  1. $ sudo mako -l::gpiotst

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

Lua 解锁 IoT

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

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

(题图:MJ/4514210d-5697-4cd3-8c44-450bbe56be64)


via: https://opensource.com/article/23/3/control-your-raspberry-pi-lua

作者:Alan Smithee 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1948.5 篇
|
贡献: 3513 天
2013-10-25
2023-06-08
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Duke University 参观记树莓派获得索尼投资,芯片将集成 AIAlpine Linux 3.18 发布 | Linux 中国使用一块树莓派主板测量圆周率 | Linux 中国树莓派的五种最奇特的用途 | Linux 中国如何在 Linux 系统中使用 Ventoy 创建多重引导的 U 盘 | Linux 中国使用 ChatGPT AI 从英文文本生成 Linux 命令 | Linux 中国Voyager Linux 23.04:具有华丽外观且无 Snap 的 Ubuntu 体验 | Linux 中国8 款最佳的 Linux 远程桌面工具 | Linux 中国如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国Agustín Hernández:中美洲建筑背景下的未来主义巨构你的旧电脑是 “过时” 了,还是使用 Linux 的机会? | Linux 中国如何在 Linux 中合并 PDF 文件 | Linux 中国树莓派上运行 Stable Diffusion,260MB 的 RAM「hold」住 10 亿参数大模型测评适用于 Linux 中 Wayland 的最佳屏幕录制软件 | Linux 中国TUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国终端基础:在 Linux 中删除文件和文件夹 | Linux 中国红楼梦大学申请篇 第9章大家最喜欢的 Linux 终端字体 | Linux 中国如何入门 Linux Shell 脚本编写 | Linux 中国risiOS:一个易于使用的基于 Fedora 的 Linux 发行版 | Linux 中国在不到 30 分钟内构建一个树莓派监控仪表盘 | Linux 中国Arch Linux 的最佳 GUI 包管理器 | Linux 中国7 个超轻量级 Linux 发行版 | Linux 中国树莓派基金会推出网页端代码编辑器将 Linux 终端与 Nautilus 文件管理器结合起来 | Linux 中国参加了两个 5k 竞赛你以为我想抢你的薯条?海鸥我啊想复制你的食谱!3w+星标项目大佬创业:树莓派即可运行大模型,已获GitHub前CEO投资在 Linux 上用 Kdenlive 编辑视频 | Linux 中国耶鲁访校记11 个不可变 Linux 发行版,适合那些想要拥抱未来的人们 | Linux 中国Kali Linux 简介:你需要了解的一切 | Linux 中国空巢后是否要挑战自己?基于树莓派的蓝牙协议抓包
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。