張高興的 .NET Core IoT 入門指南:環(huán)境配置矾飞、Blink一膨、部署

獲取最佳閱讀體驗(yàn)請?jiān)L問:https://zhangyue.xin

如何在 Raspberry Pi 的 Raspbian 上構(gòu)建使用 GPIO 引腳的 IoT 程序?你可能會回答使用 C++ 或 Python 去訪問 Raspberry Pi 的引腳∪髀伲現(xiàn)在豹绪,C# 程序員可以使用 .NET Core 在 Raspbian(Linux) 上構(gòu)建 IoT 應(yīng)用程序。只需要引入 System.Device.GPIO NuGet 包即可申眼。

注意:System.Device.GPIO 仍處于早期預(yù)覽狀態(tài)瞒津。并且目前僅支持部分 Raspberry Pi 、 Pine64 和 Hummingboard 的板子括尸。

若要繼續(xù)閱讀下面的內(nèi)容巷蚪,你需要準(zhǔn)備:

  1. 安裝有 Linux 的 Raspberry Pi 2B/3B/3B+
  2. Visual Studio 2017
  3. 用于構(gòu)建程序的 .NET Core SDK (版本大于 2.1)

環(huán)境配置

  1. 首先在 Raspbian 的 Terminal 上運(yùn)行如下命令,以安裝運(yùn)行程序所依賴的程序包濒翻。

    sudo apt-get update
    sudo apt-get install curl libunwind8 gettext apt-transport-https
    

    提示:
    1. 遠(yuǎn)程訪問 Raspbian 可以使用 putty 通過 SSH 進(jìn)行訪問屁柏,也可以使用 apt 安裝 xrdp ,通過 Windows 遠(yuǎn)程桌面進(jìn)行訪問有送。
    2. 運(yùn)行 ASP.NET Core 程序還需要安裝運(yùn)行時(shí)(Runtime)淌喻。安裝可以參考這個(gè)。(不管是 3B 還是 3B+ 雀摘,Raspbian 的內(nèi)核都為 32 位裸删,部分 ASP.NET Core 常用的 NuGet 包并不支持 arm32)

  2. 打開菜單中的 Raspberry Pi 配置,獲取必要的硬件接口的訪問權(quán)限阵赠。

  3. 打開 Visual Studio 的設(shè)置涯塔,在 NuGet 包管理器設(shè)置下,添加 .NET Core Lab 的程序包源:https://dotnet.myget.org/F/dotnet-corefxlab/api/v3/index.json

Blink

熟悉 Arduino 的朋友都知道清蚀,Blink 是默認(rèn)燒寫進(jìn) Arduino 的初始程序匕荸,控制板載連接 13 號引腳的 LED 閃爍。是一種類似于“Hello World”的存在轧铁。這里我們將 LED 小燈連接至 Raspberry Pi 的 GPIO 17 引腳每聪。

硬件

  1. 一顆 LED 小燈
  2. 一個(gè) 220 Ω 電阻
  3. 若干杜邦線

電路

圖源:https://github.com/dotnet/iot/tree/master/samples/led-blink

代碼

  1. 打開 Visual Studio ,新建一個(gè) .NET Core 控制臺應(yīng)用程序齿风,項(xiàng)目名稱為“Blink”药薯。


  2. 打開 “工具”——“NuGet包管理器”——“程序包管理器控制臺”,運(yùn)行如下命令救斑,以獲取程序包童本。

    Install-Package System.Devices.Gpio -Version 0.1.0-preview2-181222-2
    
  3. 在 Program.cs 中,替換如下代碼:

    using System;
    using System.Devices.Gpio;
    using System.Threading;
    
    namespace Blink
    {
        class Program
        {
            static void Main(string[] args)
            {
                // get the GPIO controller
                // 獲取 GPIO 控制器
                GpioController controller = new GpioController(PinNumberingScheme.Gpio);
                // open PIN 17
                // 打開引腳 17
                GpioPin ledPin = controller.OpenPin(17, PinMode.Output);
    
                // define delay time
                // 設(shè)置延遲時(shí)間
                int time = 1000;
    
                // loop
                // 循環(huán)
                while (true)
                {
                    Console.WriteLine($"Light for {time}ms");
                    // turn the LED on
                    // 打開 LED
                    ledPin.Write(PinValue.High);
                    // wait for a second
                    // 等待 1s
                    Thread.Sleep(time);
    
                    Console.WriteLine($"Dim for {time}ms");
                    // turn the LED off
                    // 關(guān)閉 LED
                    ledPin.Write(PinValue.Low);
                    // wait for a second
                    // 等待 1s
                    Thread.Sleep(time);
                }
            }
        }
    }
    

部署

  1. 在“程序包管理器控制臺”運(yùn)行發(fā)布命令:

    dotnet publish -c release -r linux-arm
    

    提示:
    默認(rèn)的發(fā)布路徑是在 “\Blink\bin\Release\netcoreappXXX\win10-arm\publish”脸候。你也可以使用 -o 來指定發(fā)布路徑穷娱,如:-o D:\BlinkPublish 绑蔫,這將會發(fā)布在 D 盤的 BlinkPublish 文件夾下。

  2. 使用 FTP 工具將生成的發(fā)布文件夾復(fù)制到 Raspberry Pi 上泵额,這里使用的是 WinSCP 配深。

    提示:
    Raspbian 使用 FTP 服務(wù),請使用 apt 安裝 vsftpd 嫁盲。

  3. 更改程序權(quán)限篓叶。使用 cd 命令切換到發(fā)布的文件夾,運(yùn)行:

    chmod 755 ./Blink
    

    或使用 FTP 工具進(jìn)行變更

  4. 執(zhí)行 ./Blink 運(yùn)行程序羞秤,此時(shí) LED 小燈應(yīng)該一閃一閃的了缸托。

備注:
下一篇文章將使用紅外傳感器進(jìn)一步熟悉 GPIO 的操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘾蛋,一起剝皮案震驚了整個(gè)濱河市俐镐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哺哼,老刑警劉巖佩抹,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幸斥,居然都是意外死亡匹摇,警方通過查閱死者的電腦和手機(jī)咬扇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門甲葬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人懈贺,你說我怎么就攤上這事经窖。” “怎么了梭灿?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵画侣,是天一觀的道長。 經(jīng)常有香客問我堡妒,道長配乱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任皮迟,我火速辦了婚禮搬泥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伏尼。我一直安慰自己忿檩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布爆阶。 她就那樣靜靜地躺著燥透,像睡著了一般沙咏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上班套,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天肢藐,我揣著相機(jī)與錄音,去河邊找鬼吱韭。 笑死窖壕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杉女。 我是一名探鬼主播瞻讽,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熏挎!你這毒婦竟也來了速勇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坎拐,失蹤者是張志新(化名)和其女友劉穎烦磁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哼勇,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡都伪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了积担。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陨晶。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖帝璧,靈堂內(nèi)的尸體忽然破棺而出先誉,到底是詐尸還是另有隱情,我是刑警寧澤的烁,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布褐耳,位于F島的核電站,受9級特大地震影響渴庆,放射性物質(zhì)發(fā)生泄漏铃芦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一襟雷、第九天 我趴在偏房一處隱蔽的房頂上張望刃滓。 院中可真熱鬧,春花似錦嗤军、人聲如沸注盈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽老客。三九已至僚饭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胧砰,已是汗流浹背鳍鸵。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尉间,地道東北人偿乖。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像哲嘲,于是被迫代替她去往敵國和親贪薪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容