//cs-a.ecimg.tw/items/DJAA2VA900B8AK0/000001_1617696110.jpg;
商品編號:DJAA2V-A900B8AK0

超圖解 ESP32 深度實作

$695
$880
  • 登記送

    i郵箱-下單取貨之訂單登記送30點現金積點(使用效期30天/限量)

  • 登記抽

    i郵箱-下單取貨之訂單登記抽700點現金積點(使用效期30天)

  • 登記送

    【7-11】單筆滿$350純取貨/取貨付款訂單登記送韓風拌拌炸雞兌換券乙張(限量)

付款方式
出貨
  • PChome 倉庫出貨,24小時到貨
配送
宅配滿$490免運,超取滿$350免運
  • 宅配到府(本島/低溫)
    滿$699免運
  • 宅配到府(本島/常溫)
    滿$490免運
  • 超商取貨(常溫)
    滿$350免運
  • 超商取貨(低溫)
    滿$699免運
  • i郵箱(常溫)
    滿$290免運

商品評價

5.0
共 1 則評價
5.0
100%
4.0
0%
3.0
0%
2.0
0%
1.0
0%
最相關
*國*
2024/05/25
商品詳情
作者:
ISBN:
9789863126607
出版社:
出版日期:
2021/04/16
  • 內文簡介

  • <內容簡介>

    本書是《超圖解 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 超低功耗的深度睡眠模式
    11-2 定時喚醒微控器
    動手做 11-1 觸控喚醒微控器
    11-3 搭配網路時間的定時喚醒程式
    11-4 認識 ThingSpeak 物聯網雲端平台
    動手做 11-2 定時喚醒 ESP32 並上傳感測資料
    11-5 在深度睡眠中維持接腳的狀態:控制 RTC_GPIO 接腳
    動手做 11-3 在深度睡眠時維持數位 輸出狀態
    11-6 外部喚醒:透過 GPIO 腳
    動手做 11-4 透過 GPIO 腳從外部喚醒 ESP32

    第 12 章 SPIFFS 檔案系統與 MicroSD 記憶卡
    12-1 快閃記憶體的 SPIFFS 分區配置與操作
    動手做 12-1 在 SPIFFS 中寫入與讀取檔案
    動手做 12-2 使用 SPIFFS 紀錄執行狀態
    12-2 透過網頁表單上傳檔案到ESP32
    12-3 連接 microSD 記憶卡
    動手做 12-3 使用 SD 記憶卡提供 ESP32 伺服器網頁
    動手做 12-4 寫入 DHT11 溫濕度紀錄到 MicroSD 記憶卡
    12-4 重複利用既有的程式碼:父類別、子類別與繼承
    12-5 透過指標存取類別物件

    第 13 章 設置區域網路域名、動態顯示 QR Code 以及 OTA 更新韌體
    13-1 設置區域網路域名
    動手做 13-1 替 ESP32 伺服器設定本地域名
    13-2 用 QR Code 二維條碼呈現網址
    動手做 13-2 在 OLED 螢幕顯示本機 IP 位址和 QR 碼
    13-3 透過 OTA 更新 ESP32 的韌體
    動手做 13-3 透過 Arduino IDE 進行 OTA 更新
    動手做 13-4 透過網頁表單上傳檔案更新 ESP32 韌體

    第 14 章 網路收音機、文字轉語音播報裝置與音樂播放器
    14-1 I2S 序列音訊介面
    14-2 製作網路收音機的前置作業
    動手做 14-1 網路收音機 / Podcast 播放器
    14-3 使用 Google 文字轉語音服務
    動手做 14-2 氣溫語音播報服務
    14-4 認識與解析 WAV 聲音檔案格式資料
    14-5 驅動 I2S 週邊播放 WAV 音檔
    14-6 兼具播放立體聲和單聲道 WAV 音源的程式
    14-7 使用自訂結構解析 WAV 音檔標頭

    第 15 章 典型藍牙以及 BLE 藍牙應用實作
    15-1 藍牙立體聲接收器以及 ESP32 內部的 DAC
    動手做 15-1 ESP32 藍牙立體聲播放器
    15-2 ESP32 經典藍牙序列埠通訊程式
    動手做 15-2 ESP32 藍牙序列埠通訊
    15-3 使用 Serial Bluetooth Terminal 手機 App 連接藍牙
    動手做 15-3 藍牙 SPP 一對一連線
    15-4 開發 BLE 藍牙裝置
    15-5 使用 nRF Connect 工具軟體檢測 BLE 藍牙裝置
    15-6 製作 ESP32 BLE 藍牙序列通訊裝置
    15-7 特徵回呼虛擬類別
    15-8 提供 BLE 藍牙剩餘電量資訊服務
    動手做 15-4 BLE 藍牙通知電量
    15-9 偵測負載的電流量
    動手做 15-5 測量負載的消耗電流

    第 16 章 BLE 藍牙人機輸入裝置應用實作
    16-1 旋轉編碼器
    動手做 16-1 連接旋轉編碼器
    動手做 16-2 結合 Switch 類別的旋轉編碼器程式
    16-2 整合 BLE 藍牙鍵盤與滑鼠的程式庫
    動手做 16-3 BLE 藍牙多媒體控制器旋鈕
    16-3 BLE 藍牙多媒體鍵盤
    動手做 16-4 連接 ESP32 與按鍵模組
    動手做 16-5 整合滑鼠與多媒體鍵盤
    16-4 電腦桌面自動切換器
    動手做 16-6 使用 VL53L0X 飛時測距模組測量距離
    動手做 16-7 電腦桌面自動切換器
    16-5 人機介面裝置(HID)程式庫的原理說明

    第 17 章 FreeRTOS 即時系統核心入門
    17-1 認識 FreeRTOS 以及任務排程
    動手做 17-1 第一個 FreeRTOS 程式
    17-2 FreeRTOS 資料類型
    17-3 FreeRTOS 任務的一生
    17-4 任務的優先權與看門狗
    17-5 動態調整任務優先權與刪除任務
    17-6 ESP32 的可用記憶體容量以及任務的記憶體用量
    17-7 傳遞參數給任務函式

    第 18 章 FreeRTOS 即時系統核心應用
    18-1 ESP32 Arduino 程式的起始點:app_main()
    動手做 18-1 OLED 顯示器任務
    18-2 透過佇列傳遞任務資料
    動手做 18-2 讀取類比值並顯示在 OLED 螢幕
    18-3 熱敏電阻
    動手做 18-3 在佇列中傳遞結構資料
    18-4 使用旗號(Semaphore)鎖定資源
    動手做 18-4 由多工任務和中斷常式構成的投籃機

    第 19 章 採用 HTTPS 加密連線的前端與 Web 伺服器
    19-1 認識 HTTPS 加密連線
    19-2 檢視與匯出網站的憑證
    19-3 以 HTTPS 加密連線取得 ThingSpeak 資料
    動手做 19-1 從 ESP32 以 HTTPS 加密連線 ThingSpeak
    動手做 19-2 在 SPIFFS 中存放 CA 憑證檔
    19-4 使用 OpenSSL 工具產生自簽的 SSL/TLS 憑證
    19-5 在 ESP32 建立 HTTPS 加密連線的 Web 伺服器
    19-6 在瀏覽器中匯入自簽憑證

    第 20 章 使用 JavaScript 操控 ESP32 BLE 藍牙裝置
    20-1 使用瀏覽器探索藍牙裝置
    20-2 JavaScript 非同步程式設計
    20-3 替 VS Code 程式編輯器安裝 Live Server 伺服器
    20-4 透過 navigator.bluetooth 物件操控ESP32 藍牙裝置
    20-5 讀取與寫入藍牙 UART 服務的 TX 和 RX 特徵值
    20-6 ArrayBuffer(位元組陣列)與DataView(資料視圖)
    20-7 使用 async/await 改寫藍牙網頁程式
    20-8 藍牙遙控車的雙馬達驅動與控制電路
    動手做 20-1 編寫馬達驅動程式模組
    動手做 20-2 網頁藍牙 ESP32 遙控車
    20-9 製作藍牙遙控車的互動網頁

    第 21 章 建立無線 Mesh(網狀)通訊網路
    21-1 認識與建立 Mesh 網路
    21-2 調配與執行多工任務的 Task Scheduler 程式庫
    動手做 21-1 在 Mesh 網路中分享訊息
    21-3 組建 Mesh 感測器網路
    動手做 21-2 Mesh 感測器網路的根節點程式
    21-4 在 Mesh 網路中一對一傳送資料
    21-5 連接 Mesh 網路與網際網路
    21-6 上傳 Mesh 網路資料到雲端

    附錄 A Python Asyncio(非同步 IO)多工處理以及 BLE 藍牙連線程式設計
    A-1 Python 多工處理程式
    A-2 使用 Python Bleak 程式庫連結 BLE 藍牙裝置

    索引 
購物須知
寄送時間
全台灣24h到貨,遲到提供100元現金積點。全年無休,週末假日照常出貨。例外說明
送貨方式
透過宅配送達。除網頁另有特別標示外,均為常溫配送。
消費者訂購之商品若經配送兩次無法送達,再經本公司以電話與Email均無法聯繫逾三天者,本公司將取消該筆訂單,並且全額退款。
送貨範圍
限台灣本島與離島地區註,部分離島地區包括連江馬祖、綠島、蘭嶼、琉球鄉…等貨件,將送至到岸船公司碼頭,需請收貨人自行至碼頭取貨。注意!收件地址請勿為郵政信箱。
註:離島地區不配送安裝商品、手機門號商品、超大材商品及四機商品。
售後服務
缺掉頁更換新品
執照證號&登錄字號
本公司食品業者登錄字號A-116606102-00000-0
關於退貨
  • PChome24h購物的消費者,都可以依照消費者保護法的規定,享有商品貨到次日起七天猶豫期的權益。(請留意猶豫期非試用期!!)您所退回的商品必須回復原狀(復原至商品到貨時的原始狀態並且保持完整包裝,包括商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性)。商品一經拆封/啟用保固,將使商品價值減損,您理解本公司將依法收取回復原狀必要之費用(若無法復原,費用將以商品價值損失計算),請先確認商品正確、外觀可接受再行使用,以免影響您的權利,祝您購物順心。
  • 如果您所購買商品是下列特殊商品,請留意下述退貨注意事項:
    1. 易於腐敗之商品、保存期限較短之商品、客製化商品、報紙、期刊、雜誌,依據消費者保護法之規定,於收受商品後將無法享有七天猶豫期之權益且不得辦理退貨。
    2. 影音商品、電腦軟體或個人衛生用品等一經拆封即無法回復原狀的商品,在您還不確定是否要辦理退貨以前,請勿拆封,一經拆封則依消費者保護法之規定,無法享有七天猶豫期之權益且不得辦理退貨。
    3. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,一經您事先同意後始提供者,依消費者保護法之規定,您將無法享有七天猶豫期之權益且不得辦理退貨。
    4. 組合商品於辦理退貨時,應將組合銷售商品一同退貨,若有遺失、毀損或缺件,PChome將可能要求您依照損毀程度負擔回復原狀必要之費用。
  • 若您需辦理退貨,請利用顧客中心「查訂單」或「退訂/退款查詢」的「退訂/退貨」功能填寫申請,我們將於接獲申請之次日起1個工作天內檢視您的退貨要求,檢視完畢後將以E-mail回覆通知您,並將委託本公司指定之宅配公司,在5個工作天內透過電話與您連絡前往取回退貨商品。請您保持電話暢通,並備妥原商品及所有包裝及附件,以便於交付予本公司指定之宅配公司取回(宅配公司僅負責收件,退貨商品仍由特約廠商進行驗收),宅配公司取件後會提供簽收單據給您,請注意留存。
  • 退回商品時,請以本公司或特約廠商寄送商品給您時所使用的外包裝(紙箱或包裝袋),原封包裝後交付給前來取件的宅配公司;如果本公司或特約廠商寄送商品給您時所使用的外包裝(紙箱或包裝袋)已經遺失,請您在商品原廠外盒之外,再以其他適當的包裝盒進行包裝,切勿任由宅配單直接粘貼在商品原廠外盒上或書寫文字。
  • 若因您要求退貨或換貨、或因本公司無法接受您全部或部分之訂單、或因契約解除或失其效力,而需為您辦理退款事宜時,您同意本公司得代您處理發票或折讓單等相關法令所要求之單據,以利本公司為您辦理退款。
  • 本公司收到您所提出的申請後,若經確認無誤,將依消費者保護法之相關規定,返還您已支付之對價(含信用卡交易),退款日當天會再發送E-mail通知函給您。