新聞中心
這篇文章主要介紹怎么使用Fedora IoT點亮LED燈,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站是一家專業(yè)從事成都網站建設、成都做網站、網頁設計的品牌網絡公司。如今是成都地區(qū)具影響力的網站設計公司,作為專業(yè)的成都網站建設公司,創(chuàng)新互聯(lián)建站依托強大的技術實力、以及多年的網站運營經驗,為您提供專業(yè)的成都網站建設、營銷型網站建設及網站設計開發(fā)服務!
什么是 Fedora IoT?
Fedora IoT 是當前 Fedora 項目的目標之一,計劃成為一個完整的 Fedora 版本。Fedora IoT 將是一個在 ARM(目前僅限 aarch74)設備上(例如樹莓派),以及 x86_64 架構上運行的系統(tǒng)。
Fedora IoT 基于 OSTree 開發(fā),就像 Fedora Silverblue 和以往的 Atomic Host。
下載和安裝 Fedora IoT
官方 Fedora IoT 鏡像將和 Fedora 29 一起發(fā)布。但是在此期間你可以下載 基于 Fedora 28 的鏡像 來進行這個實驗。(LCTT 譯注:截止至本譯文發(fā)布,F(xiàn)edora 29 已經發(fā)布了,但是 IoT 版本并未隨同發(fā)布,或許會在 Fedora 30 一同發(fā)布?)
你有兩種方法來安裝這個系統(tǒng):要么使用 dd
命令燒錄 SD 卡,或者使用 fedora-arm-installer
工具。Fedora 的 Wiki 里面提供了為 IoT 設置物理設備 的更多信息。另外,你可能需要調整第三個分區(qū)的大小。
把 SD 卡插入到設備后,你需要創(chuàng)建一個用戶來完成安裝。這個步驟需要串行連接或一個 HDMI 顯示器和鍵盤來與設備進行交互。
當系統(tǒng)安裝完成后,下一步就是要設置網絡連接。使用你剛才創(chuàng)建的用戶登錄系統(tǒng),可以使用下列方式之一完成網絡連接設置:
如果你需要手動配置你的網絡,可能需要執(zhí)行類似如下命令,需要保證設置正確的網絡地址:
$ nmcli connection add con-name cable ipv4.addresses \
192.168.0.10/24 ipv4.gateway 192.168.0.1 \
connection.autoconnect true ipv4.DNS "8.8.8.8,1.1.1.1" \
type ethernet ifname eth0 ipv4.method manual
如果你網絡上運行著 DHCP 服務,可能需要類似如下命令:
$ nmcli con add type ethernet con-name cable ifname eth0
Fedora 中的 GPIO 接口
許多關于 Linux 上 GPIO 的教程都關注傳統(tǒng)的 GPIO sysfis 接口。這個接口已經不推薦使用了,并且上游 Linux 內核社區(qū)由于安全和其他問題的緣故打算完全刪除它。
Fedora 已經不將這個傳統(tǒng)的接口編譯到內核了,因此在系統(tǒng)上沒有 /sys/class/gpio
這個文件。此教程使用一個上游內核提供的一個新的字符設備 /dev/gpiochipN
。這是目前和 GPIO 交互的方式。
為了和這個新設備進行交互,你需要使用一個庫和一系列命令行界面的工具。常用的命令行工具比如說 echo
和 cat
在此設備上無法正常工作。
你可以通過安裝 libgpiod-utils 包來安裝命令行界面工具。python3-libgpiod 包提供了相應的 Python 庫。
使用 Podman 來創(chuàng)建一個容器
Podman 是一個容器運行環(huán)境,其命令行界面類似于 Docker。Podman 的一大優(yōu)勢是它不會在后臺運行任何守護進程。這對于資源有限的設備尤其有用。Podman 還允許您使用 systemd 單元文件啟動容器化服務。此外,它還有許多其他功能。
我們使用如下兩步來創(chuàng)建一個容器:
鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術社區(qū)
創(chuàng)建包含所需包的分層鏡像。
使用分層鏡像創(chuàng)建一個新容器。
首先創(chuàng)建一個 Dockerfile 文件,內容如下。這些內容告訴 Podman 基于可使用的*** Fedora 鏡像來構建我們的分層鏡像。然后就是更新系統(tǒng)和安裝一些軟件包:
FROM fedora:latestRUN dnf -y updateRUN dnf -y install libgpiod-utils python3-libgpiod
這樣你就完成了鏡像的生成前的配置工作,這個鏡像基于***的 Fedora,而且包含了和 GPIO 交互的軟件包。
現(xiàn)在你就可以運行如下命令來構建你的基本鏡像了:
$ sudo podman build --tag fedora:gpiobase -f ./Dockerfile
你已經成功創(chuàng)建了你的自定義鏡像。這樣以后你就可以不用每次都重新搭建環(huán)境了,而是基于你創(chuàng)建的鏡像來完成工作。
使用 Podman 完成工作
為了確認當前的鏡像是否就緒,可以運行如下命令:
$ 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)在,啟動容器并進行一些實際的實驗。容器通常是隔離的,無法訪問主機系統(tǒng),包括 GPIO 接口。因此需要在啟動容器時將其掛載在容器內??梢允褂靡韵旅钪械?-device
選項來解決:
$ sudo podman run -it --name gpioexperiment --device=/dev/gpiochip0 localhost/fedora:gpiobase /bin/bash
運行之后就進入了正在運行的容器中。在繼續(xù)之前,這里有一些容器命令。輸入 exit
或者按下 Ctrl+D
來退出容器。
顯示所有存在的容器可以運行如下命令,這包括當前沒有運行的,比如你剛剛創(chuàng)建的那個:
$ 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)建一個新的容器:
$ sudo podman run -it --name newexperiment --device=/dev/gpiochip0 localhost/fedora:gpiobase /bin/bash
如果想刪除容器可以使用如下命令:
$ sudo podman rm newexperiment
點亮 LED 燈
現(xiàn)在可以使用已創(chuàng)建的容器。如果已經從容器退出,請使用以下命令再次啟動它:
$ sudo podman start -ia gpioexperiment
如前所述,可以使用 Fedora 中 libgpiod-utils 包提供的命令行工具。要列出可用的 GPIO 芯片可以使用如下命令:
$ gpiodetectgpiochip0 [pinctrl-bcm2835] (54 lines)
要獲取特定芯片的連線列表,請運行:
$ gpioinfo gpiochip0
請注意,物理引腳數(shù)與前一個命令所打印的連線數(shù)之間沒有相關性。重要的是 BCM 編號,如 pinout.xyz 所示。建議不要使用沒有相應 BCM 編號的連線。
現(xiàn)在,將 LED 連接到物理引腳 40,也就是 BCM 21。請記?。篖ED 的短腿(負極,稱為陰極)必須連接到帶有 330 歐姆電阻的樹莓派的 GND 引腳, 并且長腿(陽極)到物理引腳 40。
運行以下命令點亮 LED,按下 Ctrl + C
關閉:
$ gpioset --mode=wait gpiochip0 21=1
要點亮一段時間,請?zhí)砑?-b
(在后臺運行)和 -s NUM
(多少秒)參數(shù),如下所示。 例如,要點亮 LED 5 秒鐘,運行如下命令:
$ gpioset -b -s 5 --mode=time gpiochip0 21=1
另一個有用的命令是 gpioget
。 它可以獲得引腳的狀態(tài)(高或低),可用于檢測按鈕和開關。
以上是“怎么使用Fedora IoT點亮LED燈”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標題:怎么使用FedoraIoT點亮LED燈
文章來源:http://www.dlmjj.cn/article/ghphse.html