0簡介
本書的內容
第1章,ESP32入門,向你介紹一般的物聯網技術、ESP32硬體和開發環境選項,
第2章,與地球對話--傳感器和執行器,討論了不同型別的傳感器和執行器,以及如何將它們與ESP32連接,
第3章,令人印象深刻的顯示輸出,解釋了如何在ESP32專案中選擇和使用不同的顯示型別,FreeRTOS也被詳細討論,
第4章,深入研究高級功能,包括ESP32的音頻/視頻應用,以及滿足低功耗要求的電源管理子系統,
第5章,實踐--你的房間的多傳感器,是本書的第一個參考專案,其中幾個傳感器被集成到ESP32設備,
第6章,好朋友--Wi-Fi,展示了如何在Wi-Fi的站點和接入點模式下使用ESP32,在ESP32的背景下討論了一些TCP/IP協議,
第7章,安全第一!探討了ESP32的安全特性,并提供了安全韌體更新和安全通信技術的例子,
第8章,介紹了BLE的基本知識,并展示了如何開發BLE信標、GATT服務器和BLE網狀節點,
第9章,實踐--讓你的家變聰明,用BLE網狀網路中的網關、光線傳感器和中繼開關構建了完整的智能家居解決方案,
第10章,無云不物聯網--云平臺和服務,討論了重要的物聯網協議,并以AWS物聯網集成為例介紹了不同供應商的物聯網平臺,
第11章,連接永遠不夠--第三方集成,重點介紹與語音助手和IFTTT等流行服務的集成,
第12章,實踐--語音控制的智能風扇,作為本書的最后一個專案,將一個普通的風扇轉換成支持Alexa的智能設備,
要從本書中獲得最大的識訓
物聯網技術需要許多不同的學科和技能來開發物聯網產品,從根本上說,除了具備C和Python的編程能力外,你還需要閱讀圖來設定實體中的硬體原型,我們還假定你熟悉TCP/IP協議和密碼學基礎知識,以便輕松掌握這些例子,在某些章節中,如果你對該主題的基礎知識感到不適應,建議閱讀一些參考書,
每個例子前都列出了必要的硬體組件,然而,你應該準備好面包板、跳線和萬用表,以便能夠構建電路,最好還能有焊接設備,因為許多新模塊需要焊接頭,以便將它們連接到面包板上,
作為開發環境,你應該在你的電腦上安裝VS Code,本書中的例子是在Linux機器上開發和測驗的,但不管是哪種作業系統平臺,都應該可以作業,在必要的情況下,為不同的平臺推薦了外部工具的替代品,
需要一個移動設備來處理這些例子,這些移動應用程式在安卓和iOS平臺上都可以使用,
你可以從GitHub上下載本書的示例代碼檔案,網址是https://github.com/PacktPublishing/Internet-of-Things-with-ESP32,
1-ESP32簡介
什么是物聯網?
盡管不同的觀點對物聯網的定義可能略有不同,但在物聯網世界中,有一些關鍵概念將其與其他型別的技術區分開來:
- 連接性: 物聯網設備是連接的,要么連接到互聯網,要么連接到本地網路,墻上的老式恒溫器等待手動操作的基本編程功能不能算作物聯網設備,
- 識別: 物聯網設備在網路中被唯一地識別,設備本身可用于遠程更新、遠程管理和診斷,
- 自主操作: 物聯網系統的設計是為了最小化或沒有人類的干預,每個設備從其安裝的環境中收集資料,然后它可以與其他設備溝通資料,以檢測系統的當前狀態,并按照配置做出回應,如果需要,這種回應可以是行動、日志或警報的形式,
- 互操作性: 物聯網解決方案中的設備相互交談,但它們不一定屬于一個供應商,當不同供應商設計的設備共享共同的應用級協議時,在異質網路中添加新設備就像點擊設備或管理軟體上的幾個按鈕一樣容易,
- 可擴展性: 物聯網系統能夠進行橫向擴展,以應對不斷增加的作業量,在必要時增加新的設備來增加容量,而不是用更好的設備來替換現有的設備(垂直擴展性),
- 安全性: 我希望我可以說,每個物聯網解決方案都至少實施了一套最低限度的強制性安全措施,但不幸的是,情況并非如此,盡管有一些不好的經驗,包括臭名昭著的Mirai僵尸網路攻擊,從積極的方面看,我可以說,物聯網設備大多具有安全啟動、安全更新和安全通信功能,以確保保密性、完整性和可用性(CIA三要素),
Gartner在2011年的炒作周期中加入了物聯網,預計超過10年后將成為主流應用,然而,許多相關技術,如RFID、網狀網路和藍牙,以及移動和云技術等推動因素,在2011年之前就已經在名單上了,從那時起,Gartner在其名單上增加了其他一些物聯網技術和應用,包括以下內容:
- 物聯網平臺
- 互聯家庭
- 智能灰塵
- 邊緣計算
- 邊緣的低成本、單板計算機
5G和嵌入式人工智能是Gartner名單上的其他革命性技術,支持物聯網并擴大其應用領域,
參考資料
- 軟體測驗精品書籍檔案下載持續更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測驗開發庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
我們在哪里應用物聯網?
應用范圍很廣,但從概念上講,我們可以將其分為兩個基本類別:
- 在消費者物聯網類別中,我們可以看到主要是智能家居和安全系統、個人醫療保健產品、可穿戴技術和資產跟蹤應用,
- 工業物聯網類別有更多的應用領域,正如你所期望的那樣,每年,IoT Analytics都會通過審查數以千計的新專案來發布工業應用的十大趨勢清單,2020年的清單依次包含了制造業、交通、能源、零售、城市、醫療保健、供應鏈、農業和建筑應用(https://iot-analytics.com/top-10-iot-applications-in-2020),
邊緣的AI/ML
人工智能已經存在了很長時間,有許多機器視覺、自然語言處理(NLP)、語音識別和ML專案的成功案例,然而,它們都需要耗能的強大硬體,以便能夠應對CPU和記憶體密集型的計算,而這一點在記憶體和處理能力低得多的簡陋的傳感器設備上是不可能的,TensorFlow Lite解決了這個問題,它的轉換器可以輸出一個模型,一組通過運行資料進行預測的規則,其大小低至14KB,適合任何現代微控制器,如ARM Cortex-M3設備,功耗非常低,這使你能夠擁有具有ML能力的電池操作的傳感器設備,一個有趣的專案來自Benjamin Cabé(在Twitter上:@kartben),在他的專案中,他成功地訓練了模型來辨別不同型別的烈酒,準確率達到92%,他用SeeedStudio的Wio終端作為計算板,它有一個ARM Cortex-M4F內核,運行頻率為120MHz,
意義是巨大的,現在我們有能力開發一個真正的智能設備,而不是假的傳感器設備,這樣它可以為它收集的資料添加意義,不僅可以根據資料,而且可以根據意義做出反應,本杰明采用了一個簡單的氣體傳感器來檢測各種氣體,如一訊訓碳(CO)、二訊訓氮(NO2)、乙醇(C2H5CH)和其他一些型別,但該設備本身可以理解它實際聞到的氣味,這要歸功于它在韌體中使用的ML模型,如果沒有這樣的能力,該設備將不得不把它的資料發送到另一臺更強大的機器或云端來進行分析,然后等待回復,以決定下一步該怎么做,此外,如果它以某種方式失去了網路連接,那么在恢復連接之前,就不能再做任何事情了,
你可以在以下鏈接中查看TensorFlow Lite的支持平臺:https://www.tensorflow.org/lite/microcontrollers,
能量采集
無線傳感器網路(WSNs Wireless Sensor Networks)的一個重要討論和研究課題一直是傳感器節點的能量消耗,很明顯,越少越好,如果你有一些開發電池操作的無線設備的經驗,你知道運行到睡眠的概念,這意味著做完作業后盡快進入睡眠模式,以保存最寶貴的資源--能源,盡管如此,無論你做什么,傳感器節點必須消耗能量,用戶在一段時間后必須更換電池,在這一點上,一項有趣的技術為你提供了幫助--能量采集,自尼古拉-特斯拉的時代就已經存在,能量可以從各種環境來源中獲取,包括光、振動和無線能源,要做到這一點,采集解決方案首先需要通過各種組件來獲取環境能量,這取決于能源型別,
如果能量來自射頻源,它就是射頻天線;如果是光,它就是一個光伏電池,然后,這種原始電能必須在集成電路的幫助下進行轉換,以便將其儲存在電容器或電池中,但你知道,這說起來容易,做起來難,盡管市場上有幾個來自不同硅供應商的電源管理集成電路(PMIC Power Management Integrated Circuits ),但很難說它們是否有效地解決了這個問題,主要的挑戰是要采集非常低的能量水平,需要將非常低的電壓提升到更高的邏輯水平,需要多個外部元件來操作,以及在PCB上有很大的芯片足跡,因此,這些挑戰阻礙了供應商生產高性能的能量收集芯片,不過,有一種產品聽起來確實很有希望,
Nowi Energy宣傳其NH2D0245 PMIC是與市場上其他半導體巨頭相比效率最高、占地面積最小的電源管理IC,為了證明他們的論點,他們與模塊公司MMT一起推出了一個混合智能手表模塊,這樣,裝有該模塊的手表在其生命周期內不需要充電就可以運行,能量收集是一個熱門話題,所以當然也有競爭對手,如來自比利時的e-peas半導體,你可能想在你的下一個WSN專案中嘗試這些PMIC之一,
納米機器人
來自康奈爾大學的研究專案,這項研究的結果已于2020年8月發表在《自然》雜志上,文章名為《電子集成、大規模制造的微型機器人》,他們發明了納米級的執行器,你簡直無法用眼睛看到,這個超級微小的結構上有兩個太陽能電池來移動腿部,當激光束落在這些太陽能電池上時,它們產生足夠的電壓來激活腿部,
物聯網解決方案的基本結構
物聯網解決方案將許多不同的技術結合到一個產品中,從物理設備開始,涵蓋所有層級,直到最終用戶的應用,解決方案的每一層都旨在實作企業設定的相同愿景,但在設計和開發時需要采用不同的方法,我們肯定不能在物聯網專案中談論一刀切的解決方案,但我們仍然可以應用有組織的方法來開發產品,讓我們看看在一個典型的物聯網產品中,解決方案有哪些層次:
-
設備硬體: 每個物聯網專案都需要帶有系統芯片(SoC)或微控制器單元(MCU)和傳感器/執行器的硬體來與物理世界互動,除此之外,每個物聯網設備都是連接的,所以我們需要選擇最佳的通信媒介,如有線或無線,電源管理也是這個類別下的另一個考慮因素,
-
設備韌體: 我們需要開發設備韌體,在SoC上運行,以滿足專案的要求,這是我們收集資料并將其傳輸到解決方案中的其他組件的地方,
-
通信: 連接問題在解決方案架構的這個類別中處理,物理介質的選擇對應于解決方案的一個部分,但我們仍然需要決定設備之間的協議,作為共享資料的共同語言,一些協議可能通過定義物理介質到應用層來提供整個通信堆疊,如果是這種情況,你不需要擔心其他事情,但如果你的堆疊將應用層的背景關系管理留給了你,那么是時候決定使用什么物聯網協議了,
-
后臺系統: 這是解決方案的骨干,所有資料都在后端系統上收集,并提供產品的管理、監測和集成能力,后臺系統可以在企業內部硬體或云供應商上實施,同樣取決于專案要求,此外,這也是物聯網遇到其他顛覆性技術的地方,你可以應用大資料分析,從來自傳感器的資料中提取更深層次的資訊,或者你可以使用人工智能演算法,為你的系統提供更多的智能功能,如例外檢測或預測性維護,
-
終端用戶應用: 你很可能需要為你的終端用戶提供介面,讓他們訪問功能,10年前,我們只談論桌面、網路或移動應用程式,但今天我們有了語音助手,你可以把它們看作是一種現代的人際互動界面,把語音助手集成作為一項功能添加進去可能是一個好主意,特別是在消費者領域,
下圖描述了物聯網解決方案的一般結構:
物聯網安全
剩下的一個重要考慮因素是安全,實際上,這都是關于安全的,無論我寫什么,都不能過分強調其重要性,物聯網設備與現實世界相連,任何安全事故都有可能對直接環境造成嚴重損害,更不用說其他網路安全犯罪,因此,在設計解決方案的任何硬體或軟體組件時,它應該始終在你的檢查清單中,雖然安全,作為一個主題,絕對值得單獨寫一本書,但我可以為現場的設備列出一些黃金規則:
- 始終尋求減少硬體和韌體的攻擊面,
- 盡可能地防止物理篡改,如果沒有必要,任何物理埠都不應該被打開,
- 將秘密密鑰保存在安全介質上,
- 實施安全啟動、安全韌體更新和加密通信,
- 不要使用默認密碼;TCP/IP埠不應不必要地開放,
- 在可能的情況下,將健康檢查機制與例外檢測結合起來,
作為物聯網開發者,我們應該普遍接受安全設計原則,由于物聯網產品有許多不同的組件,在設計產品時,端到端的安全性成為關鍵點,應該對每個組件進行風險影響分析,以決定傳輸中的資料和休息中的資料的安全級別,有許多國家/國際機構和組織提供有關網路安全的標準、準則和最佳做法,其中一個專門從事物聯網技術的機構是物聯網安全基金會,他們正在積極開發有關該主題的準則和框架,并公布了許多這些準則,這些準則可以免費獲得,
如果你想查看這些指南,你可以訪問物聯網安全基金會網站,查看他們的出版物:https://www.iotsecurityfoundation.org/best-practice-guidelines/,
ESP32平臺和模塊介紹
第一個ESP32芯片是在2016年推出的,ESP32使我們能夠將網關的價格削減到原來的四分之一,有了ESP32作為主計算單元,我們將Z-wave模塊作為網路協處理器連接到它上面,另一端是Wi-Fi,這是ESP32的內置功能,用于連接后端系統,我們不擔心安全要求,因為ESP32芯片中有用于加密/解密的加密硬體加速器,這就是我們所需要的一切,然而,像往常一樣,生活并不那么容易,我們從市場上采購的Z-wave庫的目標是基于Linux的板子,而不是像ESP32這樣資源有限的SoC,所以我們開始為ESP32移植整個Z-wave庫,并獲得了成功,最后,我們擁有了市場上最緊湊、最實惠的Z-wave網關,
為什么采用ESP32?
- 價格便宜和可用性
- Wi-Fi和藍牙在單一的SoC中
- 強大的硬體功能,有許多外圍介面,不同的電源模式,以及加密硬體加速
- 在芯片和模塊方面,有不同的要求的變體
- 先進的開發平臺和框架
- 巨大的社區
- 最后,與頂級云基礎設施的原生集成
ESP32的特點
自從市場上推出第一款ESP32以來,Espressif推出了ESP32的幾個變體,最近,在2020年,他們推出了ESP32-S2系列芯片,ESP32系列是通用的、功能豐富的、多功能的SoC解決方案,你可以在需要Wi-Fi連接的許多不同型別的物聯網專案中使用,讓我們快速了解一下其主要功能:
- CPU和記憶體: 32位Xtensa? LX6微處理器,時鐘頻率/MIPS高達240 MHz/600 MIPS,單核或雙核的變種,448 KB ROM, 520 KB SRAM, 和16 KB RTC存盤器,支持外部SPI閃存和SPI RAM的模塊變體,外圍設備的DMA,
- 連接性: Wi-Fi 802.11 n (2.4 GHz) 高達150 Mbps (STA和softAP模式)和符合Bluetooth v4.2 BR/EDR和BLE規范的藍牙,
- 周邊介面: GPIO、ADC、DAC、SPI、I2C、I2S、UART、eMMC/SD(芯片變體)、CAN、IR、PWM、觸摸傳感器和霍爾傳感器,
- 安全性: 加密硬體加速(亂數、散列、AES、RSA和ECC)、1024位OTP、安全啟動和閃存加密,
- 電源模式: 在超低功耗(ULP)協處理器和實時時鐘(RTC)的幫助下有不同的電源模式,深度睡眠模式(ULP激活)下的功耗為100μA,
新的ESP32-S2系列有點不同,一些明顯的區別包括以下幾點:
- 單核,
- 沒有藍牙,
- 不支持SD/eMMC,但增加了USB OTG,
- 增強了安全功能,
為了使硬體設計更容易,Espressif提供了不同配置的ESP32模塊,模塊的可變引數是ESP32芯片的變體、外部閃存(4、8或16MB)、外部SRAM和天線型別,我們可以選擇帶有PCB天線的模塊,或者在U.FL/IPEX連接器的幫助下實作外部天線選項,在ESP32-S2方面,截至本書撰寫時,我們只有一個模塊選項,大多數時候,在你的專案中選擇其中一個模塊就足夠了,但是,如果你需要特定的ESP32芯片,例如具有高溫操作的芯片,那么你需要使用一個相應的芯片變體,例如ESP32-U4WDH,并相應地設計你的PCB,你可以在Espressif的網站上找到可用的模塊:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/hw-reference/index.html,
下面的照片顯示了一個集成有板載天線的ESP32-WROOM-32D模塊:
可以在市場上找到許多來自不同供應商的板子,我們可以很容易地用這樣的套件開始開發,而不需要進行實際的硬體設計和最終產品的原型,所有的模型都集成了USB-UART橋接芯片和USB埠,所以我們只需要將套件插入我們的開發PC,就可以閃現和測驗韌體:
開發平臺和框架
ESP32是相當流行的,因此,有很多選擇,你可以選擇作為你的開發平臺和框架,
當然,第一個是直接來自Espressif本身,他們稱之為Espressif物聯網開發框架(ESP-IDF),它支持所有三個主要的作業系統環境--Windows、macOS和Linux,在安裝了一些先決條件的軟體包后,你可以從GitHub倉庫下載ESP-IDF,并將其安裝在你的開發電腦上,他們已經將所有必要的功能收集到一個名為idf.py的Python腳本中,供開發人員使用,你可以通過使用這個命令列工具來配置專案引數和最終的二進制影像,你也可以在專案的每一步中使用它,從構建階段開始,到從計算機的串行埠連接和監控你的ESP32板,但正如我所說,這是一個命令列工具,所以如果你是一個更喜歡圖形用戶界面的人,那么你需要安裝Visual Studio Code并在其中安裝一個ESP-IDF擴展,這里是ESP-IDF的鏈接:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html,
第二個選擇是Arduino IDE,正如你所期望的那樣,Arduino提供了它自己的庫來與ESP32板一起作業,如果你有使用Arduino IDE的經驗,你就知道它是多么容易使用,然而,與ESP-IDF相比,它是以開發靈活性為代價的,你在Arduino允許你做的事情方面受到限制,你需要遵守它的規則,
你可以選擇的第三個選擇是PlatformIO,這不是獨立的IDE或工具,而是作為Visual Studio Code中的擴展,作為開源的嵌入式開發環境,它支持許多不同的嵌入式板、平臺和框架,包括ESP32板和ESP-IDF,安裝之后,它將自己與VSCode UI集成,在這里你可以找到ESP-IDF的idf.py提供的所有功能,除了VSCode IDE的功能外,PlatformIO還有集成的除錯器,支持單元測驗,靜態代碼分析,以及嵌入式編程的遠程開發工具,PlatformIO是平衡易用性和開發靈活性的好選擇,
這三個框架的編程語言是C/C++,所以你需要了解C/C++才能在這些框架內開發,然而,C/C++不是ESP32的唯一編程語言,你可以使用MicroPython進行Python編程,或者使用Espruino進行JavaScript編程,它們都支持ESP32板子,但說實話,我不會用它們來開發任何將在市場上推出的產品,盡管由于你對編程語言的偏好,你可能對它們感到更舒服,但你在它們中都找不到ESP-IDF的功能,
實時作業系統選項
基本上,RTOS提供了確定性的任務調度器,盡管調度規則根據調度演算法的不同而變化,但我們知道我們創建的任務將在這些規則的一定時間內完成,使用實時作業系統的主要優點是降低了復雜性,改進了軟體結構,便于維護,
ESP-IDF支持的主要實時作業系統是FreeRTOS,ESP-IDF使用自己的Xtensa版本的FreeRTOS,與普通的FreeRTOS相比,其根本區別在于對雙核的支持,在ESP-IDF FreeRTOS中,你可以從兩個核心中選擇一個來分配任務,也可以讓FreeRTOS選擇,與原來的FreeRTOS相比,其他的區別主要來自于對雙核的支持,FreeRTOS是在MIT許可下發布的:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos.html,
如果你想把你的ESP32連接到亞馬遜網路服務(AWS)物聯網基礎設施,你可以通過使用亞馬遜FreeRTOS作為你的RTOS選擇來實作,ESP32在AWS的合作伙伴設備目錄中,并得到官方支持,亞馬遜FreeRTOS有必要的庫來連接到AWS物聯網和其他與安全有關的功能,如TLS、OTA更新、與HTTPS、WebSockets和MQTT的安全通信,幾乎是開發安全連接設備的一切:https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html,
Zephyr是另一個RTOS的選擇,它有一個寬松的自由軟體許可,Apache 2.0,Zephyr需要在開發機器上安裝ESP32工具鏈和ESP-IDF,然后,你需要用它們來配置Zephyr,當配置準備好后,我們使用命令列Zephyr工具 "west",用于構建、閃光、監控和除錯目的:https://docs.zephyrproject.org/latest/boards/xtensa/esp32/doc/index.html,
我想在這里分享的最后一個RTOS是Mongoose OS,它通過其網路UI工具mos提供了一個完整的開發環境,它與幾個云物聯網平臺,即AWS物聯網、谷歌物聯網、微軟Azure和IBM Watson,以及任何其他支持MQTT或REST端點的物聯網平臺(如果你需要一個自定義平臺)進行了原生集成,Mongoose OS有兩種不同的許可證,一種是Apache 2.0社區版,另一種是有商業許可證的企業版:https://mongoose-os.com/mos.html,
釘釘或微信號: pythontesting 微信公眾號:pythontesting轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/555236.html
標籤:嵌入式
下一篇:返回列表