用 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億孵化“文創+

精品国产污污免费网站aⅴ| 国产精品人人做人人爽人人添| 国产亚洲美女精品久久久久狼| 精品丰满人妻无套内射| 精品一区二区三区免费| 黑巨人与欧美精品一区| 亚洲综合一区二区精品导航| 亚洲精品乱码久久久久久不卡| 四虎永久在线精品波多野结衣| 久久亚洲国产午夜精品理论片| 色妞www精品一级视频| 国产手机精品一区二区| 日产精品99久久久久久| 99国产精品一区二区| 国产精品久久国产精品99| 日本h在线精品免费观看| 国产国产精品人在线视| 亚洲精品国自产拍在线观看| 人妻少妇看A偷人无码精品| 久久国产亚洲精品无码| 国产午夜精品一区理论片| 国产精品1024在线永久免费| 日韩精品无码人妻免费视频| 97精品伊人久久大香线蕉app| 日韩精品真人荷官无码| 中文字幕久久精品无码| 一区二区精品久久| 精品国产一区二区三区免费看| 国产精品亲子乱子伦xxxx裸| 久久精品国产第一区二区| 国产亚洲精品成人久久网站| 精品一区二区三区| 亚洲精品中文字幕| 99精品热这里只有精品| 2021精品国产品免费观看| 亚洲精品私拍国产福利在线| 亚洲精品乱码久久久久久按摩| 国产精品亚洲视频| 国产AⅤ精品一区二区三区久久| 国产精品久久二区二区| 精品国产一区二区三区久久狼|