Rumah > Artikel > Operasi dan penyelenggaraan > Kawal Raspberry Pi anda dengan 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.
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.
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
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
Semak skrip untuk melihat apa yang dilakukannya dan jalankannya apabila anda baik:
$ sh ./Mako-Server-Build.sh
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
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
.
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 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
上面的 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
打印到跟踪(控制台)。write
方法并将布尔值 true
传递给它来激活 LED,该值设置 LED 的最大亮度。ba.sleep(3000)
等待 3 秒。Turn LED off
打印到跟踪。write
方法并将布尔值 false
传递给它来停用 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 秒。成功!
在本入门教程中,你学习了如何编译 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!