ESP32-C3物聯網工程開發實戰( 簡體 字) | |
作者:樂鑫科技 | 類別:1. -> 電腦組織與體系結構 -> 單晶片 -> Arduino 2. -> 程式設計 -> 物聯網 |
出版社:電子工業出版社 | 3dWoo書號: 56074 詢問書籍請說出此書號! 有庫存 NT售價: 490 元 |
出版日:9/1/2022 | |
頁數:388 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121442971 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1篇 準備篇
第1章 淺談物聯網 2 1.1 物聯網的體系結構 2 1.2 物聯網應用之智能家居 4 第2章 物聯網工程項目的介紹和實戰 6 2.1 典型的物聯網工程項目介紹 6 2.1.1 常見物聯網設備的基本模塊 6 2.1.2 用戶端應用程序基本模塊 7 2.1.3 常見的物聯網云平臺簡介 7 2.2 實戰:智能照明工程 8 2.2.1 工程框架 9 2.2.2 工程功能 9 2.2.3 硬件準備 10 2.2.4 開發步驟 11 2.3 本章總結 11 第3章 ESP RainMaker介紹 12 3.1 什么是ESP RainMaker 12 3.2 ESP RainMaker的實現原理 13 3.2.1 Claiming服務 14 3.2.2 RainMaker設備側代理程序 15 3.2.3 云后端 16 3.2.4 客戶端 16 3.3 實戰:ESP RainMaker開發要點 18 3.4 ESP RainMaker功能摘要 19 3.4.1 賬戶管理功能 19 3.4.2 對終端用戶開放的功能 19 3.4.3 對管理員用戶開放的功能 20 3.5 本章總結 20 第4章 開發環境的搭建與詳解 21 4.1 ESP-IDF概述 21 4.1.1 ESP-IDF版本介紹 21 4.1.2 ESP-IDF Git工作流程 22 4.1.3 選擇一個合適的版本 23 4.1.4 ESP-IDF SDK目錄總覽 23 4.2 ESP-IDF開發環境安裝詳解 26 4.2.1 在Linux系統下安裝ESP-IDF開發環境 27 4.2.2 在Windows系統下安裝ESP-IDF開發環境 29 4.2.3 在Mac系統下安裝ESP-IDF開發環境 34 4.2.4 VS Code代碼編輯工具的安裝 35 4.2.5 第三方開發環境簡介 35 4.3 ESP-IDF編譯系統詳解 36 4.3.1 編譯系統基本概念 36 4.3.2 工程文件結構 36 4.3.3 編譯系統默認的構建規范 38 4.3.4 編譯腳本詳解 38 4.3.5 常用命令詳解 39 4.4 實戰:Blink示例程序編譯 40 4.4.1 Blink示例程序分析 40 4.4.2 Blink示例程序的編譯過程 42 4.4.3 Blink示例程序的燒錄過程 46 4.4.4 Blink示例程序的串口Log分析 46 4.5 本章總結 49 第2篇 硬件與驅動開發篇 第5章 ESP32-C3的智能照明產品的硬件設計 52 5.1 智能照明產品的功能及組成 52 5.2 ESP32-C3最小硬件系統設計 55 5.2.1 電源 58 5.2.2 上電時序與復位 58 5.2.3 SPI Flash 59 5.2.4 時鐘源 59 5.2.5 射頻及天線 60 5.2.6 Strapping引腳 62 5.2.7 GPIO和PWM功能 62 5.3 實戰:使用ESP32-C3構建智能照明系統 63 5.3.1 模組選用 63 5.3.2 PWM信號的GPIO配置 63 5.3.3 固件燒錄和調試接口 65 5.3.4 射頻設計要求 67 5.3.5 供電電源設計要求 68 5.4 本章總結 68 第6章 驅動開發 70 6.1 驅動開發過程 70 6.2 ESP32-C3外設應用 71 6.3 LED驅動基礎 72 6.3.1 色彩空間 72 6.3.2 LED驅動器 76 6.3.3 LED調光 76 6.3.4 PWM介紹 77 6.4 LED調光驅動開發 78 6.4.1 非易失性存儲 78 6.4.2 LED PWM控制器 79 6.4.3 LED PWM編程 81 6.5 實戰:智能照明工程中的驅動開發 84 6.5.1 按鍵驅動 84 6.5.2 LED調光驅動 85 6.6 本章總結 89 第3篇 無線通信與控制篇 第7章 Wi-Fi網絡配置和連接 92 7.1 Wi-Fi基礎知識 92 7.1.1 什么是Wi-Fi 92 7.1.2 IEEE 802.11的發展歷程 92 7.1.3 Wi-Fi相關術語 93 7.1.4 Wi-Fi連接的過程 95 7.2 藍牙基礎知識 102 7.2.1 什么是藍牙 102 7.2.2 藍牙相關術語 103 7.2.3 藍牙連接的過程 105 7.3 Wi-Fi配網 108 7.3.1 Wi-Fi配網導讀 109 7.3.2 SoftAP配網 109 7.3.3 一鍵配網 111 7.3.4 藍牙配網 112 7.3.5 其他配網方式 114 7.4 Wi-Fi編程 116 7.4.1 ESP-IDF中的Wi-Fi組件 116 7.4.2 牛刀小試:Wi-Fi連接初體驗 117 7.4.3 大顯身手:Wi-Fi連接智能化 121 7.5 實戰:智能照明工程中實現Wi-Fi配置 131 7.5.1 智能照明工程Wi-Fi連接實例 132 7.5.2 Wi-Fi智能化配置實例 133 7.6 本章總結 134 第8章 設備的本地控制 135 8.1 本地控制的介紹 135 8.1.1 本地控制的使用條件 136 8.1.2 本地控制的適用場景 137 8.1.3 本地控制的優勢 137 8.1.4 通過智能手機發現被控設備 137 8.1.5 智能手機與被控設備的數據通信 138 8.2 常見的本地發現方法 138 8.2.1 廣播 139 8.2.2 組播 144 8.2.3 廣播與組播對比 150 8.2.4 本地發現之組播應用協議mDNS 150 8.3 常見的本地數據通信協議 153 8.3.1 TCP協議 153 8.3.2 HTTP協議 158 8.3.3 UDP協議 162 8.3.4 CoAP協議 165 8.3.5 藍牙通信協議 170 8.3.6 數據通信協議總結 175 8.4 數據安全性的保證 176 8.4.1 TLS協議介紹 178 8.4.2 DTLS協議介紹 183 8.5 實戰:基于ESP-IDF組件快速實現智能燈本地控制模塊 186 8.5.1 創建基于Wi-Fi的本地控制服務器端 186 8.5.2 使用腳本驗證本地控制功能 190 8.5.3 創建基于藍牙的本地控制服務器端 191 8.6 本章總結 193 第9章 設備的云端控制 194 9.1 遠程控制的介紹 194 9.2 常見的云端數據通信協議 195 9.2.1 MQTT協議介紹 195 9.2.2 MQTT協議原理 195 9.2.3 MQTT消息格式 197 9.2.4 協議對比 200 9.2.5 基于Windows或Linux搭建MQTT Broker 201 9.2.6 基于ESP-IDF創建MQTT客戶端 202 9.3 保證MQTT數據安全性 204 9.3.1 證書的含義與作用 205 9.3.2 本地生成證書 206 9.3.3 配置MQTT Broker 209 9.3.4 配置MQTT客戶端 209 9.4 實戰:通過ESP RainMaker實現智能照明工程的遠程控制 211 9.4.1 ESP RainMaker的基本概念 211 9.4.2 節點與云后端通信協議 212 9.4.3 客戶端與云后端通信方法 216 9.4.4 用戶體系 219 9.4.5 基礎服務介紹 220 9.4.6 智能燈示例 222 9.4.7 RainMaker App與第三方集成 228 9.5 本章總結 233 第10章 智能手機App開發 234 10.1 智能手機App開發技術介紹 234 10.1.1 智能手機App開發概述 234 10.1.2 Android項目的結構 235 10.1.3 iOS項目的結構 236 10.1.4 Android Activity的生命周期 237 10.1.5 iOS ViewController的生命周期 238 10.2 新建智能手機App項目 239 10.2.1 Android開發的準備 239 10.2.2 新建Android項目 239 10.2.3 添加MyRainmaker項目所需的依賴 241 10.2.4 Android權限申請 241 10.2.5 iOS開發的準備 242 10.2.6 新建iOS項目 242 10.2.7 添加RainMaker所需的依賴 243 10.2.8 iOS權限的申請 245 10.3 App功能需求分析 245 10.3.1 項目功能需求分析 245 10.3.2 用戶登錄注冊需求分析 245 10.3.3 設備配網和綁定需求分析 247 10.3.4 遠程控制需求分析 248 10.3.5 定時需求分析 248 10.3.6 用戶中心需求分析 249 10.4 用戶登錄注冊功能的開發 249 10.4.1 RainMaker項目接口說明 250 10.4.2 智能手機如何發起通信請求 250 10.4.3 賬號注冊 250 10.4.4 賬號登錄 253 10.5 設備配網功能的開發 256 10.5.1 掃描設備 257 10.5.2 連接設備 258 10.5.3 生成私鑰 261 10.5.4 獲取設備的節點ID 261 10.5.5 設備配網 264 10.6 設備控制功能的開發 266 10.6.1 云端綁定賬號與設備 266 10.6.2 獲取用戶的所有設備 268 10.6.3 獲取設備當前狀態 271 10.6.4 修改設備狀態 273 10.7 定時功能和用戶中心功能的開發 275 10.7.1 實現定時功能 275 10.7.2 實現用戶中心功能 278 10.7.3 更多云端接口 280 10.8 本章總結 282 第11章 固件更新與版本管理 283 11.1 固件更新 283 11.1.1 分區表概述 284 11.1.2 固件啟動流程 285 11.1.3 OTA升級原理概述 287 11.2 固件版本管理 290 11.2.1 固件標記 290 11.2.2 回滾與防回滾功能 291 11.3 實戰:OTA升級使用示例 292 11.3.1 利用本地主機完成固件更新 292 11.3.2 利用ESP RainMaker完成固件更新 295 11.4 本章總結 302 第4篇 優化與量產篇 第12章 電源管理和低功耗優化 304 12.1 ESP32-C3電源管理 304 12.1.1 動態調頻 305 12.1.2 電源管理配置 306 12.2 ESP32-C3低功耗模式 306 12.2.1 Modem-sleep模式 307 12.2.2 Light-sleep模式 309 12.2.3 Deep-sleep模式 314 12.2.4 不同功耗模式下的功耗 315 12.3 電源管理和低功耗調試 316 12.3.1 日志調試 316 12.3.2 GPIO調試 318 12.4 實戰:在智能照明工程中添加電源管理 319 12.4.1 配置電源管理功能 320 12.4.2 使用電源管理鎖 321 12.4.3 驗證功耗表現 322 12.5 本章總結 322 第13章 增強設備的安全功能 323 13.1 物聯網設備數據安全概述 323 13.1.1 為什么要保護物聯網設備數據的安全 324 13.1.2 保護物聯網設備數據安全的基本要求 325 13.2 數據完整性保護 325 13.2.1 完整性校驗方法簡介 325 13.2.2 固件數據的完整性校驗 326 13.2.3 示例 327 13.3 數據機密性保護 327 13.3.1 數據加密簡介 327 13.3.2 Flash加密方案概述 329 13.3.3 存儲Flash加密方案的密鑰 331 13.3.4 Flash加密的工作模式 332 13.3.5 Flash加密的一般工作流程 333 13.3.6 NVS加密方案簡介 334 13.3.7 Flash加密方案和NVS加密方案的示例 335 13.4 數據合法性的保護 338 13.4.1 數字簽名簡介 338 13.4.2 Secure Boot方案概述 339 13.4.3 軟Secure Boot介紹 339 13.4.4 硬Secure Boot介紹 341 13.4.5 示例 344 13.5 實戰:在量產中批量使用安全功能 346 13.5.1 Flash加密方案與Secure Boot方案的關系 346 13.5.2 使用量產工具批量使用Flash加密方案與Secure Boot方案 347 13.5.3 在智能照明系統中使用Flash加密方案與Secure Boot方案 348 13.6 本章總結 348 第14章 量產的固件燒錄和測試 349 14.1 量產固件燒錄 349 14.1.1 定義數據區 349 14.1.2 固件燒錄 351 14.2 量產測試 352 14.3 實戰:智能照明工程中的量產數據 353 14.4 本章總結 354 第15章 ESP Insights遠程監察平臺 355 15.1 ESP Insights組件的簡介 355 15.2 ESP Insights組件的使用 358 15.2.1 在esp-insights工程中使用ESP Insights組件 358 15.2.2 在esp-insights工程中運行示例diagnostics_smoke_test 360 15.2.3 上報Coredump信息 361 15.2.4 定制感興趣的日志 361 15.2.5 上報設備重啟原因 362 15.2.6 上報自定義的指標值 362 15.3 實戰:基于智能燈示例使用ESP Insights組件 365 15.4 本章總結 366 參考文獻 367 ESP32-C3是搭載了開源指令集RISC-V的32位低功耗、低成本、安全的物聯網芯片,本書也是該芯片原廠樂鑫科技的官方作品。本書從物聯網工程開發的必備知識入手,循序漸進地介紹了硬件設計、外設驅動、ESP-IDF開發環境搭建、Wi-Fi網絡配置、本地和云端控制、OTA升級原理、電源管理、低功耗優化、設備安全功能、固件版本管理和量產測試等方面的內容。物聯網工程開發涉及的知識點很多,本書根據所涉及的知識點將全書分為4篇,分別是準備篇(第1~4章)、硬件與驅動開發篇(第5~6章)、無線通信與控制篇(第7~11章)、優化與量產篇(第12~15章),可幫助讀者更好地掌握相關的知識點。
序 言
寫在前面 世界信息化的進程正在迅猛發展。 繼互聯網之后,物聯網的浪潮已然到來。作為數字經濟時代的新型基礎設施,物聯網得到了我國政府的高度重視和政策支持。樂鑫信息科技(上海)股份有限公司(簡稱樂鑫科技或樂鑫)自2008年創立以來,一直肩負著“科技民主化”的重要使命,致力于構建“萬物智聯”的世界,讓“連接”成為開發者觸手可得的技術。 自研芯片的道路就像一場馬拉松,需要不斷突破科技邊界。樂鑫科技深耕物聯網領域的軟硬件產品研發,先后發布了ESP32、ESP32-C、ESP32-S、ESP32-H等系列芯片。從早期被認為“改變物聯網游戲規則”的ESP8266芯片,到ESP32系列芯片開始增加Bluetooth? LE和AI算法功能并實現了最高240 MHz的雙核處理,再到ESP32-S3系列芯片增加的AI硬件加速器,樂鑫科技不斷在軟件技術上進行投入,圍繞AIoT的核心,覆蓋工具鏈、編譯器、操作系統、應用框架、AI算法、云產品、App等,實現了AIoT領域的軟硬件一體化解決方案閉環。 截至2022年7月,樂鑫科技的IoT芯片累計出貨量已超過8億顆,在Wi-Fi MCU領域遙遙領先,賦能了全球數億的智能產品。正是這種精益求精的精神,才使得樂鑫科技每次發布的新產品,總能以高集成度和低成本引爆物聯網市場。ESP32-C3芯片的發布,是樂鑫科技底層自研技術積累的結晶,也是一個新里程碑式的事件。ESP32-C3芯片搭載了自研的基于開源指令集RISC-V的32位單核處理器,時鐘頻率高達160 MHz,內置400 KB的SRAM,集成了2.4 GHz的Wi-Fi和支持長距離的Bluetooth 5(LE),具有行業領先的射頻性能和低功耗特性,可滿足常見的物聯網產品功能需求,同時安全性能也大幅度提升。本書以成熟的ESP32-C3為硬件基礎,闡述物聯網項目開發等技術知識。 聚焦平臺能力,回饋生態社區 樂鑫科技不僅僅是一家半導體公司,更是一家物聯網平臺型公司,始終堅持在技術領域尋求突破和創新。與此同時,樂鑫科技以開放的心態,將自研的操作系統和軟件框架開源分享到社區,形成了獨樹一幟的生態環境。眾多的工程師、創客及技術愛好者,積極開發新的軟件應用,自由交流并分享使用心得。每時每刻都可以在各類平臺看到開發者的奇思妙想,如Youtube、Bilibili視頻平臺,以及GitHub、Gitee等代碼托管平臺。有的開發者還自發編寫了關于樂鑫科技產品的圖書,已逾100本,涉及的語種有中文、英文、德文、法文、日文等十多種。 正是來自社區伙伴的支持和信任,鼓勵著樂鑫科技不斷創新。樂鑫科技的創始人兼CEO張瑞安先生曾說:“我們在尋找答案,去解決人們目前生活中需要解決的問題。我們致力向社會貢獻商業實踐、工具、文檔、寫作以及想法。”樂鑫科技是一家非常重視閱讀和想法的公司,而物聯網技術的不斷升級,對工程師綜合素質的要求越來越高,如何才能幫助更多人快速掌握物聯網芯片、操作系統、軟件框架、應用方案以及云服務產品呢?授人以魚不如授人以漁,于是在一次頭腦風暴會議中,我們在想是否能寫一本書,將知識點系統性地梳理出來呢?想法一拍即合,我們迅速在公司聚集了資深工程師們,并整合了技術團隊關于嵌入式編程、物聯網硬件和軟件開發的相關經驗,撰寫了本書。在寫作過程中,我們盡量客觀公正、抽絲剝繭,用輕松簡明的語言講述物聯網的紛繁和魅力。我們認真總結了常見的問題,傾聽了社區的反饋和建議,希望能清晰地回答在開發過程中遇到的諸多疑問,為相關技術人員和決策者提供實用的物聯網開發指南。 本書的結構 本書以工程師為中心視角,循序漸進地闡述了物聯網工程開發的必備知識,全書分為4篇,具體如下: 準備篇(第1~4章)、硬件與驅動開發篇(第5~6章)、無線通信與控制篇(第7~11章)、優化與量產篇(第12~15章),可幫助讀者更好地掌握相關的知識點。 準備篇:包括第1~4章,本篇主要介紹物聯網體系結構、典型的物聯網工程項目框架、ESP RainMaker? 物聯網云平臺和ESP-IDF開發環境的搭建,為物聯網工程開發夯實基礎。 硬件與驅動開發篇:包括第5~6章,本篇以ESP32-C3芯片為基礎,論述了如何設計最小硬件系統和驅動開發,實現了調光、調色的控制以及無線通信功能。 無線通信與控制篇:包括第7~11章,本篇主要闡述基于ESP32-C3芯片的智能化Wi-Fi網絡配置方案、本地控制協議和云端控制協議、設備的本地控制和遠程控制,并給出了智能手機App的開發、固件更新、版本管理等方案。 優化與量產篇:包括第12~15章,本篇為提高篇,主要從電源管理、低功耗優化、增強安全等角度介紹物聯網產品的優化,并介紹了量產的固件燒錄和測試、如何通過ESP Insights遠程監察平臺來診斷設備固件的運行狀態和日志。 關于源代碼的使用 讀者可以實踐本書中的程序示例,既可手工輸入代碼,也可使用本書配套的源代碼。本書注重理論和實踐的結合,幾乎每章都在最后給出了智能照明工程實戰,并已開源。歡迎讀者前往esp32.com、GitHub和Gitee中與本書相關的版塊下載源碼并進行討論。本書的開源代碼遵循Apache 2.0 許可證的條款。 寫在最后 本書為樂鑫科技的官方出品,主要編寫人員是公司的資深工程師。本書適合計算機相關行業的管理者、研發人員,高等院校相關專業的師生以及物聯網領域的愛好者閱讀,希望本書成為大家如良師益友般的工作手冊、工具書和床頭書。 本書在編寫過程中,借鑒和參考了國內外專家、學者、技術人員的相關研究成果,我們盡可能按學術規范予以說明,但難免會有疏漏之處,在此謹向有關作者表示深深的敬意和謝意。此外,書中引用了互聯網上的資訊,在此向原作者和刊發機構致謝,對于不能一一注明引用來源的資訊作者深表歉意。 本書的順利出版,經過了很多輪的內部討論,聽取了試讀者和出版社編輯的建議反饋,再次感謝各位的幫助,使本書得以盡早與讀者見面。 最后,也是最重要的,感謝樂鑫科技每一位為產品的誕生和普及而付出心血的同仁。 物聯網工程開發涉及的知識面非常廣泛,限于本書篇幅,以及筆者的水平和經驗,疏漏之處在所難免,懇請廣大專家和讀者批評指正。若您對本書有任何建議,請及時聯系我們,聯系郵箱。我們期待您的反饋。 樂鑫科技團隊 2022年8月8日 |