第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)嵌入式開(kāi)發(fā)板的關(guān)系3
1.3.3學(xué)習(xí)MicroPython是否還需要學(xué)習(xí)以C語(yǔ)言為首的嵌入式開(kāi)發(fā)3
1.4MicroPython 系統(tǒng)結(jié)構(gòu)3
1.5MicroPython的優(yōu)勢(shì)3
1.5.1編譯環(huán)境3
1.5.2操作難度3
1.5.3程序結(jié)構(gòu)4
1.5.4編寫(xiě)方式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汽車(chē)電子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語(yǔ)法基礎(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注釋的分類(lèi)15
2.3.2Python程序支持中文17
2.4變量和變量的類(lèi)型17
2.4.1變量17
2.4.2變量的類(lèi)型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á)式的類(lèi)型和值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語(yǔ)句38
2.9.2if else語(yǔ)句39
2.9.3多重if語(yǔ)句40
2.9.4if嵌套語(yǔ)句42
2.10邏輯結(jié)構(gòu)43
2.10.1while循環(huán)43
2.10.2for循環(huán)47
2.11特殊流程控制語(yǔ)句48
2.11.1break語(yǔ)句48
2.11.2continue語(yǔ)句49
2.11.3break、continue語(yǔ)句的比較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ù)鍵訪問(wèn)值70
2.15.3常用函數(shù)71
2.15.4遍歷字典74
2.16函數(shù)簡(jiǎn)介76
2.16.1引入函數(shù)76
2.16.2基本概念78
2.17函數(shù)定義與調(diào)用78
2.17.1基本使用78
2.17.2文檔說(shuō)明79
2.17.3參數(shù)80
2.17.4返回值84
2.17.5函數(shù)的類(lèi)型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線程簡(jiǎn)介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模塊簡(jiǎn)介100
3.2.2Thread類(lèi)101
3.3線程的生命周期106
3.3.1線程的狀態(tài)106
3.3.2線程阻塞107
3.3.3線程加入108
3.4共享成員變量例程109
3.4.1成員變量為不可變類(lèi)型109
3.4.2成員變量為可變類(lèi)型110
3.5線程同步例程111
3.5.1引入問(wèn)題111
3.5.2處理方式1:Lock類(lèi)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類(lèi)123
第4章開(kāi)啟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開(kāi)機(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)頁(yè)數(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)頁(yè)數(shù)據(jù)141
5.7利用socket實(shí)現(xiàn)ESP32的網(wǎng)絡(luò)通信141
5.7.1服務(wù)器端142
5.7.2Client客戶(hù)端142
5.7.3程序運(yùn)行143
5.8收看星球大戰(zhàn)字符動(dòng)畫(huà)144
第6章MicroPython for ESP32硬件控制146
6.1NodeMCU32S開(kāi)發(fā)板引腳說(shuō)明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é)議分類(lèi)及其特征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ù)包類(lèi)型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下行通信測(cè)試185
7.12上行通信測(cè)試186
7.13查看日志187
7.14MicroPython使用MQTT連接阿里云前期準(zhǔn)備188
7.15MicroPython(ESP32)安裝MQTT庫(kù)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到自己的開(kāi)發(fā)板上207
8.3.1源碼準(zhǔn)備207
8.3.2移植208
8.3.3編譯212
8.3.4DFU固件燒寫(xiě)213
8.4運(yùn)行Pyboard腳本216
8.4.1編輯main.py216
8.4.2重置開(kāi)發(fā)板216
8.5PuTTY調(diào)試TPYBorad216
8.6創(chuàng)建自定義類(lèi)庫(kù)218
8.7創(chuàng)建module219
8.7.1創(chuàng)建無(wú)function的module220
8.7.2給module添加無(wú)參數(shù)的function222
8.7.3給module添加帶參數(shù)的function223
8.8在module中添加type225
8.8.1創(chuàng)建一個(gè)無(wú)function的空type到module中225
8.8.2給type添加無(wú)參數(shù)的function227
8.8.3給type添加帶參數(shù)的function228
第9章項(xiàng)目實(shí)踐231
9.1項(xiàng)目簡(jiǎn)介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)度測(cè)量243
9.4.1工作原理243
9.4.2接口說(shuō)明243
9.4.3例程分析243
9.4.4實(shí)驗(yàn)現(xiàn)象 245
9.4.5重難點(diǎn)歸納245
9.5雨水檢測(cè)245
9.5.1工作原理245
9.5.2連線說(shuō)明246
9.5.3例程分析246
9.5.4運(yùn)行現(xiàn)象247
9.5.5重難點(diǎn)歸納247
9.6煙霧濃度檢測(cè)248
9.6.1工作原理248
9.6.2使用說(shuō)明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)測(cè)252
9.8.1功能特點(diǎn)253
9.8.2使用說(shuō)明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