张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用
什么是 GPIO
GPIO 是 General Purpose Input Output 的縮寫,即“通用輸入輸出”。 Raspberry Pi 有兩行 GPIO 引腳, Raspberry Pi 通過(guò)這兩行引腳進(jìn)行一些硬件上的擴(kuò)展,與傳感器進(jìn)行交互等等。
Raspberry Pi B+/2B/3B/3B+/Zero 引腳圖
簡(jiǎn)單的講,每一個(gè) GPIO 引腳都有兩種模式:輸出模式(OUTPUT)和輸入模式(INPUT)。輸出模式類似于一個(gè)電源,Raspberry Pi 可以控制這個(gè)電源是否向外供電,比如打開(kāi)外部的 LED 小燈,當(dāng)然最有用的還是向外部設(shè)備發(fā)送信號(hào)。輸入模式相當(dāng)于電源的陰極,還是以 LED 小燈為例,只不過(guò)這次 LED 小燈的陽(yáng)極接著外部電源,一個(gè)電路只有產(chǎn)生電壓差時(shí)才會(huì)有電流,因此要想讓小燈亮需要讓電流流入 Raspberry Pi 中。和輸出模式相反,輸入模式是接收外部設(shè)備發(fā)來(lái)的信號(hào)。
GPIO 通常采用標(biāo)準(zhǔn)邏輯電平,即高電平和低電平,用二進(jìn)制 0 和 1 表示。在這兩值中間還有閾值電平,即高電平和低電平之間的界限。 Arduino 會(huì)將 -0.5 ~ 1.5 V 讀取為低電平,3 ~ 5.5 V 讀取為高電平, Raspberry Pi 未查到相關(guān)資料。GPIO 還可用于中斷請(qǐng)求,即設(shè)置 GPIO 為輸入模式,值達(dá)到相應(yīng)的要求時(shí)進(jìn)行中斷。
相關(guān)類(Class)
此處默認(rèn)各位是面向?qū)ο蟮某绦騿T,具有一定的 C# 基礎(chǔ),這里只介紹本人認(rèn)為常用的方法,介紹將以代碼注釋的形式體現(xiàn)。
GPIO 操作主要依賴于兩個(gè)類:?GpioController?、?GpioPin?。這兩個(gè)類位于?System.Devices.Gpio?名稱空間下。
GpioController
GpioPin
人體紅外傳感器實(shí)驗(yàn)
示例地址:https://github.com/ZhangGaoxing/dotnet-core-iot-demo/tree/master/src/PIR
人體紅外傳感器是基于周圍區(qū)域的紅外熱來(lái)檢測(cè)運(yùn)動(dòng)的,也稱被動(dòng)紅外傳感器(Passive Infra-Red, PIR)。
這里使用的是 HC-SR501 。當(dāng)傳感器檢測(cè)到人體時(shí),LED 小燈亮,當(dāng)傳感器未檢測(cè)到人體時(shí),LED 小燈滅。
傳感器圖像
HC-SR501
硬件
| HC-SR501 | x1 |
| LED 小燈 | x1 |
| 220 Ω 電阻 | x1 |
| 杜邦線 | 若干 |
電路
HC-SR501
VCC - 5V
GND - GND
OUT - GPIO 17
LED
VCC & 220 Ω resistor - GPIO 27
GND - GND
代碼
打開(kāi) Visual Studio ,新建一個(gè) .NET Core 控制臺(tái)應(yīng)用程序,項(xiàng)目名稱為“PIR”。
引入?System.Devices.Gpio?NuGet 包。
新建類?HCSR501,替換如下代碼(此處略有精簡(jiǎn),只為必要的代碼,不包含自定義事件,詳細(xì)可查看提供的示例):
?Program.cs?中,將主函數(shù)代碼替換如下:
發(fā)布、拷貝、更改權(quán)限、運(yùn)行
效果圖
?如何改進(jìn)?
剔除主函數(shù)循環(huán),嘗試在自定義事件中進(jìn)行檢測(cè),即 GpioPin 的 ValueChanged 事件。
原文地址:https://www.cnblogs.com/zhanggaoxing/p/10327917.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Reactive Extensions
- 下一篇: asp.net ajax控件工具集 Au