ホームページ  >  記事  >  運用・保守  >  Lua で Raspberry Pi を制御する

Lua で Raspberry Pi を制御する

王林
王林転載
2023-06-10 09:07:491063ブラウズ

用 Lua 控制你的树莓派

Lua は、時々誤解される言語です。 Python や他のプログラミング言語とは異なり、この言語は汎用拡張言語であり、ゲーム エンジンやフレームワークなどで広く使用されています。全体として、Lua は開発者にとって貴重なツールであり、強力な方法でプロジェクトを強化および拡張できるようになります。

Seth Kenlon の記事「Lua は学ぶ価値がありますか?」を参照してください。 >>一般的に使用される Lua のダウンロードと実行について紹介し、この記事には簡単な Lua コード例も含まれています。ただし、Lua を最大限に活用するには、Lua 言語を採用したフレームワークで使用するのが最善です。このチュートリアルでは、Lua プログラマーが IoT および Web アプリケーションを簡単にコーディングできるように設計された Mako Server と呼ばれるフレームワークの使用方法を示します。また、API を使用してこのフレームワークを拡張し、Raspberry Pi の GPIO ピンを使用する方法も説明しました。

要件

このチュートリアルに従う前に、ログインできる実行中の Raspberry Pi が必要です。このチュートリアルでは C コードをコンパイルしますが、C コーディングの経験は必要ありません。ただし、POSIX 端末の使用にはある程度の経験が必要です。

インストール

まず、Raspberry Pi でターミナル ウィンドウを開き、次のツールをインストールしてコードをダウンロードし、Git を使用して C コードをコンパイルします。

$ sudo apt install git unzip gcc make

次に、パスを実行します。次のコマンドを使用して、オープン ソースの Mako サーバー コードと lua 周辺ライブラリ (Raspberry Pi の GPIO ライブラリ) をコンパイルします。

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

スクリプトをチェックして動作を確認し、問題ないと思われる場合は実行します。

$ sh ./Mako-Server-Build.sh

コンパイル プロセスには、特に古い Raspberry Pi では時間がかかる場合があります。コンパイルが完了すると、スクリプトは Mako サーバーと lua 周辺モジュールを /usr/local/bin/ にインストールするように求めます。ソフトウェアの使用を簡素化するために、インストールすることをお勧めします。心配しないでください。不要になった場合はアンインストールできます。

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

インストールをテストするには、ターミナルに mako と入力します。これにより、Mako サーバーが起動し、ターミナルに出力が表示されます。 CTRL C を押すとサーバーを停止できます。

IoT と Lua

Mako サーバーが Raspberry Pi にセットアップされたので、IoT および Web アプリケーションのプログラミングを開始し、Lua を使用して Raspberry Pi の GPIO ヘッダーを操作できます。 Mako Server フレームワークは、Lua 開発者に IoT アプリケーションを作成するための強力かつシンプルな API を提供し、lua 周辺モジュールを使用すると、Lua 開発者は Raspberry Pi の GPIO ピンやその他の周辺機器と対話できるようになります。

まず、アプリケーション ディレクトリと .preload スクリプトを作成します。このスクリプトには、GPIO をテストするための Lua コードが挿入されます。 .preload このスクリプトは、アプリケーションの起動時に Lua スクリプトとしてロードされて実行される Mako サーバー拡張機能です。

$ mkdir gpiotst$ nano gpiotst/.preload

次のコンテンツを Nano Editor にコピーし、ファイルを保存します:

-- 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 ペリフェラル GPIO ライブラリをさらに深く掘り下げ、その機能とさまざまなペリフェラルでそれを使用する方法について詳しく学ぶことができます。このチュートリアルを最大限に活用するには、Interactive Mako Server Lua チュートリアル に従って、Lua、Web、IoT についてより深く理解することを検討してください。コーディングを楽しんでください!

以上がLua で Raspberry Pi を制御するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。