《超圖解ESP32深度實作》勘誤以及補充內容

本文列舉《超圖解ESP32深度實作》的內容勘誤以及補充文件的連結。

ESP32補充內容

製作Wi-Fi無線網路連線設置介面,請參閱《Wi-Fi Manager:ESP8266和ESP32開發板的無線網路管理設置介面》。

關於遊戲控制器(手把)的HID報告補充說明,請參閱《自製Switch Pro相容遊戲控制器》。

編寫藍牙無線遊戲控制器Arduino程式庫的補充說明,請參閱《自製Switch Pro相容遊戲控制器(四):ESP32 BLE藍牙低功耗遊戲手把》。

書本內容勘誤

謝謝本書編輯黃昕暐先生協助糾錯,程式碼的錯誤已修正,請到旗標科技的網站重新下載範例檔。

第1章 32位元雙核心ESP32晶片以及軟體開發工具

1-20頁底下,「輸出低電位」正確是「輸出高電位」。

輸出高電位

第2章 ESP32開發板與Arduino程式開發應用

2-25頁上方圖片的部份文字被截掉了,完整內容是:

接腳

ESP32 Arduino開發環境1.0.5和1.0.6版,在未讀取到磁力值時,會傳回隨機(雜訊)值,使用1.0.4和1.0.3沒問題,請參閱Github上的這個問題討論串

官方的回應是改用ESP-IDF開發工具的hall_sensor_read()函式來讀取霍爾磁力感測值:

#include <driver/adc.h>
   void setup() {
   Serial.begin(115200);
}

void loop() {
   Serial.printf("idf read: %d\n", hall_sensor_read());
   delay(100);
}

2-33頁底下的程式碼,PWM預設為20KHZ,程式碼寫成2000,正確是 “20000“:

ledcSetup(0, 20000, BITS);  // PWM 預設為 20KHZ,10位元解析度。

2-41頁中間圖片的一個字被截掉了,完整內容是:

漏字

第4章 中斷處理以及ESP32記憶體配置

4-24頁上方的分頻時脈圖裡的1ms單位,正確是 “1µs“。

分頻時脈圖

第6章 Wi-Fi無線物聯網操控裝置

6-5頁的「充電時間」單元的標題「記憶體類型說明」,正確是「dBm的定義」。

第8章 物聯網動態資料圖表網頁

8-8頁的讀取類比值接腳有誤,正確是A0和A3:

doc["sens1"] = analogRead(A0);
doc["sens2"] = analogRead(A3);

第11章 ESP32的睡眠模式與喚醒方法

11-22頁底下的RTC_GPIO接腳開關,少了線條,正確是:

切換開關

11-30頁上方的腳32和33的位元遮罩,正確是:、

#define BITMASK 0x300000000 // 腳32和33的位元遮罩

第12章 SPIFFS檔案系統與MicroSD記憶卡

12-5頁,File(檔案)物件的read()方法說明:讀取一個字元,正確是讀取一個「位元組(uint8_t)」,詳請參閱FS.cpp原始碼

12-21頁,SPI介面的MISO和MOSI接線畫錯了,正確是:

12-22頁的實驗電路圖,SPI介面的MISO和MOSI接線畫錯了,模組的電源要接5V(3,3V直流電源轉換IC的相關說明請參閱這篇貼文),正確是:

ESP32連接microSD模組

12-26頁的實驗電路圖,SPI介面的MISO和MOSI接線畫錯了,正確是:

ESP32連接microSD模組

第14章 網路收音機、文字轉語音播報裝置與音樂播放器

I2S序列音訊介面的DAC解碼模組的接線,以14-4頁的圖說為主,但筆者在實驗時的接線跟該圖解不同,所以書本的範例程式的接腳編號也錯了…

14-9頁,動手做14-1程式碼的接腳設定,請改成:

#define I2S_DOUT 25 // 接模組的DIN
#define I2S_BCLK 27 // 接模組的BCK
#define I2S_LRC 26  // 接模組的LCK
#define MAX_VOL 21  // 最高音量 
#define VOL_UP 22   // 音量(升)腳 
#define VOL_DOWN 21 // 音量(降)腳 

14-17頁,動手做14-2程式碼的接腳設定,請改成:

#define I2S_DOUT 26 // 接模組的DIN 
#define I2S_BCLK 27 // 接模組的BCK 
#define I2S_LRC 25  // 接模組的LCK 
#define SW 22       // 接開關 
#define LED 5      // 內建的LED 
#define DHTPIN 13   // 接DHT11 
#define DHTTYPE DHT11 

14-31頁,指定I2S接腳的結構,請改成:

const i2s_pin_config_t i2s_pins = { 
   .bck_io_num = 27, 
   .ws_io_num = 25, 
   .data_out_num = 26, 
   .data_in_num = I2S_PIN_NO_CHANGE 
}; 

第15章 典型藍牙以及BLE藍牙應用實作

15-5頁,指定I2S接腳的結構,請改成:

const i2s_pin_config_t i2s_pins = { 
   .bck_io_num = 27, 
   .ws_io_num = 25, 
   .data_out_num = 26, 
   .data_in_num = I2S_PIN_NO_CHANGE 
}; 

第16章 BLE藍牙人機輸入裝置應用實作

16-5頁,動手做16-1的旋轉編碼器模組已經有內建上拉電阻(參閱16-3頁),所以CLK_PIN和DT_PIN不必啟用上拉電阻,也就是原本的接腳模式設置敘述:

pinMode(CLK_PIN, INPUT_PULLUP);
pinMode(DT_PIN, INPUT_PULLUP);

可以改成:

pinMode(CLK_PIN, INPUT);
pinMode(DT_PIN, INPUT);

16-15頁,動手做16-3實驗說明裡的「電路跟動手做16-1相同」,正確是「跟動手做16-2相同」。實驗程式裡的旋轉開關模組接腳,正確是:

RotarySwitch rsw(19, 21, 22);

16-19頁,動手做16-4的鍵盤模組接腳,正確是:

byte colPins[KEY_COLS] = { 16, 4, 0, 2}
byte rowPins[KEY_ROWS] = { 23, 18, 5, 17}

第18章 FreeRTOS即時系統核心應用

18-28頁,中間左邊文字「請注意setup()函式最後一行的xSemaphoreGive(sem)敘述,要先建立旗號,才能有任務取得旗號。」

建立旗號」要改成「釋放旗號」。

第20章 使用JavaScript操控ESP32BLE藍牙裝置

20-43頁,動手做20-2的馬達驅動器的接腳有誤,正確是:

Motor motor(14, 27, 13, 12, 25, 26);

第21章 建立無線Mesh(網狀)通訊網路

21-20頁,接收LDR資料的val類型原本是int8_t:

if (doc["type"] == "LDR") {        // 光敏的訊息類型
  int8_t val = doc["val"];        // 感測值
  const char * n = doc["name"]; // 節點名稱
  Serial.printf("亮度:%amp;u, 節點:%amp;s, ID:%amp;u\n", val, n, from);
}

應該改用int16_t型別,這樣跟來源端的ADC值範圍才會一致:

Int16_t val = doc["val"];        // 感測值

Posts created 470

22 thoughts on “《超圖解ESP32深度實作》勘誤以及補充內容

  1. 您好
    2-33頁有提到用PWM的頻率是20K,但在程式裡寫的是2000,應該是20000才對。

  2. 尊敬的趙老師!我是您忠實的讀者,您出版的超圖解系列我都有購買閱讀,是我讀過的最好的圖解系列圖書!我想問下ESP32超圖解這本書勘誤以及補充內容完善後會發行第二版或修訂版嗎?這本書目前第一版您發行了多少冊呢?這麼好的書希望能迅速售完,您的圖解系列的圖書對我來說,既是寶藏書籍也是很好的收藏系列圖書,我都不捨得在書上用筆備註出錯的地方,我都是打印一張備註錯誤的紙條夾在書中,我很想買一本超圖解ESP32的修訂版,不知道您有沒有這個打算呢?如果有這個打算,會很久嗎?謝謝您的辛苦工作!

    1. 非常感謝您的支持,我每次都告訴自己要仔細校稿,無奈大腦不爭氣,抱歉造成您的麻煩。

      下次再刷的時候會修正內容,我不知在何時,我想大約會是在冬季…

      thanks,
      jeffrey

  3. 趙老師,您好!
    “16-19頁,動手做16-4的鍵盤模組接腳,正確是:
    byte colPins[KEY_COLS] = { 16, 4, 0, 2}
    byte rowPins[KEY_ROWS] = { 23, 18, 5, 7} ”
    是否該改為:
    “……
    byte rowPins[KEY_ROWS] = { 23, 18, 5, 17} ”
    否則就跟16-18頁左上圖的接腳號碼抵觸了。

  4. 趙老師,您好!
    有一個錯誤我也是最近製作旋轉編碼器控制OLED菜單的時候才發現,4-3頁上方圖示五種中斷函數里,觸發中斷的五種類型高電位與低電位正確的應該是ONHIGH(高電位觸發)ONLOW(低電位觸發),如果按照ARDUINO的寫法HIGH與LOW不起作用,我實際測試過。為了更嚴禁一些,趙老師可以親自試下看。

  5. 老師您好,我目前燒錄第一部分,讓led閃爍,我的led只閃爍了一次,想請問是哪裡出了問題呢,程式也檢查過了

  6. 這不是書本的錯誤,是library本身相依性不完整
    chapter 21,建立mesh使用的library painless mesh相依性少了AsyncTCP library
    如果依照書本一步一步來會有安裝過AsyncTCP library,但是如果沒有編譯過程會有問題
    fatal error: AsyncTCP.h: No such file or directory

    1. 可能是因為當時旗標的網站出了問題,我剛才測試沒問題,抱歉造成您的困擾。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top