自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

系統(tǒng) | 如何使用Fedora IoT點亮LED燈

系統(tǒng) Linux
如果你喜歡 Fedora、容器,而且有一塊樹莓派,那么這三者結(jié)合操控 LED 會怎么樣?本文介紹的是 Fedora IoT,將展示如何在樹莓派上安裝預(yù)覽鏡像。還將學(xué)習(xí)如何與 GPIO 交互以點亮 LED。

 [[253418]]

如果你喜歡 Fedora、容器,而且有一塊樹莓派,那么這三者結(jié)合操控 LED 會怎么樣?本文介紹的是 Fedora IoT,將展示如何在樹莓派上安裝預(yù)覽鏡像。還將學(xué)習(xí)如何與 GPIO 交互以點亮 LED。

什么是 Fedora IoT?

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

[[253419]]

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

下載和安裝 Fedora IoT

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

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

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

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

  • 如果你需要手動配置你的網(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ò)上運行著 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 接口。這個接口已經(jīng)不推薦使用了,并且上游 Linux 內(nèi)核社區(qū)由于安全和其他問題的緣故打算完全刪除它。

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

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

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

使用 Podman 來創(chuàng)建一個容器

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

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

  1. 創(chuàng)建包含所需包的分層鏡像。
  2. 使用分層鏡像創(chuàng)建一個新容器。

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

  1. FROM fedora:latest
  2. RUN dnf -y update
  3. RUN dnf -y install libgpiod-utils python3-libgpiod

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

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

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

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

使用 Podman 完成工作

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

  1. $ sudo podman images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. localhost/fedora gpiobase 67a2b2b93b4b 10 minutes ago 488MB
  4. docker.io/library/fedora latest c18042d7fac6 2 days ago 300MB

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

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

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

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

  1. $ sudo podman container ls -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 64e661d5d4e8 localhost/fedora:gpiobase /bin/bash 37 seconds ago Exited (0) Less than a second ago gpioexperiment

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

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

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

  1. $ sudo podman rm newexperiment

點亮 LED 燈

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

  1. $ sudo podman start -ia gpioexperiment

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

  1. $ gpiodetect
  2. gpiochip0 [pinctrl-bcm2835] (54 lines)

要獲取特定芯片的連線列表,請運行:

  1. $ gpioinfo gpiochip0

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

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

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

  1. $ gpioset --mode=wait gpiochip0 21=1

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

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

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

[[253420]]

總結(jié)

你也可以使用 Python 操控 LED —— 這里有一些例子。 也可以在容器內(nèi)使用 i2c 設(shè)備。 此外,Podman 與此 Fedora 版本并不嚴(yán)格相關(guān)。你可以在任何現(xiàn)有的 Fedora 版本上安裝它,或者在 Fedora 中使用兩個基于 OSTree 的新系統(tǒng)進(jìn)行嘗試:Fedora SilverblueFedora CoreOS。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-09-06 15:35:14

2022-02-14 14:28:57

驅(qū)動開發(fā)鴻蒙系統(tǒng)

2020-08-25 10:49:46

物聯(lián)網(wǎng)智慧城市技術(shù)

2022-11-04 15:10:31

JS應(yīng)用LED燈

2020-11-13 11:53:52

4.WiFi IoT

2009-12-24 09:43:49

Fedora Core

2017-06-14 13:28:25

2019-08-20 13:22:36

LVMFedoraLinux

2014-07-31 13:15:45

WiFi LED

2021-07-25 10:34:17

FedoraPodmanLinux

2019-11-08 12:07:04

FedoraLinux更新系統(tǒng)

2010-01-11 09:12:15

Fedora LAMP

2022-01-07 09:56:16

鴻蒙HarmonyOS應(yīng)用

2022-08-05 19:37:59

鴻蒙Api框架

2016-11-16 17:41:10

2018-06-11 09:55:09

LinuxFedorazsh

2009-07-16 10:53:33

互聯(lián)網(wǎng)

2019-01-30 14:04:57

Fedora存儲庫

2021-09-16 10:03:39

鴻蒙HarmonyOS應(yīng)用

2010-01-11 18:21:12

Fedora reis
點贊
收藏

51CTO技術(shù)棧公眾號