目次
要件
インストール
IoT と Lua
Lua 解锁 IoT
ホームページ 運用・保守 Nginx Lua で Raspberry Pi を制御する

Lua で Raspberry Pi を制御する

Jun 10, 2023 am 09:07 AM
lua ラズベリーパイ

用 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nginx の Lua サポートをインストールして構成する方法 Nginx の Lua サポートをインストールして構成する方法 Jun 02, 2023 pm 10:01 PM

Nginx のインストールと設定 Lua のサポート デフォルトでは、Nginx は Lua モジュールをサポートしていません。LuaJIT インタープリターをインストールして Nginx を再コンパイルする必要があります。または、中国人が開発した openrestry に必要なモジュール (LuaJIT、Ngx_devel、lua-nginx-module1) を使用することもできます。 . 環境準備 [root @nginx_lua~]#yuminstall-ygccgcc-c++makepcre-develzlib-developenssl-devel2. 最新の luajit と ngx_devel_kit と lua-nginx-module の解凍をダウンロード [r

nginx と lua を統合して mysql を操作する方法 nginx と lua を統合して mysql を操作する方法 May 16, 2023 pm 10:43 PM

実装アイデアは、nginx でブラックリストを直接構成し、論理ブロックを作成して実装する、サーバー (Java) にフィルターを作成し、フィルター内のインターセプターを統合する、サーバー (Java) にインターセプターを作成してインターセプターを統合する、です。 ; ここに 3 つの実装アイデアがあります。実装ソリューションについては、他にもあるかもしれませんが、よく考えてみると、nginx で論理ブロックを書くのは多くの人が得意なことではないようです。コード レベルですが、これは第一に、同時実行性が高いビジネスのピーク時には、バックエンド サービスに大きな負荷がかかることは避けられません。これが lua の意味です。つまり、nginx は lua を統合できるため、nginx はゲートウェイとして機能し、同時にプロキシ サーバーとしても機能します。

Vue.js と Lua 言語の統合による軽量の組み込みアプリケーションの作成 Vue.js と Lua 言語の統合による軽量の組み込みアプリケーションの作成 Jul 31, 2023 pm 02:23 PM

軽量の組み込みアプリケーションを作成するための Vue.js と Lua 言語の統合現代の開発では、フロントエンド フレームワーク Vue.js とスクリプト言語 Lua はそれぞれ幅広い用途に使用されています。 Vue.js はユーザー インターフェイスを構築するための進歩的なフレームワークであり、Lua は組み込みアプリケーションやゲーム開発によく使用される軽量のスクリプト言語です。この記事では、Vue.js を Lua 言語と統合して軽量の組み込みアプリケーションを作成する方法を紹介し、コード例を示します。まず、Vue.jをインストールする必要があります

Raspberry Pi の 5 つのユニークな使い方 Raspberry Pi の 5 つのユニークな使い方 Jul 09, 2023 pm 02:10 PM

最近、電話会議で誰かが、オープンソース コミュニティは好奇心と問題解決の文化が組み合わさったものである、と言っているのを聞きました。好奇心は問題解決の基礎です。あらゆる規模の問題を解決する場合、私たちは非常に便利な Raspberry Pi 上で実行される Linux を含む、幅広いオープンソース ツールを使用します。私たちは皆、異なる人生経験を持っているため、著者コミュニティに、これまでに出会った Raspberry Pi の最も奇妙な用途について尋ねました。これらの素晴らしい作品は他の人にもインスピレーションを与えるだろうと感じています。 Raspberry Pi の実験 私にとって、Raspberry Pi は、ホーム ネットワークに開発リソースを追加するための優れたツールです。新しい Web サイトを作成したり、新しいソフトウェア ツールを試したりしたい場合、デスクトップを Lin にする必要はありません。

Vue.js と Lua 言語の統合、ゲーム開発用のフロントエンド エンジン構築におけるベスト プラクティスと経験の共有 Vue.js と Lua 言語の統合、ゲーム開発用のフロントエンド エンジン構築におけるベスト プラクティスと経験の共有 Aug 01, 2023 pm 08:14 PM

Vue.js と Lua 言語の統合、ゲーム開発用のフロントエンド エンジンを構築するためのベスト プラクティスと経験の共有 はじめに: ゲーム開発の継続的な開発に伴い、ゲーム フロントエンド エンジンの選択は重要な決定となっています。これらの選択肢の中で、Vue.js フレームワークと Lua 言語が多くの開発者の注目を集めています。人気のフロントエンド フレームワークとして、Vue.js は豊富なエコシステムと便利な開発方法を備えていますが、Lua 言語は軽量で効率的なパフォーマンスのため、ゲーム開発で広く使用されています。この記事では、その方法について説明します。

Raspberry Pi 監視ダッシュボードを 30 分以内に構築します Raspberry Pi 監視ダッシュボードを 30 分以内に構築します Jul 16, 2023 pm 08:50 PM

Raspberry Pi のパフォーマンスを知りたい場合は、おそらく Raspberry Pi ダッシュボードが必要です。この記事では、Raspberry Pi の CPU パフォーマンス、メモリ、ディスク使用量をリアルタイムで表示し、必要に応じていつでもビューやアクションを追加するオンデマンド監視ダッシュボードをすばやく構築する方法を説明します。すでに Appsmith を使用している場合は、サンプル アプリケーションを直接インポートして開始することもできます。 Appsmith Appsmith は、開発者がダッシュボードや管理パネルなどの内部アプリケーションを簡単かつ迅速に構築できるようにする、オープンソースのローコード アプリケーション構築ツールです。これはダッシュボードに最適なオプションであり、従来のコーディング方法に必要な時間と複雑さを軽減します。このダッシュボードの例では、次の統計を表示します。

idaPro がアプリ復号化 lua スクリプトを分析する方法 idaPro がアプリ復号化 lua スクリプトを分析する方法 May 18, 2023 am 08:34 AM

前の idaPro デバッグまたはフックを通じて、xxtea 復号化キーを取得できます。署名の場合は、元のファイルを直接開くことができます。署名値: byds を確認できます。したがって、xxtea 復号化ツール (GitHub のソース コードからコンパイル可能) を使用して復号化を試みることができます。 xxtea による復号後の lua スクリプトはまだプレーンテキストではありません。以前、cocos2d フレームワークのソース コードとマスター APK のデコード結果に基づいて xxtea 暗号化が使用されていると判断し、アプリの Lua スクリプトにも署名値があり、それが xxtea 暗号化方式であることを確認しましたが、

Javaエコシステム/RedisでLuaスクリプトを使用する方法 Javaエコシステム/RedisでLuaスクリプトを使用する方法 Jun 02, 2023 pm 10:41 PM

1. LUA のインストール Mac への LUA のインストールは非常に簡単で、brew 関連コマンドを直接使用するだけです; brewinstalllua は lua-v コマンドを使用して lua がインストールされていることを確認します。 1) test.lua ファイルを作成するための簡単な使用方法。内容は次のとおりです。 コマンドを実行します。 luatest.lua 出力は次のとおりです。 2. lua 構文の概要 Lua は対話型プログラミングとスクリプト化プログラミングを提供します。 対話型プログラミング: コマンド ラインに構文を直接入力します。 、すぐに実行して実行効果を確認できます。スクリプティングはプログラミングです。スクリプト ファイルを作成して実行します。 1. Comment Lua は 2 つのコメント方法を提供します: 単一行コメントと複数行コメント 1) 単一行コメントは 2 つのマイナス記号を使用します。--2) 複数行コメント--[[複数行コメント 複数行

See all articles