suchen
HeimBetrieb und InstandhaltungNginxSteuern Sie Ihren Raspberry Pi mit Lua

Steuern Sie Ihren Raspberry Pi mit Lua

Jun 10, 2023 am 09:07 AM
lua树莓派

用 Lua 控制你的树莓派

Lua ist eine Sprache, die manchmal missverstanden wird. Im Gegensatz zu Python und einigen anderen Programmiersprachen ist diese Sprache eine allgemeine Erweiterungssprache und wird häufig in Spiele-Engines, Frameworks usw. verwendet. Insgesamt halte ich Lua für ein wertvolles Werkzeug für Entwickler, das es ihnen ermöglicht, ihre Projekte auf leistungsstarke Weise zu verbessern und zu erweitern.

Sie können Seth Kenlons Artikel „Lohnt es sich, Lua zu lernen?“ folgen. 》Der Artikel stellt das Herunterladen und Ausführen häufig verwendeter Lua vor und enthält auch einfache Lua-Codebeispiele. Um jedoch das Beste aus Lua herauszuholen, ist es am besten, es mit einem Framework zu verwenden, das die Sprache übernimmt. In diesem Tutorial zeige ich, wie man ein Framework namens Mako Server verwendet, das Lua-Programmierern das Codieren von IoT- und Webanwendungen erleichtern soll. Ich habe Ihnen auch gezeigt, wie Sie dieses Framework mithilfe der API erweitern können, um die GPIO-Pins des Raspberry Pi zu verwenden.

Anforderungen

Bevor Sie diesem Tutorial folgen, benötigen Sie einen laufenden Raspberry Pi, bei dem Sie sich anmelden können. Obwohl ich in diesem Tutorial C-Code kompiliere, benötigen Sie keine Erfahrung mit C-Codierung. Sie benötigen jedoch etwas Erfahrung im Umgang mit einem POSIX-Terminal.

Installation

Öffnen Sie zunächst ein Terminalfenster auf dem Raspberry Pi und installieren Sie die folgenden Tools, um den Code herunterzuladen und den C-Code mit Git zu kompilieren:

$ sudo apt install git unzip gcc make

Als nächstes kompilieren Sie den Open-Source-Mako-Server-Code und die Lua-Peripherie durch Ausführen Die folgende Befehlsbibliothek (GPIO-Bibliothek für Raspberry Pi):

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

Schauen Sie sich das Skript an, um zu sehen, was es tut, und führen Sie es aus, sobald Sie damit einverstanden sind:

$ sh ./Mako-Server-Build.sh

Der Kompilierungsvorgang kann einige Zeit dauern, insbesondere bei älteren Versionen Raspberry Pis überlegen. Nach der Kompilierung werden Sie vom Skript aufgefordert, die Mako-Server- und Lua-Peripheriemodule in /usr/local/bin/. Ich empfehle die Installation, um die Verwendung der Software zu vereinfachen. Keine Sorge, Sie können es deinstallieren, wenn Sie es nicht mehr benötigen: /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

$ mkdir gpiotst$ nano gpiotst/.preload
Um die Installation zu testen, geben Sie im Terminal STRG+C drücken, um den Server zu stoppen.

IoT und Lua

Da nun der Mako-Server auf Ihrem Raspberry Pi eingerichtet ist, können Sie mit der Programmierung von IoT- und Webanwendungen beginnen und Lua verwenden, um die GPIO-Pins des Raspberry Pi zu manipulieren. Das Mako Server-Framework bietet Lua-Entwicklern eine leistungsstarke und dennoch einfache API zum Erstellen von IoT-Anwendungen, während das Lua-Peripheriemodul Lua-Entwicklern die Interaktion mit den GPIO-Pins des Raspberry Pi und anderen Peripheriegeräten ermöglicht. 🎜🎜Erstellen Sie zunächst ein Anwendungsverzeichnis und einen .preload-Skript, das Lua-Code zum Testen von GPIO einfügt. .preload-Skript ist eine Mako-Servererweiterung, die beim Start der Anwendung geladen und als Lua-Skript ausgeführt wird. 🎜
-- 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
🎜Kopieren Sie den folgenden Inhalt in 🎜Nano Editor🎜 und speichern Sie die Datei: 🎜
-- 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 功能。

In der Zwischenzeit können Sie tiefer in die Lua-Peripherie-GPIO-Bibliothek eintauchen, indem Sie deren Dokumentation lesen, um mehr über die Funktionalität und die Verwendung mit verschiedenen Peripheriegeräten zu erfahren. Um dieses Tutorial optimal zu nutzen, sollten Sie dem „Interactive Mako Server Lua Tutorial“ folgen, um Lua, das Web und IoT besser zu verstehen. Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonSteuern Sie Ihren Raspberry Pi mit Lua. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:51CTO.COM. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
NGINX -Einheit: Schlüsselmerkmale und FunktionenNGINX -Einheit: Schlüsselmerkmale und FunktionenApr 25, 2025 am 12:17 AM

NginxUnit ist ein Open-Source-Anwendungsserver, der mehrere Programmiersprachen unterstützt und Funktionen wie dynamische Konfiguration, Zero-Ausfallzeit-Updates und integriertes Lastausgleich bietet. 1. Dynamische Konfiguration: Sie können die Konfiguration ohne Neustart ändern. 2. Mehrsprachiger Support: Kompatibel mit Python, Go, Java, PHP usw. 3.. Zero Ausfallzeit -Update: Unterstützt Anwendungsaktualisierungen, die die Dienste nicht unterbrechen. 4. Eingebautes Lastausgleich: Anfragen können auf mehrere Anwendungsinstanzen verteilt werden.

Nginx -Einheit im Vergleich zu anderen AnwendungsservernNginx -Einheit im Vergleich zu anderen AnwendungsservernApr 24, 2025 am 12:14 AM

NginxUnit ist besser als Apachetomcat, Gunicorn und Node.JS integrierte HTTP-Server, geeignet für mehrsprachige Projekte und dynamische Konfigurationsanforderungen. 1) Unterstützt mehrere Programmiersprachen, 2) Bietet eine dynamische Konfiguration, 3) integrierte Lastausgleichsfunktion, die für Projekte geeignet ist, die eine hohe Skalierbarkeit und Zuverlässigkeit erfordern.

Nginx -Einheit: Die Architektur und wie sie funktioniertNginx -Einheit: Die Architektur und wie sie funktioniertApr 23, 2025 am 12:18 AM

NginxUnit verbessert die Anwendungsleistung und -verwaltbarkeit mit seiner modularen Architektur- und dynamischen Rekonfigurationsfunktionen. 1) Das modulare Design umfasst Masterprozesse, Router und Anwendungsprozesse, die effizientes Management und Expansion unterstützen. 2) Die dynamische Rekonfiguration ermöglicht eine nahtlose Konfigurationsaktualisierung zur Laufzeit, die für CI/CD -Umgebungen geeignet ist. 3) Mehrsprachige Unterstützung wird durch dynamisches Laden der Sprachlaufzeit implementiert, wodurch die Flexibilität der Entwicklung verbessert wird. 4) Eine hohe Leistung wird durch ereignisorientierte Modelle und asynchrones E/A erzielt und bleibt auch unter hoher Parallelität effizient. 5) Die Sicherheit wird verbessert, indem Anwendungsprozesse isoliert und der gegenseitige Einfluss zwischen Anwendungen verringert wird.

Verwenden von Nginx -Einheiten: Bereitstellung und Verwalten von AnwendungenVerwenden von Nginx -Einheiten: Bereitstellung und Verwalten von AnwendungenApr 22, 2025 am 12:06 AM

NginxUnit kann verwendet werden, um Anwendungen in mehreren Sprachen bereitzustellen und zu verwalten. 1) Installieren Sie NginxUnit. 2) Konfigurieren Sie es, um verschiedene Arten von Anwendungen wie Python und PHP auszuführen. 3) Verwenden Sie seine dynamische Konfigurationsfunktion für die Anwendungsverwaltung. In diesen Schritten können Sie Anwendungen effizient bereitstellen und verwalten und die Projekteffizienz verbessern.

Nginx vs. Apache: Eine vergleichende Analyse von WebservernNginx vs. Apache: Eine vergleichende Analyse von WebservernApr 21, 2025 am 12:08 AM

Nginx eignet sich besser zum Umgang mit hohen gleichzeitigen Verbindungen, während Apache besser für Szenarien geeignet ist, in denen komplexe Konfigurationen und Modulverlängerungen erforderlich sind. 1.Nginx ist bekannt für seine hohe Leistung und den niedrigen Ressourcenverbrauch und ist für eine hohe Parallelität geeignet. 2.APACHE ist bekannt für seine Stabilität und die reichhaltigen Modulverlängerungen, die für komplexe Konfigurationsanforderungen geeignet sind.

Vorteile der Nginx -Einheit: Flexibilität und LeistungVorteile der Nginx -Einheit: Flexibilität und LeistungApr 20, 2025 am 12:07 AM

NginxUnit verbessert die Flexibilität und Leistung von Anwendungen mit seiner dynamischen Konfiguration und seiner Hochleistungsarchitektur. 1. Dynamische Konfiguration ermöglicht es der Anwendungskonfiguration, ohne den Server neu zu starten. 2. Die hohe Leistung spiegelt sich in ereignisorientierten und nicht blockierenden Architekturen und Multi-Process-Modellen wider und kann gleichzeitige Verbindungen effizient verarbeiten und Multi-Core-CPUs verwenden.

Nginx vs. Apache: Leistung, Skalierbarkeit und EffizienzNginx vs. Apache: Leistung, Skalierbarkeit und EffizienzApr 19, 2025 am 12:05 AM

Nginx und Apache sind beide leistungsstarke Webserver mit einzigartigen Vor- und Nachteilen in Bezug auf Leistung, Skalierbarkeit und Effizienz. 1) Nginx funktioniert bei der Behandlung statischer Inhalte und dem Umkehren von Proxen, geeignet für hohe Parallelitätsszenarien. 2) Apache funktioniert bei der Verarbeitung dynamischer Inhalte besser und eignet sich für Projekte, für die ein reichhaltiges Modulunterstützung erforderlich ist. Die Auswahl eines Servers sollte basierend auf Projektanforderungen und Szenarien ermittelt werden.

Der ultimative Showdown: Nginx vs. ApacheDer ultimative Showdown: Nginx vs. ApacheApr 18, 2025 am 12:02 AM

Nginx eignet sich zum Umgang mit hohen gleichzeitigen Anforderungen, während Apache für Szenarien geeignet ist, in denen komplexe Konfigurationen und funktionale Erweiterungen erforderlich sind. 1.Nginx nimmt eine ereignisorientierte, nicht blockierende Architektur an und eignet sich für Umgebungen mit hoher Konsequenz. 2. Apache übernimmt Prozess- oder Threadmodell, um ein reiches Modul -Ökosystem bereitzustellen, das für komplexe Konfigurationsanforderungen geeignet ist.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft