適用于物聯(lián)網(wǎng) (IoT) 應(yīng)用的器件具有一些共通但非常關(guān)鍵的要求:連接簡單、安全水平高并且易于使用。 因此,設(shè)計師應(yīng)仔細(xì)研究 Atmel 的智能插頭參考設(shè)計,將其作為無線物聯(lián)網(wǎng)設(shè)計的綜合工作指南。
雖然面向苛刻環(huán)境的應(yīng)用通常需要有線連接,但如今消費(fèi)者完全可以指望可靠且易于設(shè)置的無線連接。 在安全性方面,如今的要求已不局限于基本的數(shù)據(jù)加密,還包括要求更復(fù)雜的政策用于將新設(shè)備安全地添加到受信任的網(wǎng)絡(luò),以及確保正常操作期間的安全通信。 最后,任何物聯(lián)網(wǎng)器件最終都應(yīng)滿足應(yīng)用特定的傳感器或致動器功能要求。
以下是將 Atmel 的智能插頭參考設(shè)計用作無線物聯(lián)網(wǎng)設(shè)計綜合工作指南的原因。 對設(shè)計師而言,它整合了安全的互聯(lián)網(wǎng)連接型產(chǎn)品所需的所有軟硬件。 同時,該設(shè)計是一個啟用了 Wi-Fi 功能的電源插頭,其中展示了三個主要的用例模型:使用其電容式觸摸按鈕進(jìn)行本地控制;通過帶 Wi-Fi 連接(帶或不帶云連接)的移動應(yīng)用進(jìn)行控制;或通過使用相關(guān)應(yīng)用計劃開/關(guān)定時進(jìn)行基于定時器的控制。
與許多新興物聯(lián)網(wǎng)入門套件不同,Atmel 智能插頭參考設(shè)計以無云版本提供。 實際上,Atmel 提供了專為云集成而設(shè)計的固件版本,但開發(fā)人員還需要密切關(guān)注“霧計算”的趨勢。
在霧計算中,提高數(shù)據(jù)處理、存儲和應(yīng)用的控制水平是以本地方式在“邊緣”位置執(zhí)行的,而不是僅僅依靠云。 除了實現(xiàn)“始終可用”的服務(wù)外,此方法還能降低服務(wù)延遲,提高安全性,節(jié)省能源,并提升整體用戶體驗。
器件設(shè)計
智能插頭設(shè)計本身由三塊印刷電路板 (PCB) 組成,分別用于供電、MCU 和觸摸控制。 MCU 板垂直安裝在電源板上,觸摸板通過引腳連接器連接到 MCU 板(圖 1)。 Atmel 提供三種版本的智能插頭,分別符合美國、歐洲和中國標(biāo)準(zhǔn)。 三種版本分別提供每個地區(qū)的標(biāo)準(zhǔn)插頭和插座,但使用相同的印刷電路板。
圖 1: Atmel 智能插頭參考設(shè)計將數(shù)字電路和電源電路分為單獨的板,其中三分之一的板用于 LED 和 QTouch 接口。 (圖片來源: Atmel Corp.)
觸摸板包含 Wi-Fi 和電源 LED 以及基于 QTouch 技術(shù)的觸摸傳感器。 QTouch 采用 Atmel 的電容式觸摸感應(yīng)技術(shù),該技術(shù)具有在不太理想的環(huán)境中獲得可靠性能所需的抗噪能力和環(huán)境耐受力。
電源板包含一個 AC/DC 轉(zhuǎn)換器、一個 DC/DC 轉(zhuǎn)換器、功率測量電路、繼電器以及插頭和插座。 AC/DC 轉(zhuǎn)換器專用于將 100 V/240 VAC 輸入電壓轉(zhuǎn)換為 12 V/120 mA(典型)DC 輸出,以向繼電器和 DC/DC 轉(zhuǎn)換器供電。 AC/DC 轉(zhuǎn)換器將定制變壓器與 Monolithic Power Systems 的 MP020-5 開關(guān)穩(wěn)壓器結(jié)合使用。
MP020-5 是一種離線式、初級側(cè)穩(wěn)壓器,不需要光耦合器或次級反饋電路便可提供準(zhǔn)確的恒定電壓和恒定電流調(diào)節(jié)。 DC/DC 轉(zhuǎn)換器為 MCU 板上的 SAMW25 無線模塊將 DC 電壓電平從 12 V 轉(zhuǎn)換為 3.3 V。
MCU 板包含 ATSAMW25 無線模塊和 32 KHz 晶體。 此外,它還在印刷電路板上為此設(shè)計不需要的外部閃存設(shè)備提供可用的封裝。
安全連接模塊
Atmel 設(shè)計的核心部分是結(jié)合了數(shù)字控制、連接和安全功能的 ATSAMW25 模塊。 此模塊設(shè)計為 Wi-Fi 連接的直接替代型解決方案,結(jié)合了其全面的硬件功能與集成軟件,包括傳輸層安全 (TLS) 等應(yīng)用和安全協(xié)議,以及包括 TCP/IP 堆棧在內(nèi)的集成網(wǎng)絡(luò)服務(wù)。 在智能插頭設(shè)計中,此模塊不僅提供 Wi-Fi 連接和安全,還管理智能插頭觸摸按鈕、繼電器控制、溫度感應(yīng)以及保護(hù)、LED 指示燈和定時功能(圖 2)。
圖 2: Atmel 智能插頭參考設(shè)計提供圍繞 Atmel ATSAMW25 模塊構(gòu)建的完整物聯(lián)網(wǎng)解決方案,可提供數(shù)字控制、連接和安全功能。 (圖片來源: Atmel Corp.)
此核心模塊在內(nèi)部利用了以下三個關(guān)鍵 SoC 中集成的全面功能:Atmel ATSAMD21G18A MCU、Atmel ATWINC1500B-MU-T 收發(fā)器以及 Atmel ATECC508A 加密驗證器件。
ATSAMD21G18A 基于低功耗 ARM Cortex-M0+ 核心,集成了 256 KB 閃存及 32 KB SRAM 與全套外設(shè),包括串行、USB、14 通道 12 位模數(shù)轉(zhuǎn)換器 (ADC) 以及 10 位數(shù)模轉(zhuǎn)換器 (DAC)。 Atmel ATWINC1500B-MU-T 是一種低功耗、單芯片 IEEE 802.11 b/g/n、2.4 GHz 網(wǎng)絡(luò)控制器。 ATWINC1500 專為簡化在基于 MCU 的設(shè)計中集成 Wi-Fi 連接而設(shè)計,集成了全部收發(fā)器信號鏈并提供多個外設(shè)接口,包括用于與主機(jī) MCU 連接的 UART、SPI 和 I2C。 ATECC508A 加密器件將在下文中介紹。
對于無線通信,這些器件只需要在 SAMD21G MCU 和 ATWINC1500 網(wǎng)絡(luò)控制器 SoC 之間進(jìn)行幾處連接(圖 3)。 雖然 SPI 連接能提供雙向數(shù)據(jù)交換,但此設(shè)計有助于降低平靜期的功耗。 對于傳入數(shù)據(jù),ATWINC1500 可使用中斷線 (IRQn) 喚醒 MCU,以通知 MCU 處理收到的數(shù)據(jù)。 對于輸出數(shù)據(jù),MCU 可使用喚醒線來喚醒 ATWINC1500 處理傳輸。
圖 3: Atmel ATSAMW25 模塊將 MCU 與 SoC 集成,以實現(xiàn) Wi-Fi 連接與安全,為許多物聯(lián)網(wǎng)應(yīng)用提供了直接替代型解決方案。 (圖片來源: Atmel Corp.)
ATSAMW25 模塊只需很少的額外組件來控制智能插頭功率繼電器并與功率測量電路接口(圖 4)。 如圖中所示,52 引腳 ATSAMW25 模塊為在模塊外部處理的各項關(guān)鍵功能提供了簡單的接口。 例如,引腳 24 為隨附的 Atmel ATSAMD21G18A MCU 引出了復(fù)位引腳,引腳 40 和 41 則用于跟功率測量子系統(tǒng)連接。 此外,此模塊還提供了 9 個通用輸入/輸出 (GPIO) 引腳,開發(fā)人員可對其編程以引出特定于應(yīng)用的功能。
圖 4: Atmel ATSAMW25 模塊專為簡化在設(shè)計中集成 Wi-Fi 功能而設(shè)計,只需要較少的外部組件,并能提供實現(xiàn)設(shè)計所需的最少外部連接。 (圖片來源: Atmel Corp.)
不同于藍(lán)牙的一對一配對連接,Wi-Fi 連接支持器件共用,因此多個用戶可以共享訪問權(quán)限并控制設(shè)備。 不過設(shè)計師仍可通過使用專門的藍(lán)牙器件(例如 Atmel ATSAMB11 藍(lán)牙 SoC)和相關(guān)軟件增強(qiáng)基本的智能插頭參考設(shè)計,來構(gòu)建自定義的 Wi-Fi/藍(lán)牙設(shè)計。 ATWINC1500 支持符合 IEEE 802.15.2-2003 標(biāo)準(zhǔn)的 2 線和 3 線 Wi-Fi/藍(lán)牙共存信號。
最后,電源板上實現(xiàn)的功率管理電路使用了 Atmel ATM90E26。 ATM90E26 專為能量計量而設(shè)計,集成了完整的模擬前端 (AFE) 信號鏈與數(shù)字信號處理器 (DSP)。 通過使用 AFE 執(zhí)行電壓和電流測量,DSP 可計算即時功率、RMS 電流、RMS 電壓以及累積的電能。 結(jié)果將通過 UART 端口傳輸至 ATSAMW25。 為了隔離線路電壓和內(nèi)部電源域,此設(shè)計包含兩個光耦合器用于保護(hù) ATM90E26 和 ATSAMW25 之間的連接(ATSAMW25 模塊上的引腳 40 和 41)。
軟件設(shè)計
在智能插頭參考設(shè)計中,主程序在 ATSAMW25 模塊中嵌入的 ATSAMD21G18 MCU 上運(yùn)行。 此軟件設(shè)計不使用實時操作系統(tǒng) (RTOS)。 相反,所有軟件功能塊在初始化后以無限循環(huán)運(yùn)行。 關(guān)鍵的 MCU 軟件功能包括通過 ATWINC1500 驅(qū)動程序提供的 Wi-Fi 連接;通過 ATECC508A 驅(qū)動程序和軟件 AES 庫提供的安全性;通過 ATM90E26 驅(qū)動程序提供的能源測量;以及通過 Atmel QTouch 庫提供的觸摸按鈕控制。
在智能插頭參考設(shè)計中,應(yīng)用固件區(qū)分為兩個分區(qū) — 應(yīng)用 1 和應(yīng)用 2(圖 5)。 除了這些應(yīng)用分區(qū)外,內(nèi)部閃存包括用于存儲用戶信息、Wi-Fi 網(wǎng)絡(luò)信息和使用數(shù)據(jù)的仿真 EEPROM。
圖 5: 由于智能插頭固件的存儲器封裝相對較小,因此兩個應(yīng)用副本可在 ATSAMD21G18 MCU 的 256KB 閃存內(nèi)共存,從而在不需外部存儲器的情況下實現(xiàn)無線升級。 (圖片來源: Atmel Corp.)
復(fù)位后,使用簡單的引導(dǎo)程序確定要運(yùn)行的應(yīng)用固件分區(qū)。 在此,引導(dǎo)程序代碼會查看引導(dǎo)程序頭文件 boot.h(列表 1)中定義的變量。
#define APPLICATION_SIZE (FLASH_SIZE/2UL) // Maintain two copies in flash
#define APP_PAGE_SIZE FLASH_PAGE_SIZE
#define APP1_START_ADDRESS 0x00004000
#define APP2_START_ADDRESS 0x00020000
/** NVM page to save application area info */
#define NVM_APP_AREA_INFO_PAGE 2
typedef enum _valid_app {
APP1_VALID = 1,
APP2_VALID,
NOT_FOUND = 0xFF,
} valid_app_enum;
列表 1: 引導(dǎo)程序頭文件定義了簡單的引導(dǎo)加載過程所需的幾個常量和變量。 (代碼來源: Atmel Corp.)
引導(dǎo)程序代碼自身檢查 APPx_VALID 標(biāo)記(列表 2)
if(app_info.valid_app == APP1_VALID) {
app_check_address = APP1_START_ADDRESS;
app_check_address_ptr = (uint32_t *) app_check_address;
} else if (app_info.valid_app == APP2_VALID) {
app_check_address = APP2_START_ADDRESS;
app_check_address_ptr = (uint32_t *) app_check_address;
} else {
/*
* Factory new device has no valid app flag in EEPROM.
* Application code is in sector 2 for factory new device.
*/
app_check_address = APP2_START_ADDRESS;
app_check_address_ptr = (uint32_t *) app_check_address;
}
列表 2: 引導(dǎo)程序代碼只檢查哪個應(yīng)用區(qū)域(APP1 或 APP2)有效,并在活動的應(yīng)用區(qū)域調(diào)用此代碼以開始執(zhí)行智能插頭設(shè)備軟件。 (代碼來源: Atmel Corp.)
最后,引導(dǎo)程序設(shè)置為在相應(yīng)的應(yīng)用空間運(yùn)行此代碼,并跳至該應(yīng)用。
得益于設(shè)計的 SoC 所具有的高集成度,參考設(shè)計的存儲器封裝極小。 程序存儲器使用量為 83244 字節(jié)(容量的 31.8%),數(shù)據(jù)存儲器使用量僅為 15632 字節(jié)(容量的 47.7%)。 由于此存儲器外形極小,該設(shè)計能支持典型 IoT 邊緣節(jié)點所需的無線 (OTA) 升級。 ATSAMD21G18A MCU 的 256 KB 內(nèi)部閃存預(yù)留了足夠的空間來存儲下載的固件映像,同時將原始固件保留不變。 因此,此參考設(shè)計不需要外部存儲進(jìn)行 OTA 升級。
Atmel 為設(shè)備以及整個安卓應(yīng)用提供了完整的代碼包。 開發(fā)人員可以通過公司的在線工具 Atmel START 訪問軟件配置,該工具適用于配置軟件組件以及時鐘和引腳布局等器件設(shè)置。 智能插頭配置附帶預(yù)建的 Wi-Fi 堆棧、加密服務(wù)和 IO 管理等中間件以及一整套軟件驅(qū)動程序(圖 6)。
圖 6: Atmel 提供了一整套軟件開發(fā)和調(diào)試工具,包括在設(shè)計的硬件器件組中用于配置軟件組件及器件設(shè)置的在線工具。 (圖片來源: Atmel Corp.)
完成配置后,開發(fā)人員將導(dǎo)出項目并在 IDE 中打開它,進(jìn)行進(jìn)一步的軟件開發(fā)。 針對應(yīng)用開發(fā),Atmel 提供了圍繞 Atmel Studio 7 構(gòu)建的全面工具鏈,其中通過 Atmel 調(diào)試器、編程器和仿真器結(jié)合了代碼開發(fā)工具與集成調(diào)試功能。 針對智能插頭設(shè)計,Atmel 軟件框架 (ASF) 提供了 API 以用于 Wi-Fi 連接、安全、通信協(xié)議、傳感器讀數(shù)和 UI。 開發(fā)人員可以使用 Atmel 的 ASF Explorer 將驅(qū)動程序、通信堆棧和服務(wù)從 ASF 導(dǎo)入到其項目中。 ASF Explorer 會自動管理庫的依賴關(guān)系,確保代碼包中包含需要的驅(qū)動程序。
與大多數(shù)新興的物聯(lián)網(wǎng)器件一樣,Atmel 智能插頭依賴于移動應(yīng)用實現(xiàn)用于監(jiān)控和控制的用戶界面。 實際上,Atmel 提供的安卓應(yīng)用是此參考設(shè)計不可或缺的一項功能。 通過此應(yīng)用,用戶可以在設(shè)置期間管理 Wi-Fi 部署、與多個用戶共享設(shè)備、執(zhí)行無線升級、打開和關(guān)閉設(shè)備、計劃開/關(guān)定時甚至包括查看使用歷史記錄。
物聯(lián)網(wǎng)安全機(jī)制
Atmel 安卓應(yīng)用在確保安全操作方面發(fā)揮重要作用。 Atmel 智能插頭參考設(shè)計實施了穩(wěn)健安全策略,要求在設(shè)置和正常操作期間,設(shè)備與應(yīng)用之間使用認(rèn)證通信。 由于智能插頭設(shè)計在功能上代表了大多數(shù)物聯(lián)網(wǎng)邊緣節(jié)點的設(shè)計,因此該參考設(shè)計為實施物聯(lián)網(wǎng)安全措施提供了詳細(xì)指南。
此設(shè)計依賴 Atmel ATECC508A 硬件加密引擎和軟件加密庫實施安全功能,包括:
FIPS186-3 橢圓曲線數(shù)字簽名算法 (ECDSA),用于安卓應(yīng)用和智能插頭驗證;
FIPS SP800-56A 橢圓曲線 Diffie-Hellman 算法 (ECDH),用于生成會話密鑰,而決不會在安全密鑰存儲之外傳輸私鑰;
高級加密標(biāo)準(zhǔn) (AES)-128 加密塊鏈接 (CBC) 模式,用于對網(wǎng)絡(luò)通信進(jìn)行數(shù)據(jù)加密和解密;
基于 SHA-256 的 MAC(信息驗證代碼),用于數(shù)據(jù)完整性檢查。
安卓應(yīng)用側(cè)的軟件中也實施了相同的安全功能,以便在智能插頭設(shè)備與應(yīng)用之間進(jìn)行安全通信。
基于密鑰的加密對任何物聯(lián)網(wǎng)設(shè)計中的密鑰安全提出了苛刻的要求。 在智能插頭設(shè)計中,ATECC508A 加密器件通過其基于硬件的安全加密密鑰存儲和加密對策滿足了這一需求。 當(dāng)設(shè)計進(jìn)入量產(chǎn)后,將會在安全的工廠環(huán)境中配置密鑰存儲(例如 ATECC508A 中的密鑰存儲),然后再上市銷售,以確保私鑰安全。
在現(xiàn)場,該設(shè)計使用先進(jìn)的驗證方案將新的智能插頭設(shè)備加入現(xiàn)有網(wǎng)絡(luò),并在經(jīng)驗證的智能插頭設(shè)備與應(yīng)用之間交換數(shù)據(jù)。 在智能插頭與應(yīng)用相互完成驗證后的數(shù)據(jù)交換期間,智能插頭使用其 MAC 地址和一個隨機(jī)數(shù)質(zhì)詢進(jìn)行應(yīng)答。 由于智能插頭在(安全)加入網(wǎng)絡(luò)后會收到安卓應(yīng)用公鑰,因此 ATECC508A 可生成一個 ECDH 預(yù)先主 (Pre-master) 密鑰,并使用 MAC 算法隨機(jī)生成密鑰,以輸出僅在會話期間有效的臨時密鑰。 反過來,ATECC508A 將此會話密鑰用作 AES 密鑰,對在應(yīng)答中傳輸至安卓應(yīng)用的信息進(jìn)行加密。 盡管添加新智能插頭設(shè)備的安全流程更為復(fù)雜,但它遵循相似的安全理念,即隨機(jī)密鑰交換、質(zhì)詢和驗證。
但對開發(fā)人員而言,Atmel 驅(qū)動程序和 API 會處理具體細(xì)節(jié)。 例如,只需在 ecc508a 驅(qū)動程序中調(diào)用 cademo_aes_crypt() 即可使用第三方庫 LibTomCrypt 返回 AES-128 CBC 模式的加密或解密數(shù)據(jù)(列表 3)。
static uint8_t cademo_aes_crypt(uint8_t enc_mode, uint8_t* aes_key, uint8_t* plain_txt, uint16_t* plain_txt_size, uint8_t* cypher_txt, uint8_t* iv)
{
uint8_t ret = ATCA_SUCCESS;
uint16_t keysize = AES_KEY_SIZE;
// LibTomCrypt
register_cipher(&aes_desc);
int32_t cypher_idx = find_cipher("aes");
symmetric_CBC cbc;
ret = cbc_start(cypher_idx, iv, aes_key, keysize, 0, &cbc);
if (enc_mode == MODE_ENCRYPT) {
ret = cbc_encrypt(plain_txt, cypher_txt, *plain_txt_size, &cbc);
}
else if (enc_mode == MODE_DECRYPT) {
/* plain_txt is the encrypted data by calling cademo_aes_crypt(),
while cypher_txt is the place to store decrypted data. */
ret = cbc_decrypt(plain_txt, cypher_txt, *plain_txt_size, &cbc);
}
return ret;
}
列表 3: 智能插頭參考設(shè)計的 Atmel 基本代碼提供了一整套安全實施例程,例如以上用于 AES-128 CBC 模式加密/解密的例程。 (代碼來源: Atmel Corp.)
在此,調(diào)用參數(shù)包括:
enc_mode — 定義加密還是解密的標(biāo)記
aes_key — AES 密碼
plain_txt — 要加密的字節(jié)
plain_txt_size — 要加密的字節(jié)數(shù)
cypher_txt — 加密后的文本
iv — CBC 模式的初始化矢量
結(jié)論
物聯(lián)網(wǎng)設(shè)計要求成功的功能集成,包括連接、安全和應(yīng)用資源。 通過結(jié)合一項穩(wěn)健的物聯(lián)網(wǎng)參考設(shè)計,新物聯(lián)網(wǎng)開發(fā)人員可快速積累經(jīng)驗,經(jīng)驗豐富的開發(fā)人員則可加快實現(xiàn)物聯(lián)網(wǎng)設(shè)計。 Atmel 智能插頭參考設(shè)計為物聯(lián)網(wǎng)設(shè)計提供了一個綜合工作示例。 此設(shè)計通過結(jié)合用于無線連接、安全和能源計量的軟硬件,針對物聯(lián)網(wǎng)設(shè)計組件之間的交互提供了深入見解,并可作為復(fù)雜的自定義物聯(lián)網(wǎng)設(shè)計的出發(fā)點。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2927文章
45951瀏覽量
388622 -
無線
+關(guān)注
關(guān)注
31文章
5539瀏覽量
175502 -
Atmel
+關(guān)注
關(guān)注
17文章
312瀏覽量
108439
發(fā)布評論請先 登錄
評論