溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用Fedora IoT點(diǎn)亮LED燈

發(fā)布時(shí)間:2021-10-22 15:00:03 來(lái)源:億速云 閱讀:125 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹怎么使用Fedora IoT點(diǎn)亮LED燈,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

什么是 Fedora IoT?

Fedora IoT 是當(dāng)前 Fedora 項(xiàng)目的目標(biāo)之一,計(jì)劃成為一個(gè)完整的 Fedora 版本。Fedora IoT 將是一個(gè)在 ARM(目前僅限 aarch74)設(shè)備上(例如樹莓派),以及 x86_64 架構(gòu)上運(yùn)行的系統(tǒng)。

怎么使用Fedora IoT點(diǎn)亮LED燈

Fedora IoT 基于 OSTree 開發(fā),就像 Fedora Silverblue 和以往的 Atomic Host。

下載和安裝 Fedora IoT

官方 Fedora IoT 鏡像將和 Fedora 29 一起發(fā)布。但是在此期間你可以下載 基于 Fedora 28 的鏡像 來(lái)進(jìn)行這個(gè)實(shí)驗(yàn)。(LCTT 譯注:截止至本譯文發(fā)布,F(xiàn)edora 29 已經(jīng)發(fā)布了,但是 IoT 版本并未隨同發(fā)布,或許會(huì)在 Fedora 30 一同發(fā)布?)

你有兩種方法來(lái)安裝這個(gè)系統(tǒng):要么使用 dd 命令燒錄 SD 卡,或者使用 fedora-arm-installer 工具。Fedora 的 Wiki 里面提供了為 IoT 設(shè)置物理設(shè)備 的更多信息。另外,你可能需要調(diào)整第三個(gè)分區(qū)的大小。

把 SD 卡插入到設(shè)備后,你需要?jiǎng)?chuàng)建一個(gè)用戶來(lái)完成安裝。這個(gè)步驟需要串行連接或一個(gè) HDMI 顯示器和鍵盤來(lái)與設(shè)備進(jìn)行交互。

當(dāng)系統(tǒng)安裝完成后,下一步就是要設(shè)置網(wǎng)絡(luò)連接。使用你剛才創(chuàng)建的用戶登錄系統(tǒng),可以使用下列方式之一完成網(wǎng)絡(luò)連接設(shè)置:

  • 如果你需要手動(dòng)配置你的網(wǎng)絡(luò),可能需要執(zhí)行類似如下命令,需要保證設(shè)置正確的網(wǎng)絡(luò)地址:


    1. $ nmcli connection add con-name cable ipv4.addresses \

    2. 192.168.0.10/24 ipv4.gateway 192.168.0.1 \

    3. connection.autoconnect true ipv4.dns "8.8.8.8,1.1.1.1" \

    4. type ethernet ifname eth0 ipv4.method manual

  • 如果你網(wǎng)絡(luò)上運(yùn)行著 DHCP 服務(wù),可能需要類似如下命令:


    1. $ nmcli con add type ethernet con-name cable ifname eth0

Fedora 中的 GPIO 接口

許多關(guān)于 Linux 上 GPIO 的教程都關(guān)注傳統(tǒng)的 GPIO sysfis 接口。這個(gè)接口已經(jīng)不推薦使用了,并且上游 Linux 內(nèi)核社區(qū)由于安全和其他問(wèn)題的緣故打算完全刪除它。

Fedora 已經(jīng)不將這個(gè)傳統(tǒng)的接口編譯到內(nèi)核了,因此在系統(tǒng)上沒(méi)有 /sys/class/gpio 這個(gè)文件。此教程使用一個(gè)上游內(nèi)核提供的一個(gè)新的字符設(shè)備 /dev/gpiochipN 。這是目前和 GPIO 交互的方式。

為了和這個(gè)新設(shè)備進(jìn)行交互,你需要使用一個(gè)庫(kù)和一系列命令行界面的工具。常用的命令行工具比如說(shuō) echocat 在此設(shè)備上無(wú)法正常工作。

你可以通過(guò)安裝 libgpiod-utils 包來(lái)安裝命令行界面工具。python3-libgpiod 包提供了相應(yīng)的 Python 庫(kù)。

使用 Podman 來(lái)創(chuàng)建一個(gè)容器

Podman 是一個(gè)容器運(yùn)行環(huán)境,其命令行界面類似于 Docker。Podman 的一大優(yōu)勢(shì)是它不會(huì)在后臺(tái)運(yùn)行任何守護(hù)進(jìn)程。這對(duì)于資源有限的設(shè)備尤其有用。Podman 還允許您使用 systemd 單元文件啟動(dòng)容器化服務(wù)。此外,它還有許多其他功能。

我們使用如下兩步來(lái)創(chuàng)建一個(gè)容器:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 創(chuàng)建包含所需包的分層鏡像。

  3. 使用分層鏡像創(chuàng)建一個(gè)新容器。

首先創(chuàng)建一個(gè) Dockerfile 文件,內(nèi)容如下。這些內(nèi)容告訴 Podman 基于可使用的*** Fedora 鏡像來(lái)構(gòu)建我們的分層鏡像。然后就是更新系統(tǒng)和安裝一些軟件包:

FROM fedora:latestRUN  dnf -y updateRUN  dnf -y install libgpiod-utils python3-libgpiod

這樣你就完成了鏡像的生成前的配置工作,這個(gè)鏡像基于***的 Fedora,而且包含了和 GPIO 交互的軟件包。

現(xiàn)在你就可以運(yùn)行如下命令來(lái)構(gòu)建你的基本鏡像了:

$ sudo podman build --tag fedora:gpiobase -f ./Dockerfile

你已經(jīng)成功創(chuàng)建了你的自定義鏡像。這樣以后你就可以不用每次都重新搭建環(huán)境了,而是基于你創(chuàng)建的鏡像來(lái)完成工作。

使用 Podman 完成工作

為了確認(rèn)當(dāng)前的鏡像是否就緒,可以運(yùn)行如下命令:

$ sudo podman imagesREPOSITORY                 TAG        IMAGE ID       CREATED          SIZElocalhost/fedora           gpiobase   67a2b2b93b4b   10 minutes ago  488MBdocker.io/library/fedora   latest     c18042d7fac6   2 days ago     300MB

現(xiàn)在,啟動(dòng)容器并進(jìn)行一些實(shí)際的實(shí)驗(yàn)。容器通常是隔離的,無(wú)法訪問(wèn)主機(jī)系統(tǒng),包括 GPIO 接口。因此需要在啟動(dòng)容器時(shí)將其掛載在容器內(nèi)??梢允褂靡韵旅钪械?-device 選項(xiàng)來(lái)解決:

$ sudo podman run -it --name gpioexperiment --device=/dev/gpiochip0 localhost/fedora:gpiobase /bin/bash

運(yùn)行之后就進(jìn)入了正在運(yùn)行的容器中。在繼續(xù)之前,這里有一些容器命令。輸入 exit 或者按下 Ctrl+D 來(lái)退出容器。

顯示所有存在的容器可以運(yùn)行如下命令,這包括當(dāng)前沒(méi)有運(yùn)行的,比如你剛剛創(chuàng)建的那個(gè):

$ sudo podman container ls -aCONTAINER ID   IMAGE             COMMAND     CREATED          STATUS                              PORTS   NAMES64e661d5d4e8   localhost/fedora:gpiobase   /bin/bash 37 seconds ago Exited (0) Less than a second ago           gpioexperiment

使用如下命令創(chuàng)建一個(gè)新的容器:

$ sudo podman run -it --name newexperiment --device=/dev/gpiochip0 localhost/fedora:gpiobase /bin/bash

如果想刪除容器可以使用如下命令:

$ sudo podman rm newexperiment

點(diǎn)亮 LED 燈

現(xiàn)在可以使用已創(chuàng)建的容器。如果已經(jīng)從容器退出,請(qǐng)使用以下命令再次啟動(dòng)它:

$ sudo podman start -ia gpioexperiment

如前所述,可以使用 Fedora 中 libgpiod-utils 包提供的命令行工具。要列出可用的 GPIO 芯片可以使用如下命令:

$ gpiodetectgpiochip0 [pinctrl-bcm2835] (54 lines)

要獲取特定芯片的連線列表,請(qǐng)運(yùn)行:

$ gpioinfo gpiochip0

請(qǐng)注意,物理引腳數(shù)與前一個(gè)命令所打印的連線數(shù)之間沒(méi)有相關(guān)性。重要的是 BCM 編號(hào),如 pinout.xyz 所示。建議不要使用沒(méi)有相應(yīng) BCM 編號(hào)的連線。

現(xiàn)在,將 LED 連接到物理引腳 40,也就是 BCM 21。請(qǐng)記?。篖ED 的短腿(負(fù)極,稱為陰極)必須連接到帶有 330 歐姆電阻的樹莓派的 GND 引腳, 并且長(zhǎng)腿(陽(yáng)極)到物理引腳 40。

運(yùn)行以下命令點(diǎn)亮 LED,按下 Ctrl + C 關(guān)閉:

$ gpioset --mode=wait gpiochip0 21=1

要點(diǎn)亮一段時(shí)間,請(qǐng)?zhí)砑?-b(在后臺(tái)運(yùn)行)和 -s NUM(多少秒)參數(shù),如下所示。 例如,要點(diǎn)亮 LED 5 秒鐘,運(yùn)行如下命令:

$ gpioset -b -s 5 --mode=time gpiochip0 21=1

另一個(gè)有用的命令是 gpioget。 它可以獲得引腳的狀態(tài)(高或低),可用于檢測(cè)按鈕和開關(guān)。

怎么使用Fedora IoT點(diǎn)亮LED燈

以上是“怎么使用Fedora IoT點(diǎn)亮LED燈”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI