物聯(lián)網(wǎng),尤其是工業(yè)物聯(lián)網(wǎng) (IIoT),不僅要在很多業(yè)務(wù)部門(mén)之間產(chǎn)生變革性的影響,還要為嵌入式 IIoT 解決方案的開(kāi)發(fā)帶來(lái)根本性的轉(zhuǎn)變。很多負(fù)責(zé)此類(lèi)項(xiàng)目的工程師選擇市售的單板計(jì)算機(jī) (SBC) 作為設(shè)計(jì)的基礎(chǔ)。盡管這種方法可以快速產(chǎn)生結(jié)果,但也會(huì)讓開(kāi)發(fā)人員難以輕松地將最終的設(shè)計(jì)付諸大批量生產(chǎn)。當(dāng)選擇原型開(kāi)發(fā)平臺(tái)時(shí),一定要仔細(xì)檢查作為設(shè)計(jì)基礎(chǔ)的 MCU 以及各種支持元件,以了解它們是否可以單獨(dú)購(gòu)買(mǎi)并能夠從頭集成到新的設(shè)計(jì)中。
本文將重點(diǎn)介紹用于物聯(lián)網(wǎng)設(shè)計(jì)的簡(jiǎn)單溫度傳感器平臺(tái)的設(shè)計(jì),還將重點(diǎn)說(shuō)明所使用的個(gè)別元件。此外,此平臺(tái)不僅用于驗(yàn)證設(shè)計(jì)理念,還將展示如何利用功耗調(diào)查對(duì)開(kāi)發(fā)進(jìn)行微調(diào)以及如何優(yōu)化功耗。
圖 1: IIoT 溫度傳感器的基本功能要求
考慮圖 1 中所示的簡(jiǎn)單溫度傳感器設(shè)計(jì)。此圖突出顯示了需要為將自身的數(shù)據(jù)存儲(chǔ)在云平臺(tái)上的電池供電型溫度傳感器設(shè)計(jì)的基本功能塊。微控制器 (MCU) 會(huì)按預(yù)設(shè)的時(shí)間間隔輪詢(xún)溫度傳感器,然后使用無(wú)線(xiàn)設(shè)備建立通信鏈路并向負(fù)責(zé)接收數(shù)據(jù)的云應(yīng)用程序發(fā)送數(shù)據(jù)。對(duì)設(shè)計(jì)工程師而言,在選擇要使用的元件時(shí)需要做出很多個(gè)人決定,這些決定會(huì)影響物料清單成本。例如,溫度傳感器可能包括專(zhuān)用的溫度傳感器(例如Analog Devices 推出的暢銷(xiāo) TMP36 系列),或者更加全面的溫度、濕度和氣壓組合傳感器(例如 Bosch Sensortec BME280),或者 Epcos-TDK 推出的普通表面貼裝 PTC 熱敏電阻器。成本只是其中一個(gè)考慮因素,還需要考慮精度、容差和接口方法。選擇的傳感器還會(huì)決定 MCU 規(guī)格。如果使用經(jīng)濟(jì)實(shí)惠的熱敏電阻器,在所需的溫度范圍可能無(wú)法與溫度呈線(xiàn)性關(guān)系,因此需要通過(guò)軟件執(zhí)行某種程度的斜率計(jì)算。盡管實(shí)現(xiàn)此目的所需的 MCU 資源數(shù)量是最少的,但仍需要加以考慮。從另一個(gè)極端來(lái)看,BME280 需要與主機(jī) MCU 進(jìn)行 SPI 或 I2C 通信,因此需要使用一個(gè)具有這些接口功能并能夠控制傳感器和處理更多數(shù)據(jù)的設(shè)備。對(duì)于通信方法,也同樣需要做出很多關(guān)鍵決定。最重要的決定或許是要使用的無(wú)線(xiàn)協(xié)議,最常用的協(xié)議是藍(lán)牙和 Wi-Fi。藍(lán)牙可進(jìn)行短距離的通信,適合傳輸相對(duì)較少的數(shù)據(jù),通常與網(wǎng)關(guān)設(shè)備進(jìn)行通信,網(wǎng)關(guān)設(shè)備可能會(huì)首先將數(shù)據(jù)整合,然后再使用長(zhǎng)距離通信協(xié)議(例如 Wi-Fi)進(jìn)一步傳輸這些數(shù)據(jù)。利用傳感器進(jìn)行 Wi-Fi 通信時(shí),無(wú)需使用中間網(wǎng)關(guān),因此可進(jìn)行長(zhǎng)距離通信,適合傳輸更多的數(shù)據(jù),但功耗會(huì)更高。
決定使用無(wú)線(xiàn)通信之后,還需要決定是選擇使用分立方法還是預(yù)認(rèn)證的無(wú)線(xiàn)模塊。除非您的公司擁有自己的射頻專(zhuān)家設(shè)計(jì)團(tuán)隊(duì)且預(yù)期的產(chǎn)量非常高,否則很可能會(huì)使用模塊方法。
這種設(shè)計(jì)的最終功能是電源管理。為傳感器供電的其中一種方法是從可更換的鈕扣電池供電,但也可以使用具有無(wú)線(xiàn)能量收集技術(shù)或小型太陽(yáng)能板的充電電池。此外,如果能夠?qū)?MCU 和無(wú)線(xiàn)模塊置于多種不同的休眠模式,則會(huì)非常有利于降低功耗以延長(zhǎng)電池壽命。通常使用軟件來(lái)以這種方式實(shí)現(xiàn)對(duì)設(shè)備的控制。這種設(shè)計(jì)的其他考慮因素還包括預(yù)期的產(chǎn)量,以及此傳感器是否有可能是公司希望開(kāi)發(fā)并推出的眾多傳感器產(chǎn)品之一。如果是后一種情況,則開(kāi)發(fā)基于平臺(tái)的方案可獲得更多的優(yōu)勢(shì),在該方案中,MCU 和無(wú)線(xiàn)功能在整個(gè)系列內(nèi)都是通用的,每種型號(hào)只有傳感器特定的電路有所不同。
當(dāng)原型開(kāi)發(fā)考慮采用傳感器設(shè)計(jì)(例如前面重點(diǎn)介紹的設(shè)計(jì))時(shí),設(shè)計(jì)工程師可以通過(guò)多種不同的方式搭建設(shè)計(jì)。過(guò)去,制造商的開(kāi)發(fā)套件和評(píng)估板提供了構(gòu)建設(shè)計(jì)基礎(chǔ)的理想學(xué)習(xí)平臺(tái),不過(guò)在很多情況下集成各種功能時(shí),需要執(zhí)行一些設(shè)計(jì)工作和嵌入式開(kāi)發(fā)。但完全集成的新款緊湊型單板計(jì)算機(jī) (SBC) 正日益受到希望最大限度縮短原型開(kāi)發(fā)時(shí)間的工程師的歡迎,這種設(shè)計(jì)足夠開(kāi)源,因此工程師能夠以此 SBC 為中心構(gòu)建最終設(shè)計(jì)的基礎(chǔ)。在這種情況下,必須能夠買(mǎi)到 SBC 的所有核心元件,并且知識(shí)共享許可證必須涵蓋所有的器件庫(kù)。
完全集成的緊湊型 SBC 的一個(gè)很好的例子是 Adafruit Feather M0 Wi-Fi(圖 2)。
圖 2: Adafruit Feather M0 Wi-Fi 單板計(jì)算機(jī)。
Adafruit Feather M0 Wi-Fi 的重量?jī)H為 6.1 克,尺寸僅為 2.1 x 0.9 x 0.3 英寸,配有采用 QFN 封裝并以 48 MHz 頻率運(yùn)行的 Microchip ATSAMD21G18 MCU 以及 256 kB 閃存和 32 kB SRAM。這款采用 Arm? Cortex?-M0 的設(shè)備提供了 20 個(gè)可用的 GPIO 引腳、8 個(gè) PWM 端口、10 個(gè) 12 位的模擬輸入和 1 個(gè) DAC。外設(shè)的串行通信接口包括 SPI、I2C 和 UART。板載 Diodes Inc. AP2112K-3.3 3.3 VDC 穩(wěn)壓器的峰值電流能力為 600 mA,允許整個(gè)開(kāi)發(fā)板通過(guò)微型 USB 連接器供電。邏輯電平保持在 3.3 VDC,因此如果連接到任何 5 VDC 設(shè)備,需要使用電平位移器。此外,該板也可以通過(guò) 3.7 VDC LiPo 電池和微芯片 MCP7331T-2ACI/OT 充電器 IC 結(jié)合供電。已通過(guò)類(lèi)型審批的 FCC 認(rèn)證微芯片 ATWINC1500 模塊配有集成天線(xiàn),可進(jìn)行 2.4 GHz、802.11 b/g/n Wi-Fi 通信。在正常工作條件下,MCU 的板功耗約為 10 mA,無(wú)線(xiàn)模塊傳輸期間的板峰值功耗為 300 mA。
Adafruit Feather M0 Wi-Fi 示意圖如圖 3 所示。
圖 3: Adafruit Feather M0 Wi-Fi 示意圖。
該板的 BOM 包括一個(gè) 32.768 kHz 的晶體、四個(gè) LED 以及幾個(gè)電阻器和電容器。
具有 USB 引導(dǎo)程序的 MCU 允許使用暢銷(xiāo)的 Arduino IDE,為 Feather 產(chǎn)品的軟件開(kāi)發(fā)提供了便利。使用這種方法可以快速開(kāi)發(fā)應(yīng)用程序,而緊湊的 Feather 板可輕松集成到早期小批量生產(chǎn)的測(cè)試版新產(chǎn)品中。專(zhuān)業(yè)開(kāi)發(fā)人員無(wú)需使用 Feather 的 Arduino USB 串行程序和調(diào)試功能,相反,他們可以選擇使用 Atmel 軟件框架 (ASF),此框架使用位于板下側(cè)的 SWDIO/SWCLK 引腳。正如前文所述,成功使用 SBC 為您的設(shè)計(jì)開(kāi)發(fā)原型的關(guān)鍵在于能夠基于 SBC 的核心元件搭建您自己的設(shè)計(jì)。Adafruit Feather M0 無(wú)疑也支持這種方法。MCU 和無(wú)線(xiàn)模塊可在市面上直接夠得,提供多種開(kāi)發(fā)工具和資源。可以在此處找到 Microchip SAMD21G18 微控制器規(guī)格書(shū),此規(guī)格書(shū)詳細(xì)說(shuō)明了可用的器件選項(xiàng)和封裝尺寸。硬件資源包括 ATSAMD21 XPRO 評(píng)估板、內(nèi)容全面的用戶(hù)指南,以及在在線(xiàn)仿真器、編程器和調(diào)試器 (Atmel-ICE),還包括一系列擴(kuò)展板,例如裝有多種傳感器的 ATIO1-XPRO。WINC1500 也受到開(kāi)發(fā)資源的良好支持,包括可與 ATSAMD21 XPRO 配合使用的 XPRO 擴(kuò)展板 ATWINC1500-XPRO。
Feather 提供了一個(gè)可用于驗(yàn)證設(shè)計(jì)理念并開(kāi)發(fā)原型的理想開(kāi)發(fā)平臺(tái),不僅如此,它所基于的所有元件都是現(xiàn)成的,這意味著您也可以信心百倍地將原型設(shè)計(jì)投入到生產(chǎn)設(shè)計(jì)階段。
為了展示為 IoT 應(yīng)用開(kāi)發(fā)原型的便利性,本文引用了一個(gè)示例,此示例將 Feather M0 Wi-Fi 連接到 Microsoft 的 IoT 服務(wù) Azure。
Microsoft Azure 是企業(yè)級(jí)彈性 IIoT 平臺(tái)的一個(gè)很好的例子,它不僅能夠與傳感器和致動(dòng)器設(shè)備建立連接,還為所收集的數(shù)據(jù)提供了全套的存儲(chǔ)和分析應(yīng)用程序。使用此平臺(tái)的免費(fèi)試用版可輕松訪(fǎng)問(wèn)您所需的全部功能。
此應(yīng)用程序展示了 Bosch BME280 溫度、濕度和壓力傳感器的使用,但在此示例中,您無(wú)需將傳感器連接到 Feather 即可仿真要發(fā)送的數(shù)據(jù)。
圖 4: 設(shè)置新的 Azure IoT 中心實(shí)例。
點(diǎn)擊儀表板頁(yè)面頂部的 + New(+ 新建)按鈕并選擇 Internet of Things(物聯(lián)網(wǎng)),然后選擇 IoT Hub(物聯(lián)網(wǎng)中心)。隨后即可指定您的 IoT 中心參數(shù)(名稱(chēng)和資源組),如圖 5 中所示。
圖 5: 在 Microsoft Azure 中設(shè)置 IoT 中心功能。
此設(shè)置過(guò)程的最后一個(gè)階段是在 IoT 中心內(nèi)創(chuàng)建一個(gè)設(shè)備。如圖 6 中所示,添加 Device ID(設(shè)備 ID)為 TempSensor1 的設(shè)備。勾選方框并保存后,會(huì)自動(dòng)生成設(shè)備密鑰。當(dāng)運(yùn)行 Feather 草圖之后,您將需要此設(shè)備的主密鑰。在這一點(diǎn)上可能會(huì)產(chǎn)生混淆,因?yàn)?IoT 中心和每個(gè)設(shè)備都有自己的主密鑰。主密鑰是在系統(tǒng)提示輸入連接字符串時(shí)需要輸入的密鑰(圖 8)。
圖 6: 將 Feather 溫度傳感器作為設(shè)備添加到 IoT 中心。
現(xiàn)在即可運(yùn)行所提供的演示草圖。
假設(shè)您已擁有 Arduino IDE,您只需添加用于 Feather M0 板的支持文件。Adafruit 教程會(huì)指導(dǎo)您完成此過(guò)程。
使用 Blink 示例草圖測(cè)試您的 Feather M0 Wi-Fi 板是一種很好的做法。在繼續(xù)操作之前,確保您能夠編譯和上傳草圖,并且板載引腳 13 LED(位于微型 USB 連接器的旁邊)正確閃爍。
要使用演示草圖,您必須將庫(kù)清單添加到您的 Arduino IDE 環(huán)境中。請(qǐng)注意,對(duì)于 Azure 庫(kù) AzureIoTHub、AzureIoTUtility 和 AzureIoTProtocol_HTTP,您需要安裝 1.0.21 版,否則草圖會(huì)出現(xiàn)編譯錯(cuò)誤而無(wú)法運(yùn)行。此外,如果您決定不使用 BME280 傳感器但使用仿真的數(shù)據(jù),您仍需要包含該傳感器的庫(kù)。不僅如此,默認(rèn)情況下,草圖還會(huì)假設(shè)您要使用的是物理傳感器。如果希望仿真數(shù)據(jù),您需要將 config.h 文件中的標(biāo)題行更改為“#define SIMULATED_DATA true”。
圖 7 突出顯示了完整的庫(kù)清單,屏幕的底部表明成功編譯了草圖并已將其上傳到目標(biāo) Feather M0 板。
圖 7: 顯示了庫(kù)清單并表明已成功上傳的 Arduino IDE。
上傳了草圖之后,您需要切換到 IDE 的串行監(jiān)視器。當(dāng)寫(xiě)入草圖時(shí),需要通過(guò)串行監(jiān)視器輸入 Wi-Fi 訪(fǎng)問(wèn)詳細(xì)信息和 Azure 連接字符串(圖 8)。
圖 8: 輸入 Wi-Fi 和設(shè)備連接信息。
在輸入上述詳細(xì)信息之后不久,您應(yīng)當(dāng)會(huì)在串行監(jiān)視器上看到確認(rèn)信息,表明已建立 Wi-Fi 連接。隨后,F(xiàn)eather 應(yīng)當(dāng)開(kāi)始向 Azure IoT 中心發(fā)送數(shù)據(jù),如圖 9 中所示。在本例中,我們一直在使用仿真的數(shù)據(jù)。
圖 9: 顯示正在從 Feather M0 Wi-Fi 發(fā)送消息的串行監(jiān)視器。
當(dāng) Azure 物聯(lián)網(wǎng)中心開(kāi)始接受消息之后,您可以檢查以確保正在接收消息。圖 10 顯示了物聯(lián)網(wǎng)設(shè)備總結(jié),其中顯示了接收到的消息的數(shù)量。
圖 10: 顯示消息總結(jié)的 Microsoft Azure IoT 中心。
當(dāng) Azure 平臺(tái)開(kāi)始接收傳感器數(shù)據(jù)之后,您即可使用某些數(shù)據(jù)存儲(chǔ)和分析功能進(jìn)行調(diào)查,在 Microsoft Azure 網(wǎng)站上可以找到這些功能的詳細(xì)信息。
正如本文中的前文所述,當(dāng)使用電池作為電源時(shí),節(jié)省功耗至關(guān)重要。Wi-Fi 是一種特別耗能的協(xié)議,但正如人們已經(jīng)認(rèn)識(shí)到的那樣,與其他方法相比,這種協(xié)議具有很多優(yōu)勢(shì)。因此,必須注意優(yōu)化傳感器設(shè)計(jì)的運(yùn)行,以便在不影響傳感器性能的情況下實(shí)現(xiàn)低功耗。MCU 和 Wi-Fi 模塊都能夠被置于休眠模式,這樣可以顯著延長(zhǎng)電池壽命。
可以在 SAM-D21 規(guī)格書(shū)中找到有關(guān)各種 MCU 節(jié)能模式以及設(shè)備的電源管理功能如何控制這些模式的詳細(xì)信息。也可以在此處找到一條應(yīng)用說(shuō)明,此說(shuō)明研究了可以從 MCU 的外設(shè)接口和功能實(shí)現(xiàn)的節(jié)能方法。ATWINC1500 也提供了幾乎同樣多的節(jié)能資源,包括此應(yīng)用說(shuō)明中的一節(jié)專(zhuān)門(mén)介紹。在 Feather M0 Wi-Fi 教程中,Adafruit 展示了電源監(jiān)視器的使用方法,以說(shuō)明 Wi-Fi 模塊的功耗差異(圖 11)。
圖 11: Feather M0 Wi-Fi 板功耗。
圖 11 中的橙色線(xiàn)代表 Feather M0 Wi-Fi 板的整體功耗。紫色線(xiàn)表示 LiPo 電池的電源電壓。請(qǐng)注意無(wú)線(xiàn)電的運(yùn)行產(chǎn)生的尖峰,第一個(gè)尖峰包含接入點(diǎn)的鏈路設(shè)置。在所進(jìn)行的通信的范圍以外,靜態(tài)電流約為 22 mA,表明 MCU 的電流約為 10 mA、Wi-Fi 模塊的電流約為 12 mA。了解預(yù)期的最終產(chǎn)品的潛在用途有助于確定可實(shí)現(xiàn)的節(jié)能水平。例如,如果每分鐘只需測(cè)量一次溫度,并且執(zhí)行溫度測(cè)量和與云應(yīng)用通信需要 5 秒鐘時(shí)間,則可據(jù)此將設(shè)備的休眠時(shí)長(zhǎng)設(shè)置為至少 55 秒鐘,從而讓設(shè)備在 91% 的時(shí)間內(nèi)處于深度休眠模式。其他節(jié)能方法可能需要執(zhí)行多次溫度測(cè)量才能通過(guò) Wi-Fi 發(fā)送測(cè)量結(jié)果,也可能只在溫度讀數(shù)不同于上一次的測(cè)量結(jié)果時(shí)發(fā)送測(cè)量結(jié)果。
總結(jié)
現(xiàn)成的 SBC 提供了一個(gè)用于驗(yàn)證產(chǎn)品概念和構(gòu)建初始原型設(shè)計(jì)的理想平臺(tái)。精心選擇使用市售的暢銷(xiāo) MCU 和無(wú)線(xiàn)元件的 SBC 可以確保在驗(yàn)證原型之后,可以充分利用此類(lèi)板通常具有的上市時(shí)間優(yōu)勢(shì)、開(kāi)源資源和社區(qū)支持,快速將原型轉(zhuǎn)換為最終設(shè)計(jì)。
評(píng)論