热线电话:010-68020361
趙英傑《超圖解 ESP32 深度實作》旗標
该货品暂时缺货,请在下面输入您的邮箱地址或手机号码,当我们有现货供应时,我们会发送邮件通知您!
超圖解 ESP32 深度實作
詳細資料
作者: 趙英傑 出版社:旗標 出版日期:2021/04/16語言:繁體中文定價:880元ISBN:9789863126607規格:平裝 / 784頁 / 17 x 23 x 3.8 cm / 普通級 / 雙色印刷 / 初版
內容簡介
本書是《超圖解 Arduino 互動設計入門》系列作品, 專為想要深度運用 ESP32 的讀者所撰寫, 從基本的 GPIO、內建的磁力感測器、電容觸控開關、物聯網 IoT 運用、低功率藍牙、低耗電睡眠模式、底層 FreeRTOS 作業系統等等, 都透過作者精心設計的實驗, 以及本系列作品最具特色的超圖解方式說明, 包含以下主題:
內建電容觸控開關與霍爾效應磁力感測器 硬體 / 計時器中斷處理與記憶體配置 OLED 顯示器中英文顯示以及圖形顯示 QR code 製作與顯示 Wi-Fi 無線網路物聯網 IoT 應用 HTTP GET/POST 與網路 API 使用 動態資料圖表網頁 WebSocket 網路即時資料傳輸 RTC 即時時鐘與 GPS 精準對時 ESP32 睡眠模式與定時喚醒、觸碰喚醒 SPIFFS 檔案系統與 SD 記憶卡的使用 網路音樂 / podcast 串流播放、文字轉語音播放 mDNS 區域網域名稱 BLE 低功耗藍牙應用 BLE 藍牙鍵盤、滑鼠人機介面輸入裝置製作 藍牙立體聲播放器 經典藍牙序列埠通訊 (SPP) 藍牙裝置電量顯示 HTTPS 加密網路連線與網站建置 Web Bluetooth 網頁藍牙傳輸 Mesh 網路實作 FreeRTOS 作業系統 FreeRTOS 任務排程 看門狗 (watchdog) FreeRTOS 訊息佇列 FreeRTOS 二元旗號 (semaphore) 與互斥旗號 (mutex) OTA 無線韌體更新 物件導向程式設計與自製程式庫 Backtrace 除錯訊息解析 電壓偵測與電流偵測
在學習的過程中, 也帶著讀者動手做出許多有趣實用的實驗, 包括:
煙霧濃度偵測 磁石開關 人體移動警報器 即時天氣顯示器 網頁式遙控調光器 網頁動態圖表 休眠省電定時上傳感測資料 網路收音機 氣溫語音播報機 藍牙立體聲音播放器 藍牙多媒體旋鈕控制器 藍牙多媒體鍵盤 電腦桌面自動切換器 投籃遊戲機 網頁式藍牙遙控車
本書特色
ESP32 是一系列高效能雙核心、低功耗、整合 Wi-Fi 與藍牙的 32 位元微控器, 適合物聯網、可穿戴設備與行動裝置應用。ESP32 的功能強大, 涉及的程式以及應用場域相關背景知識也較為廣泛, 本書的目的是把晦澀的技術內容, 用簡單可活用的形式傳達給讀者。
ESP32 支援多種程式語言, 本書採用最受電子 Maker 熟知的 Arduino 語言。但因為處理器架構不同, 所以某些程式指令, 像是控制伺服馬達以及發出音調的 PWM 輸出指令, 操作語法和典型的 Arduino (泛指在 Arduino 官方的開發板, 如:Uno 板執行的程式) 不一樣, 這意味著某些 Arduino 範例和程式庫無法直接在 ESP32 上執行。
相對地, ESP32 的獨特硬體架構也需要專門的程式庫和指令才能釋放它的威力, 例如, 低功耗藍牙 (BLE) 無線通訊、可輸出高品質數位音效的 I2S(序列音訊介面)、DAC(數位類比轉換器)、Mesh(網狀) 網路、HTTPS 安全加密連網...等。
更有意思的是, ESP32 開發工具引入了 FreeRTOS 即時作業系統, 可運行多工任務 (同時執行多個程式碼), 而 ESP32 Arduino 程式其實就是運作在 FreeRTOS 上的一個任務。因此, 書中除了含括 Arduino 語言外, 也會適時帶入 ESP32 官方開發工具鏈 ESP-IDF 的功能, 除了可操控底層 FreeRTOS 作業系統外, 也可運用 Arduino 中未提供的 ESP32 專屬功能。
本書假設讀者已閱讀過《超圖解 Arduino 互動設計入門》第三或四版, 所以本書的內容不包含基本電子學 (像電阻分壓電路、電晶體開關電路、運算放大器的電路原理分析..等), 也不教導 Arduino 程式入門 (如:條件判斷、迴圈、陣列、指標..等), 而是以《超圖解 Arduino 互動設計入門》為基礎, 將篇幅依照 ESP32 應用的需要, 在程式設計方面說明物件導向 (OOP)、類別繼承、虛擬函式、回呼函式、指標存取結構、堆疊與遞迴...等進階主題。
另外, 本書也不僅僅只是探討 Arduino 程式, 由於微控器是物聯網應用當中的一個環節, 以『透過網頁瀏覽器控制某個裝置』的應用來說, 呈現在瀏覽器的內容是採用 HTML 和 JavaScript 語言開發的互動網頁, 和微控器的 Arduino 程式語言完全不同, 在相關章節也會對這些主題有所著墨。
開發微電腦應用程式, 偶爾會用到一些小工具程式, 例如, 呈現在 OLED 顯示器上的中英文字體與影像, 都必須先經過『轉檔』才能嵌入 Arduino 程式碼, 除了使用現成的工具軟體, 書中也示範採用廣受歡迎的 Python 語言編寫批次轉換字體和影像檔的工具程式。書中提及的 Python 程式屬於進階應用, 是假設讀者閱讀過《超圖解 Python 程式設計入門》, 具備運用 Python 操作檔案目錄、解析命令行參數、轉換影像、執行緒...等相關概念後的延伸學習, 可讓讀者練習善用各種程式語言綜合實踐的方法。
另外, 為了方便讀者查詢書中內容, 本書特別準備了線上版本的索引, 避免一般中文書缺乏索引的問題, 讓讀者可以快速找到所需的主題。希望這本厚實的作品能夠成為各位實作專案時最佳的工具書。 目錄第 1 章 32 位元雙核心 ESP32 晶片以及軟體開發工具1-1 ESP32 的特色與開發板介紹1-2 ESP-IDF 程式開發框架及 menuconfig 工具簡介1-3 使用 Arduino IDE 開發 ESP32 程式1-4 在 Arduino IDE 中編譯 ESP-IDF 程式1-5 ESP32 程式開發工具內含 FreeRTOS(即時作業系統)
第 2 章 ESP32 開發板與 Arduino 程式開發應用2-1 EP32 開發板的接腳2-2 ESP32 的 3 個 UART 序列通訊與 printf() 函式2-3 輸出核心除錯訊息2-4 數位輸出 / 入及電容觸控腳2-5 類比輸入埠:讀取 MQ-2 煙霧 / 可燃性氣體感測值動手做 2-1 偵測煙霧濃度2-6 使用 ESP32 內建的霍爾效應感測器動手做 2-2 磁石控制開關2-7 PWM 輸出動手做 2-3 調光器2-8 調控 PWM 訊號的頻率:發出聲音動手做 2-4 發出聲音動手做 2-5 控制伺服馬達2-9 字串處理:String 與 std::string 類型
第 3 章 物件導向程式設計與自製 Arduino 程式庫3-1 模組化程式設計動手做 3-1 可分辨「按一下」和 「長按」動作的開關3-2 使用 enum 定義常數數字的集合3-3 物件導向程式設計:自己寫程式庫動手做 3-2 使用自製的 Switch 程式庫製作調光器
第 4 章 中斷處理以及 ESP32 記憶體配置4-1 觸發中斷的時機與中斷服務常式動手做 4-1 設定與取消硬體中斷4-2 volatile 和主記憶體分區4-3 分時多工與執行緒4-4 解析 ESP32 的回溯(Backtrace)除錯訊息4-5 微波感應偵測物體移動動手做 4-2 人體移動警報器4-6 計時器中斷動手做 4-3 利用計時器定時閃爍 LED動手做 4-4 用計時器定時閃爍 LED 之後刪除計時器物件4-7 認識堆疊(stack)和堆積(heap)記憶體區域
第 5 章 OLED 顯示器以及 Python 中文轉換工具程式設計5-1 使用 OLED 顯示器顯示文字訊息動手做 5-1 使用 U8g2 程式庫操控 OLED 顯示器動手做 5-2 在 OLED 顯示器呈現動態資料5-2 全畫面及分頁暫存區(buffer)5-3 產生顯示器用的點陣字體子集5-4 使用 JavaScript 和 Python 取得字元編碼動手做 5-3 在 OLED 螢幕顯示中文5-5 點陣 VS 向量字體:使用 FontForge 軟體檢視5-6 透過 Python 程式一氣呵成文字編碼和程式輸出
第 6 章 Wi-Fi 無線物聯網操控裝置6-1 認識 Wi-Fi 無線網路6-2 使用 ESP32 的 WiFi 程式庫連接無線網路動手做 6-1 連線到 Wi-Fi 網路並顯示 IP 位址和電波訊號強度動手做 6-2 建立 Wi-Fi 無線接入點(AP)動手做 6-3 使用 WebServer 程式庫建立 HTTP 伺服器動手做 6-4 處理 GET 或 POST 請求6-3 在 ESP32 的快閃記憶體中儲存網頁檔案6-4 透過 JavaScript(jQuery 程式庫)動態擷取 ESP32 資料動手做 6-5 從 ESP32 輸出網頁的純文字更新資料動手做 6-6 動態網頁調光器
第 7 章 擷取網路資料以及 Python OLED 圖像轉換工具7-1 網路應用程式訊息交換格式:XML 與 JSON動手做 7-1 讀取 JSON 格式的世界各地天氣資料動手做 7-2 從 ESP32 讀取氣象網站資料7-2 使用 ArduinoJson 程式庫處理 JSON 資料7-3 在 OLED 螢幕顯示天氣概況7-4 在 OLED 螢幕顯示開機畫面(點陣圖)7-5 自動批次轉換點陣圖檔的 Python 程式
第 8 章 物聯網動態資料圖表網頁8-1 從 ESP32 網站伺服器輸出 JSON 資料動手做 8-1 從 ESP32 伺服器輸出 JSON 文件8-2 使用 chart.js 在網頁繪製動態圖表8-3 動態新增圖表資料8-4 即時動態圖表動手做 8-2 呈現即時動態數據圖表
第 9 章 使用 WebSocket 即時連線監控聯網裝置9-1 使用 WebSocket 建立即時連線9-2 使用 JavaScript 的 WebSocket 物件與 ESP32 伺服器連線動手做 9-1 透過 WebSocket 從 ESP32 發送 JSON 資料
第 10 章 RTC 即時鐘以及網路和 GPS 精確對時10-1 再談 struct(結構)10-2 內建在 ESP32 晶片內部的月曆和時鐘:即時鐘(RTC)動手做 10-1 透過網際網路更新時間10-3 在 ESP32 的 Serial2 序列埠連接 GPS 衛星定位模組動手做 10-2 連接 GPS 模組10-4 認識 NMEA 標準格式與獲取 GPS 的經緯度值10-5 解析 GPS 訊號的經緯度和日期時間資料動手做 10-3: 使用 TinyGPS++ 程式庫解析 GPS 訊號
第 11 章 ESP32 的睡眠模式與喚醒方法11-1 超低功耗的深度睡眠模式