基於ESP32的MicroPython創新設計與實例(微課版)
王德誌
商品描述
目錄大綱
目錄
第1章MicroPython創新設計介紹1
1.1MicroPython介紹2
1.1.1MicroPython是什麼2
1.1.2MicroPython與Python的區別3
1.1.3為什麼用MicroPython進行創新設計5
1.2ESP32硬件平臺介紹5
1.2.1ESP32系列SoC5
1.2.2ESP32開發軟件平臺6
1.2.3DIY開發板介紹7
1.3Wokwi虛擬仿真平臺介紹8
1.3.1Wokwi虛擬仿真平臺功能8
1.3.2Wokwi平臺使用基本流程8
1.3.3Wokwi平臺與DIY開發板的配合使用11
1.4 開發環境的搭建11
1.4.1Python安裝11
1.4.2Thonny軟件安裝與配置12
1.4.3PyCharm軟件安裝與配置15
實驗一Python環境與基本操作實驗19
第2章MicroPython基礎知識20
2.1基本書寫格式要求21
2.1.1縮進式格式規範21
2.1.2註釋21
2.1.3標識符命名規則21
2.2常量與變量22
2.2.1常量與常量類型222.2.2變量與變量類型22
2.2.3不同進制的書寫格式23
2.3基本數據類型23
2.3.1常用數據類型23
2.3.2整型23
2.3.3浮點型24
2.3.4布爾型24
2.3.5字符串型24
2.3.6復數型25
2.3.7不同數據類型之間的轉換25
2.3.8數值運算函數25
2.4常用運算符26
2.4.1數值運算符26
2.4.2賦值運算符和復合賦值運算符26
2.4.3關系(比較)運算符26
2.4.4邏輯運算符27
2.4.5位運算符28
2.4.6表達式中運算符的優先級28
2.5輸出與輸入29
2.5.1標準輸出函數print()29
2.5.2標準輸入函數input()30
2.6組合數據類型31
2.6.1常用組合數據類型31
2.6.2字符串(str)32
2.6.3列表(list)35
2.6.4元組(tuple)38
2.6.5字典(dict)38
2.6.6集合(set)40
2.6.7列表與其他數據類型的轉換41
2.7選擇結構42
2.7.1單分支(if)42
2.7.2雙分支(ifelse)43
2.7.3多分支(ifelifelse)44
2.7.4選擇嵌套結構45
2.8循環結構46
2.8.1for循環46
2.8.2while循環47
2.8.3循環控制語句break與continue47
2.8.4循環嵌套結構48
2.9函數48
2.9.1MicroPython內置函數48
2.9.2函數的定義與調用50
2.9.3函數的參數50
2.9.4通過形參修改實參52
2.9.5函數的返回值52
2.9.6函數的嵌套調用與遞歸調用53
2.9.7lambda函數定義與使用53
2.10局部變量與全局變量54
2.10.1局部變量54
2.10.2全局變量54
2.10.3局部變量轉全局變量55
2.11文件55
2.11.1文件基本概念55
2.11.2文件操作基本流程55
2.11.3文件的開關與關閉56
2.11.4文件的讀寫操作57
2.12類與對象57
2.12.1面向對象的編程介紹57
2.12.2類的定義58
2.12.3實例對象的定義與使用59
2.12.4訪問權限的控制60
2.12.5類的繼承、封裝與多態60
2.13多線程62
2.13.1多線程基本概念62
2.13.2多線程的定義與啟動62
2.13.3線程間的簡單數據交換64
2.14常用庫的使用66
2.14.1常用內置庫66
2.14.2ESP32特有函數和庫67
2.14.3第三方庫的獲得67
實驗二MicroPython基本語法編程實驗68
第3章ESP32的GPIO輸出與輸入69
3.1GPIO基礎知識70
3.1.1什麼是GPIO70
3.1.2GPIO推挽輸出與開漏輸出70
3.1.3GPIO上拉輸入、下拉輸入與懸空輸入71
3.1.4ESP32S3芯片GPIO介紹72
3.1.5MicroPython中GPIO相關類73
3.2GPIO輸出74
3.2.1DIY開發板LED硬件原理圖分析74
3.2.2GPIO輸出初始化與使用74
3.2.3Wokwi仿真LED流水燈案例75
3.2.4DIY開發板LED流水燈案例77
3.3GPIO查詢方式輸入77
3.3.1DIY開發板五向按鍵硬件原理圖分析77
3.3.2GPIO輸入初始化與使用77
3.3.3Wokwi仿真循環查詢方式按鍵輸入控制LED閃爍案例78
3.3.4DIY開發板循環查詢方式按鍵輸入控制LED閃爍案例80
3.4GPIO中斷方式輸入80
3.4.1中斷處理程序介紹80
3.4.2GPIO外部中斷初始化與使用80
3.4.3Wokwi仿真中斷方式按鍵輸入控制LED閃爍案例81
3.4.4DIY開發板中斷方式按鍵輸入控制LED閃爍案例83
3.4.5ESP32下載程序後無法連接問題解決84
實驗三GPIO輸出與輸入實驗84
第4章ESP32的定時器TIMER85
4.1定時器基本知識86
4.1.1什麼是定時器86
4.1.2MicroPython中定時器Timer類86
4.1.3MicroPython中PWM(脈寬調制)類86
4.1.4MicroPython中時間time類88
4.1.5MicroPython中實時時鐘RTC類88
4.2定時器TIMER中斷89
4.2.1DIY開發板硬件原理圖分析89
4.2.2定時器TIMER初始化與使用89
4.2.3Wokwi仿真定時器周期中斷流水燈案例89
4.2.4DIY開發板定時器周期中斷流水燈案例91
4.3PWM輸出91
4.3.1DIY開發板硬件原理圖分析91
4.3.2PWM初始化與使用91
4.3.3Wokwi仿真呼吸燈案例92
4.3.4DIY開發板呼吸燈案例93
4.4RTC時鐘93
4.4.1Wokwi仿真循環輸出系統時間93
4.4.2DIY開發板循環輸出系統時間94
實驗四定時器TIMER實驗95
第5章ESP32的串口通信96
5.1串口通信原理97
5.1.1串行通信介紹97
5.1.2ESP32S3開發板串口介紹100
5.1.3MicroPython中串口UART類101
5.2UART串口輸出102
5.2.1DIY開發板硬件原理圖分析102
5.2.2UART串口初始化與輸出使用103
5.2.3Wokwi仿真串口輸出呼吸燈占空比案例103
5.2.4DIY開發板串口輸出呼吸燈占空比案例105
5.3UART串口輸入106
5.3.1input()和print()函數的使用106
5.3.2UART串口初始化與輸入使用107
5.3.3Wokwi仿真串口輸入控制流水燈頻率108
5.3.4DIY開發板串口輸入控制流水燈頻率111
實驗五串口實驗111
第6章ADC數據采集113
6.1ADC數據采集原理114
6.1.1什麼是ADC114
6.1.2ESP32S3中ADC介紹115
6.1.3MicroPython中ADC類115
6.2ADC數據采集介紹116
6.2.1DIY開發板硬件原理圖分析116
6.2.2ADC初始化與使用116
6.2.3Wokwi仿真電位器電壓采集案例117
6.2.4DIY開發板電位器電壓采集案例118
實驗六ADC數據采集實驗119
第7章I2C通信120
7.1I2C通信介紹121
7.1.1什麼是I2C通信121
7.1.2ESP32S3的I2C接口122
7.1.3MicroPython中I2C類122
7.2SSD1306 OLED顯示屏簡介124
7.2.1OLED顯示屏顯示原理124
7.2.2SSD1306驅動芯片的MicroPython驅動庫125
7.3OLED顯示英文與繪圖126
7.3.1DIY開發板OLED接口硬件原理圖分析126
7.3.2Wokwi仿真OLED顯示英文與繪圖126
7.3.3DIY開發板OLED顯示英文與繪圖128
7.4OLED顯示漢字與BMP圖片129
7.4.1漢字與BMP圖片的取模129
7.4.2Wokwi仿真OLED顯示漢字與BMP圖片135
7.4.3DIY開發板OLED顯示漢字與BMP圖片137
實驗七基於I2C接口的OLED顯示實驗137
第8章SPI通信138
8.1 SPI通信介紹139
8.1.1什麼是SPI通信139
8.1.2ESP32S3的SPI接口140
8.1.3MicroPython中SPI類140
8.2ST7789 TFTLCD顯示屏簡介141
8.2.1TFTLCD屏幕顯示原理141
8.2.2ST7789驅動芯片的MicroPython驅動庫142
8.3TFTLCD顯示彩色BMP圖片144
8.3.1彩色BMP圖片顯示原理144
8.3.2DIY開發板TFTLCD接口硬件原理圖分析144
8.3.3DIY開發板TFTLCD顯示彩色圖片和繪制圖形145
8.4TFTLCD顯示英文與漢字147
8.4.1英文與漢字的取模147
8.4.2GB2312字符批量取模148
8.4.3DIY開發板TFTLCD顯示英文與漢字152
實驗八基於SPI接口的TFTLCD顯示實驗153
第9章WiFi無線網絡通信154
9.1WiFi無線通信介紹155
9.1.1WiFi與WLAN155
9.1.2ESP32的WiFi通信模塊155
9.1.3MicroPython中的WiFi通信相關類156
9.2ESP32的WiFi使用方法157
9.2.1熱點模式(AccessPoint—AP模式)使用方法157
9.2.2接入模式(Station—STA模式)使用方法158
9.2.3Wokwi仿真WiFi網絡通信(STA模式)159
9.3WiFi網絡校時案例160
9.3.1網絡校時協議介紹160
9.3.2DIY開發板通過WiFi進行網絡校時案例161
9.3.3Wokwi仿真WiFi網絡校時案例162
9.4WiFi網絡TCP數據通信案例162
9.4.1TCP通信介紹162
9.4.2DIY開發板通過WiFi進行TCP數據通信(TCP客戶端
模式)案例164
9.4.3DIY開發板通過WiFi進行TCP數據通信(TCP服務器
模式)案例165
實驗九WiFi通信實驗167
第10章藍牙通信168
10.1藍牙通信介紹169
10.1.1什麼是藍牙通信169
10.1.2ESP32的藍牙通信模塊170
10.1.3MicroPython中的藍牙通信相關類171
10.2藍牙初始化與數據傳輸172
10.2.1MicroPython藍牙通信初始化172
10.2.2MicroPython藍牙通信數據傳輸173
10.3手機控制DIY開發板LED開關案例174
10.3.1手機藍牙助手App介紹174
10.3.2藍牙助手App控制DIY開發板LED開關案例174
實驗十藍牙通信實驗176
第11章創新項目設計177
11.1基於無源蜂鳴器的音樂播放器178
11.1.1無源蜂鳴器驅動原理178
11.1.2PWM驅動無源蜂鳴器工作案例178
11.1.3無源蜂鳴器演奏“小星星”180
11.2基於光敏電阻的自動亮度調節LED182
11.2.1光敏電阻工作原理182
11.2.2光敏電阻電壓數據采集案例182
11.2.3基於光敏電阻的自動亮度調節LED183
11.3基於紅外遙控器控制的LED184
11.3.1紅外數據傳輸原理184
11.3.2紅外遙控器數據采集案例185
11.3.3基於紅外遙控器控制的LED187
11.4基於滾珠開關的旋轉時鐘188
11.4.1滾珠開關工作原理188
11.4.2DIY開發板滾珠開關狀態采集案例189
11.4.3基於滾珠開關的TFTLCD旋轉時鐘191
11.4.4基於滾珠開關的OLED旋轉時鐘193
11.5基於DHT11的溫濕度采集與顯示195
11.5.1DHT11溫濕度傳感器工作原理195
11.5.2DHT11的溫濕度數據采集案例196
11.5.3基於DHT11的溫濕度采集與OLED顯示198
11.5.4基於DHT11的溫濕度采集與TFTLCD顯示200
11.6基於MQTT通信協議的遠程溫濕度檢測系統202
11.6.1MQTT通信協議簡介202
11.6.2MQTT數據發布與訂閱案例203
11.6.3PC端MQTT調試軟件“MQTT.fx”使用206
11.6.4手機端MQTT調試App軟件“MQTT調試器”使用208
11.6.5基於MQTT通信協議的遠程溫濕度檢測系統209
實驗十一溫濕度采集系統綜合案例實驗212
第12章PCB設計與制作213
12.1嘉立創EDA軟件介紹214
12.1.1軟件特點214
12.1.2PCB開發板設計的基本流程214
12.1.3新工程建立與保存215
12.2開發板原理圖設計216
12.2.1原理圖環境參數設置216
12.2.2器件的選擇217
12.2.3器件的連接218
12.2.4自定義器件的設計219
12.2.5註釋文字的添加219
12.2.6原理圖DRC檢查220
12.3開發板PCB圖設計220
12.3.1原理圖導入220
12.3.2放置板框221
12.3.3規則設置221
12.3.4圖層設置222
12.3.5自動布線 223
12.3.6PCB圖DRC檢查224
12.3.7手動布線224
12.3.8添加絲印225
12.3.9添加淚滴225
12.4PCB的制作226
12.4.1PCB在線下單流程226
12.4.2SMT(貼片器件焊接)在線下單流程227
12.4.3元件在線購買流程227
12.5開發板3D外殼設計與制作229
12.5.12D和3D預覽229
12.5.23D外殼設計基本流程229
12.5.33D外殼下單流程230
實驗十二溫濕度采集系統PCB制作實驗231
附錄232
附錄AESP32S3的MicroPython固件燒錄方法232
附錄BYDESP32S3核心板與DIY開發板原理圖234
附錄CDIY開發板引腳功能表235
參考文獻236