第1章MicroPython介紹1
1.1MicroPython的起源1
1.2MicroPython的發(fā)展 2
1.3MicroPython與Pyboard的關(guān)系2
1.3.1MicroPython與Pyboard介紹2
1.3.2Pyboard與傳統(tǒng)嵌入式開發(fā)板的關(guān)系3
1.3.3學(xué)習(xí)MicroPython是否還需要學(xué)習(xí)以C語言為首的嵌入式開發(fā)3
1.4MicroPython 系統(tǒng)結(jié)構(gòu)3
1.5MicroPython的優(yōu)勢3
1.5.1編譯環(huán)境3
1.5.2操作難度3
1.5.3程序結(jié)構(gòu)4
1.5.4編寫方式4
1.5.5易讀性4
1.6MicroPython的應(yīng)用5
1.6.1智能儀器5
1.6.2工業(yè)控制5
1.6.3家用電器5
1.6.4網(wǎng)絡(luò)和通信5
1.6.5醫(yī)用設(shè)備領(lǐng)域6
1.6.6模塊化系統(tǒng)6
1.6.7汽車電子6
1.6.8其他6
1.7Python環(huán)境搭建6
1.7.1IDLE下載6
1.7.2安裝7
1.7.3第一個(gè)Python程序10
第2章Python語法基礎(chǔ)13
2.1關(guān)鍵字13
2.2標(biāo)識(shí)符14
2.2.1概念14
2.2.2標(biāo)識(shí)符的規(guī)則14
2.2.3命名規(guī)則14
2.3注釋15
2.3.1注釋的分類15
2.3.2Python程序支持中文17
2.4變量和變量的類型17
2.4.1變量17
2.4.2變量的類型18
2.4.3進(jìn)制轉(zhuǎn)換20
2.5輸出和輸入21
2.5.1輸出21
2.5.2輸入24
2.6運(yùn)算符27
2.6.1算術(shù)運(yùn)算符27
2.6.2賦值運(yùn)算符28
2.6.3關(guān)系(比較)運(yùn)算符29
2.6.4邏輯運(yùn)算符30
2.6.5位運(yùn)算符30
2.6.6移位運(yùn)算符33
2.7表達(dá)式34
2.7.1表達(dá)式的類型和值34
2.7.2表達(dá)式的運(yùn)算順序34
2.7.3優(yōu)先級(jí)34
2.8程序流程控制35
2.8.1順序結(jié)構(gòu)35
2.8.2選擇結(jié)構(gòu)35
2.8.3循環(huán)結(jié)構(gòu)36
2.9判斷結(jié)構(gòu)37
2.9.1if語句38
2.9.2if else語句39
2.9.3多重if語句40
2.9.4if嵌套語句42
2.10邏輯結(jié)構(gòu)43
2.10.1while循環(huán)43
2.10.2for循環(huán)47
2.11特殊流程控制語句48
2.11.1break語句48
2.11.2continue語句49
2.11.3break、continue語句的比較50
2.12字符串(str)50
2.12.1基本概念50
2.12.2創(chuàng)建字符串51
2.12.3字符串的輸出與輸入51
2.12.4遍歷字符串52
2.12.5常用函數(shù)54
2.13列表(list)59
2.13.1基本概念59
2.13.2遍歷列表60
2.13.3常用函數(shù)62
2.13.4列表嵌套66
2.14元組(tuple)68
2.15字典(dict)69
2.15.1基本概念69
2.15.2根據(jù)鍵訪問值70
2.15.3常用函數(shù)71
2.15.4遍歷字典74
2.16函數(shù)簡介76
2.16.1引入函數(shù)76
2.16.2基本概念78
2.17函數(shù)定義與調(diào)用78
2.17.1基本使用78
2.17.2文檔說明79
2.17.3參數(shù)80
2.17.4返回值84
2.17.5函數(shù)的類型87
2.17.6函數(shù)的嵌套89
2.17.7案例練習(xí)90
2.18局部變量與成員變量92
2.18.1局部變量92
2.18.2成員變量93
第3章Python多線程97
3.1線程簡介97
3.1.1基本概念97
3.1.2為什么需要多線程97
3.1.3進(jìn)程與線程的區(qū)別99
3.2線程的創(chuàng)建與啟動(dòng)100
3.2.1threading模塊簡介100
3.2.2Thread類101
3.3線程的生命周期106
3.3.1線程的狀態(tài)106
3.3.2線程阻塞107
3.3.3線程加入108
3.4共享成員變量例程109
3.4.1成員變量為不可變類型109
3.4.2成員變量為可變類型110
3.5線程同步例程111
3.5.1引入問題111
3.5.2處理方式1:Lock類112
3.5.3處理方式2:使用Lock進(jìn)行同步處理114
3.6擴(kuò)展知識(shí)115
3.6.1死鎖例程 115
3.6.2生產(chǎn)者與消費(fèi)者模型119
3.6.3local類123
第4章開啟MicroPython for ESP32之旅126
4.1準(zhǔn)備工作126
4.1.1硬件平臺(tái)126
4.1.2Windows PwoerShell安裝127
4.1.3CP210x串口驅(qū)動(dòng)安裝128
4.1.4ESP32固件下載129
4.2ESP32固件燒錄130
4.3進(jìn)入Pyboard132
4.4在Pyboard上運(yùn)行Python程序132
第5章ESP32網(wǎng)絡(luò)基礎(chǔ)使用135
5.1連接WiFi135
5.2開機(jī)自動(dòng)連接WiFi136
5.3獲取系統(tǒng)時(shí)間136
5.3.1什么是NTP136
5.3.2方法137
5.3.3實(shí)例137
5.4urequests下載網(wǎng)頁數(shù)據(jù)137
5.5Python3&MicroPython的socket模塊137
5.5.1socket的定義137
5.5.2socket工作流程138
5.5.3socket模塊的宏139
5.5.4socket模塊的API139
5.6利用socket下載網(wǎng)頁數(shù)據(jù)141
5.7利用socket實(shí)現(xiàn)ESP32的網(wǎng)絡(luò)通信141
5.7.1服務(wù)器端142
5.7.2Client客戶端142
5.7.3程序運(yùn)行143
5.8收看星球大戰(zhàn)字符動(dòng)畫144
第6章MicroPython for ESP32硬件控制146
6.1NodeMCU32S開發(fā)板引腳說明146
6.2知識(shí)儲(chǔ)備147
6.2.1模擬信號(hào)148
6.2.2數(shù)字信號(hào)148
6.2.3高/低電平148
6.3Pin例程148
6.3.1構(gòu)造對(duì)象149
6.3.2方法150
6.4延時(shí)例程151
6.5PWM與呼吸燈例程152
6.5.1PWM脈寬調(diào)制技術(shù)152
6.5.2構(gòu)造對(duì)象153
6.5.3方法153
6.5.4PWM控制LED的亮度154
6.5.5呼吸燈155
6.6ADC例程156
6.6.1構(gòu)造對(duì)象156
6.6.2方法156
6.7RTC例程157
6.7.1構(gòu)造對(duì)象157
6.7.2初始化RTC 時(shí)間158
6.7.3查看RTC時(shí)間158
6.7.4缺陷158
6.8Timer例程159
6.8.1構(gòu)造對(duì)象159
6.8.2初始化定時(shí)器159
6.8.3釋放定時(shí)器資源159
6.8.4定時(shí)器控制LED燈閃爍159
6.9串口UART例程160
6.9.1常用通信協(xié)議分類及其特征160
6.9.2UART接口162
6.9.3UART數(shù)據(jù)幀格式162
6.9.4UART四要素163
6.9.5ESP32中串口的硬件資源情況163
6.9.6構(gòu)造對(duì)象163
6.9.7方法164
6.9.8ESP32串口通信——字符串自收發(fā)實(shí)驗(yàn)165
6.10SPI例程166
6.10.1SPI總線接口與物理拓?fù)浣Y(jié)構(gòu)167
6.10.2SPI總線通信原理168
6.10.3SPI總線數(shù)據(jù)格式168
6.10.4ESP32中SPI的硬件資源情況169
6.10.5構(gòu)造對(duì)象169
6.10.6方法171
第7章MQTT與阿里云平臺(tái)實(shí)戰(zhàn)173
7.1物聯(lián)網(wǎng)173
7.2為何要用MQTT173
7.3MQTT應(yīng)用174
7.4MQTT協(xié)議分析174
7.4.1主要特點(diǎn)174
7.4.2其他概念175
7.5MQTT數(shù)據(jù)包格式176
7.5.1數(shù)據(jù)包類型176
7.5.2可變報(bào)頭177
7.5.3有效負(fù)荷177
7.6創(chuàng)建產(chǎn)品177
7.7產(chǎn)品物模型自定義179
7.8創(chuàng)建單個(gè)設(shè)備181
7.9使用MQTT.fx接入物聯(lián)網(wǎng)平臺(tái)前提條件182
7.10使用MQTT.fx接入182
7.11下行通信測試185
7.12上行通信測試186
7.13查看日志187
7.14MicroPython使用MQTT連接阿里云前期準(zhǔn)備188
7.15MicroPython(ESP32)安裝MQTT庫188
7.16MicroPython連接阿里云服務(wù)器188
7.16.1方法188
7.16.2運(yùn)行189
7.17MicroPython(ESP32)作MQTT訂閱者189
7.18MicroPython(ESP32)作MQTT發(fā)布者191
第8章MicroPython for STM32F4193
8.1源碼下載193
8.2MicroPython編譯環(huán)境搭建196
8.2.1VMware安裝196
8.2.2Ubuntu安裝到VMware197
8.3移植MicroPython到自己的開發(fā)板上207
8.3.1源碼準(zhǔn)備207
8.3.2移植208
8.3.3編譯212
8.3.4DFU固件燒寫213
8.4運(yùn)行Pyboard腳本216
8.4.1編輯main.py216
8.4.2重置開發(fā)板216
8.5PuTTY調(diào)試TPYBorad216
8.6創(chuàng)建自定義類庫218
8.7創(chuàng)建module219
8.7.1創(chuàng)建無function的module220
8.7.2給module添加無參數(shù)的function222
8.7.3給module添加帶參數(shù)的function223
8.8在module中添加type225
8.8.1創(chuàng)建一個(gè)無function的空type到module中225
8.8.2給type添加無參數(shù)的function227
8.8.3給type添加帶參數(shù)的function228
第9章項(xiàng)目實(shí)踐231
9.1項(xiàng)目簡介231
9.2OLED液晶顯示屏232
9.2.1SSD1306介紹232
9.2.2SSD1306接口233
9.2.3連線233
9.2.4例程分析234
9.2.5取模工具使用236
9.2.6代碼及現(xiàn)象237
9.2.7重難點(diǎn)歸納239
9.3空氣溫濕度采集239
9.3.1DTH11驅(qū)動(dòng)239
9.3.2獲取溫濕度值241
9.3.3MicroPython中的DHT模塊241
9.3.4實(shí)驗(yàn)現(xiàn)象242
9.3.5重難點(diǎn)歸納243
9.4環(huán)境光照強(qiáng)度測量243
9.4.1工作原理243
9.4.2接口說明243
9.4.3例程分析243
9.4.4實(shí)驗(yàn)現(xiàn)象 245
9.4.5重難點(diǎn)歸納245
9.5雨水檢測245
9.5.1工作原理245
9.5.2連線說明246
9.5.3例程分析246
9.5.4運(yùn)行現(xiàn)象247
9.5.5重難點(diǎn)歸納247
9.6煙霧濃度檢測248
9.6.1工作原理248
9.6.2使用說明248
9.6.3連線248
9.6.4例程分析249
9.6.5實(shí)驗(yàn)現(xiàn)象249
9.6.6重難點(diǎn)歸納249
9.7舵機(jī)控制澆灌250
9.7.1工作原理250
9.7.2連線252
9.7.3例程分析252
9.7.4重難點(diǎn)歸納252
9.8入侵監(jiān)測252
9.8.1功能特點(diǎn)253
9.8.2使用說明254
9.8.3連線254
9.8.4例程分析255
9.9照明控制255
9.10云服務(wù)器平臺(tái)創(chuàng)建256
9.11項(xiàng)目綜合256
附錄257
參考文獻(xiàn)263