乾貨回顧 | VS Code 在 IoT 工程項目中的應用

VS Code 在 IoT 工程項目中的應用

時間:9月24日(週四)19:30 - 21:30git

視頻回放:https://b23.tv/RkvmXvgithub

主講嘉賓介紹

綿旗,高級電工web

熟悉模電、數電。使用過MCS-5一、 AVR、PIC、MSP430、STM八、STM3二、 EFM8等單片機,在MCU軟件編程領域內探索較廣。曾從事電子工程專業的實踐教學工做。編程

大綱

  1. 一個 IoT 項目的實例展現(硬件組成介紹)
  2. VS Code 在該 IoT 項目實施中的應用(結合 Arduino 和 PlatformIO 兩個插件,講解 VS Code 在 IoT 項目的用法)
  3. IoT 項目實施前須要瞭解的細節( MCU 與通訊方式)
  4. 常見 IDE 簡介
  5. 選擇 VS Code 的理由

一個 IoT 項目的實例展現

主講人首先展現了一個 IoT 的項目。經過 Android 移動電話,實時更新 LED 與液晶顯示屏 LCD 的內容。json

項目結構

首先,老師經過一個視頻介紹了項目結構。微信

這個電子工程項目從硬件上來講,由7部分組成:移動電話、LED、LCD、電源部分、LCD的對比度調整部分、芯片以及藍牙模塊。工程項目主體部分是:移動電話、LED、LCD、芯片以及藍牙模塊。核心是 ATmega328p 這個芯片。ATmega328p 所在的麪包板上是一個 Arduino UNO 的最小系統,最小系統是讓 ATmega328p 可以工做的最低電路配置。異步

這個最低電路配置由三部分組成:電源部分、晶體振盪器部分、重啓部分。而如何講代碼或者說程序配置到芯片中呢?這即是 VS Code 參與的工做部分。在 VS Code 中,編寫程序、並編譯成可執行文件,最終經過另一個硬件 programmer 將程序導入到芯片中。編輯器

項目演示

接着,老師經過視頻演示了Android智能電話遙控的LCD屏內容實時更新系統。具體內容爲:工具

  • LED 的開/關及在 LCD 上的狀態顯示;
  • 在 LCD 上顯示一個字符串。

這個項目演示了一部 Android 移動電話,經過藍牙模塊,以藍牙通訊的方式把信號發送給微型控制器,讓微型控制器的輸出端顯示移動電話發送的內容。flex

LCD12864 與 UNO 接線(原理圖)

物聯網強調「聯」字,老師認爲有必要經過接線來說解一下原理。

在如上有線通訊中,使用了SPI串行外部接口的方式。

UNO 最小系統實物照(麪包板)

這個最小系統由3部分組成:

  • 電源:1個穩壓器 + 3個濾波電容器
  • 晶體振盪器:晶體振盪器 + 2個濾波電容器,負責給芯片提供外部時鐘信號
  • 重啓電路:上拉電阻器 + 按鈕開關

咱們作物聯網項目時,也要考慮這些最小系統配置。

以 ATmega328p 爲例介紹 VS Code 的兩個插件

Arduino 插件

值得注意的是,VS Code Arduino 與 PlatformIO 並不兼容。

在安裝 Arduino 插件後,配置其路徑很重要。

即使在 VS Code 中安裝了插件,咱們仍是要依賴 Arduino IDE 。安裝插件只是爲了在 VS Code 中書寫代碼,其運算仍是要依賴 Arduino IDE 。

既然如此,爲什麼還要使用 VS Code 呢?

  • Arduino IDE 沒有代碼補全功能, VS Code 有。

PlatformIO 插件

主講老師建議,若是用 Arduino 很熟了,能夠考慮更換爲 PlatformIO 這個插件。老師的 IoT 項目也是用 PlatformIO 作的。

PlatformIO 相比 Arduino IDE 的優點有:

  • PlatformIO 支持 800 多種芯片及板材,而 Arduino IDE 遠小於此。

此外,老師建議從插件首頁創建項目,以此下降軟件故障率。

主講老師強調了如上方式,在 PlatformIO 插件中查找及安裝 Libray 庫。

在 PlatformIO 中,還能夠在上述頁面中自行識別鏈接到計算機的串行通訊口。

實時演示

老師在視頻 21:15 部分開始,實時演示了 VS Code 中 PlatformIO 的使用。

老師演示使用的編程器是 Atmel ICE ,在 VS Code 與芯片之間起到轉接的做用。

常見故障:對 platformio.ini 修改

在 IoT 的配置中,出現故障很常見。

如上,爲了使用 Atmel ICE ,老師在配置文件中增長了相應配置:

upload_protocol = atmelice_isp

upload flags = -e
upload port = usb

解決問題方法論

首先,老師前往 bing 檢索故障代碼。

在檢索結果中,找到了相同的問題。如上。

最後,老師閱讀了問題的討論、相關博客,找到了緣由與解決方案:

  • Atmel ICE 在出廠時,其 usb 驅動程序是原廠提供的;
  • 可是想要在 VS Code 中使用 PlatformIO 插件 ,必須轉換 usb 驅動程序;
  • 驅動程序能夠在 zadig.akeo.ie 下載,在該頁面有驅動程序詳細的注意事項。

老師想強調的是「本身解決問題的能力」:

  • 除了推薦 bing ;
  • 還推薦 github 上使用 issues 交流;
  • 還推薦 StackOverflow 檢索交流;
  • 此外,對於 PlatformIO ,其自己也是個很是活躍的社區,也可在其上檢索。

創建項目

如上,老師創建了 Atmel + UNO 創建了最小系統。

實施一個 IoT 項目前須要理解的細節

  • loT: Internet of Things -物聯網
  • 兩個核心:「聯」 and 「物」
  • 「聯」 - 通聯 - 通訊 - communication
  • "物」( MCU 的硬件選型):
    • 從用戶(user), 也就是消費者(consumer)的角度理解: target(目標,對象)
    • 舉例:電視機、電冰箱、洗衣機、腕錶。。。

從開發者(developer), 也就是工程師(engineer)、 設計者(designer)的角度看: chip(芯片) - device(設備)。

構思一個項目前的考量

  • 項目自己 - 應用場景(相似於「盈利模式")
  • 硬件 - 成本(cost)、環境、通訊方式

關於 MCU 芯片

  • 目前主流的芯片都是基於 ARM 的 32 位機
  • 部分廠家有本身的16位機:Microchip (微芯)、Texas Instruments (德州儀器)
  • 幾乎全部的芯片廠家都起步於8位機:英飛凌(Infineon)、恩智浦(NXP)、 芯聯科技(Silicon Labs)、 意法半導體(ST)、 美西(Maxim).....

物聯網項目在計算機中的做用

物聯網使用的是 MCU , MCU 處於計算機體系的底層,底層並不意味着其技術含量低,只是說其結構簡單;比 MCU 複雜一點的是 SoC (system on a chip), SoC 是系統級芯片,比單片機複雜一點的單片機。

比較有名的 SoC 是樹莓派。

再複雜一點的是 PC 了。

關於物聯網特別的要提到 MCU :Espressif 

如上爲兩款最有名的芯片,左邊的 esp8266 內置了 wifi 功能;右邊的 esp32 內置了 wifi 與藍牙功能。這兩款芯片功能強、價格低、穩定性好,知名度高,而且仍是國產芯片。

MCU 級別的經常使用通訊方式

有線:

  • UART
  • SPI
  • IIC

無線:

  • Bluetooth
  • wifi
  • Zigbee
  • Ant+
  • NB-IoT
  • LoWa
  • RF - 443MHz、315MHz
  • IrDA
  • ultrasonic

UART 原理

接着老師介紹了 UART (通用異步收發傳輸器)原理。傳輸兩者不分主次。

對於 usb 口,其使用的是 UART 模式。

SPI - Serial Peripheral Interface

這種方式存在「一主多從」的關係。其中,「從」 slave 能夠是並行的,或者是有前後關係的。

無線電頻譜

老師提到了無線電頻譜,注意到這裏2.4G的無線電頻譜對應出現了 ZigBee 、出現了 Bluetooth 藍牙、出現了 BLE 低功耗的藍牙、出現了 WiFi 。這意味着藍牙、 WiFi 、 Zigbee 都是無線電通訊,只不過跟咱們一般意義上的無線電通訊相比,它們的頻率更高一些而已,達到了2.4G。

這裏提到頻譜,爲近兩年出現的另外兩種無線電通訊方式高影響力作鋪墊:窄帶IoT、勞拉。

窄帶IoT、勞拉的出現背景是:現有的頻譜資源很緊張,所以在硬件上想辦法。

此外,主講老師提到了:使用簡單的 RF transmitter 與 receiver 模塊並無問題,根據需求來就好。

老師還介紹了其餘無線通訊方式:紅外(已經到光譜的頻域)、超聲波等。

此時不得不提到「庫」。別人(一般是專業廠家)將信號處理的部分的代碼封裝好,便於工程師將精力集中在邏輯與功能上。

「庫」就涉及到 IDE 了。

常見 IDE 簡介

如上,是老師接觸過的 IDE 。不少 IDE 來自硬件廠家,也有些專門製做 IDE 的企業。

起步比較早的 IDE 有 IAR 、 ARMKEIL 如上。

此外,還有有趣而不簡單的 ARDUINO ,有故事的 energia.nu (The Untold History of ARDUINO)。

關於 IDE 的幾個共同點

  1. 術業有專攻:幾乎沒有芯片廠家本身編寫的 IDE, 要麼委託專門的IDE團隊改造,要麼本身改裝開源的 IDE 。
  2. 無論 IDE 的來源是什麼, GCC 編譯器是標配,包括 VS Code 。
  3. 標準完整的 IDE 要涵蓋四個環節一編輯(edit)、編譯(build)、 上載(program)、調試(debug)。

必需要提的物聯網 IDE :RT-Thread Studio

RT-Thread Studio免 費開源,且以面向物聯網的定位而出現,其核心部件從 2006 年就開始,且是國產。在上半年,已經在 6億+ 芯片上安裝。

初學者選擇 VS Code 的理由

  • Arduino IDE 中沒有的代碼補全功能
  • 經過插件能夠選用比 Arduino IDE 中更多芯片型號
  • 結合了 GUI 和 CLI 界面:.json 文件、 Terminal 與 CMD 對話框
  • 後發優點:IDE 功能的集大成
  • 品牌感召力:以 RT-Thread 爲例(即使是像 RT-Thread 這樣相對小一些的工具,也會及時給 VS Code 提供本身的插件。由於,這是一種專業水準的體現)。

一個可進階步驟

  1. Arduino IDE (簡單,可是初學者要的功能都有)
  2. VS Code + Arduino
  3. VS Code + PlatformIO
  4. Atmel Studio + Atmel IDE + AVR

上述進階步驟通過老師實踐,認爲有必定可行性。


點擊「閱讀原文」查看視頻回放

本文分享自微信公衆號 - VS Code 中文社區(vscodecc)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索