Jadual Kandungan
Keperluan
Pemasangan
IoT dan Lua
Lua 解锁 IoT
Rumah Operasi dan penyelenggaraan Nginx Kawal Raspberry Pi anda dengan Lua

Kawal Raspberry Pi anda dengan Lua

Jun 10, 2023 am 09:07 AM
lua Raspberry Pi

用 Lua 控制你的树莓派

Lua adalah bahasa yang kadangkala disalahertikan. Tidak seperti Python dan beberapa bahasa pengaturcaraan lain, bahasa ini ialah bahasa sambungan umum dan digunakan secara meluas dalam enjin permainan, rangka kerja, dsb. Secara keseluruhannya, saya dapati Lua sebagai alat yang berharga untuk pembangun, membolehkan mereka mempertingkat dan melanjutkan projek mereka dalam beberapa cara yang berkuasa.

Anda boleh mengikuti artikel Seth Kenlon " Adakah Lua berbaloi untuk dipelajari? "" memperkenalkan cara memuat turun dan menjalankan Lua yang biasa digunakan Artikel ini juga termasuk contoh kod Lua yang mudah. Walau bagaimanapun, untuk memanfaatkan Lua sepenuhnya, sebaiknya gunakannya dengan rangka kerja yang menggunakan bahasa tersebut. Dalam tutorial ini, saya menunjukkan cara menggunakan rangka kerja yang dipanggil Mako Server, yang direka bentuk untuk memudahkan pengaturcara Lua mengodkan IoT dan aplikasi web. Saya juga menunjukkan kepada anda cara untuk melanjutkan rangka kerja ini menggunakan API untuk menggunakan pin GPIO Raspberry Pi.

Keperluan

Sebelum mengikuti tutorial ini, anda memerlukan Raspberry Pi yang sedang berjalan yang boleh anda log masuk. Walaupun saya akan menyusun kod C dalam tutorial ini, anda tidak memerlukan sebarang pengalaman dengan pengekodan C. Walau bagaimanapun, anda memerlukan sedikit pengalaman menggunakan terminal POSIX.

Pemasangan

Pertama, buka tetingkap terminal pada Raspberry Pi dan pasang alatan berikut untuk memuat turun kod dan menyusun kod C menggunakan Git:

$ sudo apt install git unzip gcc make
Salin selepas log masuk

Seterusnya, lulus Jalankan arahan berikut untuk menyusun kod Pelayan Mako sumber terbuka dan pustaka lua-pinggiran (pustaka GPIO Raspberry Pi):

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

Semak skrip untuk melihat apa yang dilakukannya dan jalankannya apabila anda baik:

$ sh ./Mako-Server-Build.sh
Salin selepas log masuk

Proses penyusunan mungkin mengambil sedikit masa, terutamanya pada Raspberry Pis yang lebih lama. Selepas penyusunan selesai, skrip akan meminta anda memasang Pelayan Mako dan modul lua-pinggiran ke /usr/local/bin/. Saya mengesyorkan memasangnya untuk memudahkan penggunaan perisian. Jangan risau, jika anda tidak memerlukannya lagi, anda boleh menyahpasangnya:

$ cd /usr/local/bin/$ sudo rm mako mako.zip periphery.so
Salin selepas log masuk

Untuk menguji pemasangan, masukkan mako dalam terminal. Ini akan memulakan pelayan Mako dan melihat beberapa output dalam terminal anda. Anda boleh menghentikan pelayan dengan menekan CTRL+C.

IoT dan Lua

Sekarang pelayan Mako disediakan pada Raspberry Pi anda, anda boleh mula memprogramkan IoT dan aplikasi web serta menggunakan Lua untuk mengendalikan pengepala GPIO Raspberry Pi. Rangka kerja Pelayan Mako menyediakan pemaju Lua dengan API yang berkuasa namun mudah untuk mencipta aplikasi IoT, manakala modul pinggiran lua membolehkan pembangun Lua berinteraksi dengan pin GPIO Raspberry Pi dan peranti lain.

Mula-mula buat direktori aplikasi dan skrip .preload di mana kod Lua untuk menguji GPIO dimasukkan. .preload Skrip ialah sambungan pelayan Mako yang dimuatkan dan berjalan sebagai skrip Lua apabila aplikasi dimulakan.

$ mkdir gpiotst$ nano gpiotst/.preload
Salin selepas log masuk

Salin kandungan berikut ke dalam Editor Nano dan simpan fail:

-- 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
Salin selepas log masuk

上面的 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
Salin selepas log masuk

控制台中打印以下文本:

Opening LED:opening 'brightness': Permission denied.
Salin selepas log masuk

访问 GPIO 需要 root 访问权限,因此按 CTRL+C 停止服务器并重新启动 Mako 服务器,如下所示:

$ sudo mako -l::gpiotst
Salin selepas log masuk

现在树莓派 LED 亮起 3 秒。成功!

Lua 解锁 IoT

在本入门教程中,你学习了如何编译 Mako 服务器,包括 GPIO Lua 模块,以及如何编写用于打开和关闭树莓派 LED 的基本 Lua 脚本。在以后的文章中,我将在本文的基础上进一步介绍 IoT 功能。

Sementara itu, anda boleh menyelidiki pustaka GPIO pinggir Lua dengan lebih mendalam dengan membaca Dokumentasinya untuk mengetahui lebih lanjut tentang fungsi dan cara menggunakannya dengan peranti lain. Untuk memanfaatkan sepenuhnya tutorial ini, pertimbangkan untuk mengikuti Tutorial Lua Pelayan Mako Interaktif untuk lebih memahami Lua, Web dan IoT. Selamat mengekod!

Atas ialah kandungan terperinci Kawal Raspberry Pi anda dengan Lua. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk memasang dan mengkonfigurasi sokongan Lua untuk Nginx Bagaimana untuk memasang dan mengkonfigurasi sokongan Lua untuk Nginx Jun 02, 2023 pm 10:01 PM

Pemasangan dan konfigurasi Nginx Sokongan Lua Secara lalai, Nginx tidak menyokong modul Lua Anda perlu memasang penterjemah LuaJIT dan menyusun semula Nginx, atau anda boleh menggunakan modul yang diperlukan oleh openrestry yang dibangunkan oleh orang Cina: LuaJIT, Ngx_devel dan lua-nginx-module1. . Persediaan persekitaran [root @nginx_lua~]#yuminstall-ygccgcc-c++makepcre-develzlib-developenssl-devel2 Muat turun luajit dan ngx_devel_kit dan penyahmampatan modul lua-nginx [r

Bagaimana untuk mengintegrasikan nginx dengan lua untuk mengendalikan mysql Bagaimana untuk mengintegrasikan nginx dengan lua untuk mengendalikan mysql May 16, 2023 pm 10:43 PM

Idea pelaksanaan adalah untuk mengkonfigurasi senarai hitam secara langsung dalam nginx dan melaksanakannya dengan menulis blok logik dalam pelayan (Java) dan menyatukan pemintas dalam penapis (Java) dan menyatukannya dalam pemintas Pemintasan; berikut adalah 3 idea pelaksanaan Bagi penyelesaian pelaksanaan, mungkin terdapat lebih banyak, tetapi jika kita fikirkan, menulis blok logik dalam nginx nampaknya bukan perkara yang mustahil untuk dilakukan tahap kod, tetapi ini Pertama, semasa tempoh perniagaan puncak yang melibatkan konkurensi tinggi, ini pasti akan memberi tekanan yang lebih besar pada perkhidmatan bahagian belakang Jadi adakah terdapat cara lain yang lebih baik untuk menanganinya? Inilah maksud lua, iaitu, nginx bertindak sebagai pintu masuk dan masih bertindak sebagai pelayan proksi, kerana nginx boleh menyepadukan lua

Lima kegunaan unik untuk Raspberry Pi Lima kegunaan unik untuk Raspberry Pi Jul 09, 2023 pm 02:10 PM

Baru-baru ini, saya mendengar seseorang dalam panggilan persidangan mengatakan bahawa komuniti sumber terbuka ialah gabungan rasa ingin tahu dan budaya penyelesaian masalah. Rasa ingin tahu adalah asas penyelesaian masalah kita. Apabila menyelesaikan masalah dalam semua saiz, kami menggunakan pelbagai alat sumber terbuka, termasuk Linux yang berjalan pada Raspberry Pi yang sangat mudah. Kita semua mempunyai pelbagai pengalaman hidup yang berbeza, jadi saya bertanya kepada komuniti pengarang kami untuk kegunaan Raspberry Pi paling aneh yang pernah mereka temui. Saya rasa binaan hebat ini akan memberi inspirasi kepada orang lain. Bereksperimen dengan Raspberry Pi Bagi saya, Raspberry Pi ialah alat yang hebat untuk menambah sumber pembangunan tambahan pada rangkaian rumah saya. Jika saya ingin membuat tapak web baharu atau mencuba alat perisian baharu, saya tidak perlu membiarkan desktop saya Lin

Penyepaduan bahasa Vue.js dan Lua untuk menulis aplikasi terbenam yang ringan Penyepaduan bahasa Vue.js dan Lua untuk menulis aplikasi terbenam yang ringan Jul 31, 2023 pm 02:23 PM

Penyepaduan bahasa Vue.js dan Lua untuk menulis aplikasi terbenam yang ringan Dalam pembangunan moden, rangka kerja bahagian hadapan Vue.js dan bahasa skrip Lua masing-masing mempunyai pelbagai aplikasi. Vue.js ialah rangka kerja progresif untuk membina antara muka pengguna, manakala Lua ialah bahasa skrip ringan yang sering digunakan untuk pembangunan aplikasi dan permainan terbenam. Artikel ini akan memperkenalkan cara mengintegrasikan Vue.js dengan bahasa Lua untuk menulis aplikasi terbenam yang ringan dan menyediakan contoh kod. Pertama, kita perlu memasang Vue.j

Bina papan pemuka pemantauan Raspberry Pi dalam masa kurang daripada 30 minit Bina papan pemuka pemantauan Raspberry Pi dalam masa kurang daripada 30 minit Jul 16, 2023 pm 08:50 PM

Jika anda ingin mengetahui prestasi Raspberry Pi anda, maka anda mungkin memerlukan papan pemuka Raspberry Pi. Dalam artikel ini, saya akan menunjukkan cara membina papan pemuka pemantauan atas permintaan dengan cepat untuk melihat prestasi CPU, memori dan penggunaan cakera Raspberry Pi anda dalam masa nyata serta menambah lebih banyak paparan dan tindakan pada bila-bila masa mengikut keperluan. Jika anda sudah menggunakan Appsmith, anda juga boleh mengimport aplikasi sampel secara terus dan mulakan. AppsmithAppsmith ialah alat bina aplikasi kod rendah sumber terbuka yang membantu pembangun dengan mudah dan cepat membina aplikasi dalaman seperti papan pemuka dan panel pentadbir. Ia adalah pilihan yang bagus untuk papan pemuka dan mengurangkan masa dan kerumitan yang diperlukan oleh kaedah pengekodan tradisional. Dalam contoh papan pemuka ini, saya memaparkan statistik berikut

Cara menggunakan skrip Redis+Lua untuk melaksanakan fungsi anti-leret antara muka kaunter Cara menggunakan skrip Redis+Lua untuk melaksanakan fungsi anti-leret antara muka kaunter May 28, 2023 pm 11:32 PM

[Proses pelaksanaan] 1. Analisis masalah Jika arahan yang ditetapkan ditetapkan, tetapi tetapan tidak berjaya disebabkan oleh kegelisahan rangkaian dan sebab-sebab lain apabila menetapkan masa tamat tempoh, pembilang mati (serupa dengan kebuntuan) akan muncul; +Lua Ia adalah penyelesaian yang baik Gunakan skrip untuk membuat arahan yang ditetapkan dan perintah tamat tempoh berfungsi bersama-sama supaya Redis dilaksanakan tanpa diganggu, yang menjamin operasi atom pada tahap yang besar mengapa ia dikatakan menjamin operasi atom secara besar-besaran sejauh mana dan bukannya memastikan sepenuhnya? Kerana masalah mungkin berlaku apabila Redis dilaksanakan dalam

Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman dalam membina enjin bahagian hadapan untuk pembangunan permainan Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman dalam membina enjin bahagian hadapan untuk pembangunan permainan Aug 01, 2023 pm 08:14 PM

Penyepaduan bahasa Vue.js dan Lua, amalan terbaik dan perkongsian pengalaman untuk membina enjin bahagian hadapan untuk pembangunan permainan Pengenalan: Dengan pembangunan berterusan pembangunan permainan, pilihan enjin bahagian hadapan permainan telah menjadi keputusan penting. Antara pilihan ini, rangka kerja Vue.js dan bahasa Lua telah menjadi tumpuan ramai pembangun. Sebagai rangka kerja hadapan yang popular, Vue.js mempunyai ekosistem yang kaya dan kaedah pembangunan yang mudah, manakala bahasa Lua digunakan secara meluas dalam pembangunan permainan kerana prestasinya yang ringan dan cekap. Artikel ini akan meneroka bagaimana untuk

Cara menggunakan skrip Lua dalam ekosistem Java/Redis Cara menggunakan skrip Lua dalam ekosistem Java/Redis Jun 02, 2023 pm 10:41 PM

1. Pasang LUA Memasang LUA pada Mac adalah sangat mudah. ​​Hanya gunakan arahan berkaitan brew secara langsung menggunakan arahan lua-v untuk melihat bahawa lua telah dipasang. 1) Penggunaan mudah untuk mencipta fail test.lua, kandungannya ialah: Laksanakan arahan: luatest.lua output ialah: 2. Pengenalan kepada sintaks lua Lua menyediakan pengaturcaraan interaktif dan pengaturcaraan skrip: Pengaturcaraan interaktif: terus masukkan sintaks pada baris arahan , anda boleh melaksanakannya serta-merta dan melihat kesan pelaksanaan. Skrip ialah pengaturcaraan: tulis fail skrip dan kemudian laksanakannya. 1. Komen Lua menyediakan dua kaedah ulasan: komen satu baris dan komen berbilang baris 1) Komen satu baris menggunakan dua tanda tolak;--2) Komen berbilang baris--[[komen berbilang baris berbilang baris

See all articles