首頁 > 運維 > Nginx > 主體

用 Lua 控制你的樹莓派

王林
發布: 2023-06-10 09:07:49
轉載
1063 人瀏覽過

用 Lua 控制你的树莓派

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 led0trace"Turn LED on"led:write(true) -- Turn on LED (set max brightness)ba.sleep(3000)-- 3 secondstrace"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。该脚本首先使用 Lua require 函数加载 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 控制你的樹莓派的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!