第1章MicroPython介紹1
1.1MicroPython的起源1
1.2MicroPython的發(fā)展 2
1.3MicroPython與Pyboard的關系2
1.3.1MicroPython與Pyboard介紹2
1.3.2Pyboard與傳統(tǒng)嵌入式開發(fā)板的關系3
1.3.3學習MicroPython是否還需要學習以C語言為首的嵌入式開發(fā)3
1.4MicroPython 系統(tǒng)結構3
1.5MicroPython的優(yōu)勢3
1.5.1編譯環(huán)境3
1.5.2操作難度3
1.5.3程序結構4
1.5.4編寫方式4
1.5.5易讀性4
1.6MicroPython的應用5
1.6.1智能儀器5
1.6.2工業(yè)控制5
1.6.3家用電器5
1.6.4網(wǎng)絡和通信5
1.6.5醫(yī)用設備領域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第一個Python程序10
第2章Python語法基礎13
2.1關鍵字13
2.2標識符14
2.2.1概念14
2.2.2標識符的規(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進制轉換20
2.5輸出和輸入21
2.5.1輸出21
2.5.2輸入24
2.6運算符27
2.6.1算術運算符27
2.6.2賦值運算符28
2.6.3關系(比較)運算符29
2.6.4邏輯運算符30
2.6.5位運算符30
2.6.6移位運算符33
2.7表達式34
2.7.1表達式的類型和值34
2.7.2表達式的運算順序34
2.7.3優(yōu)先級34
2.8程序流程控制35
2.8.1順序結構35
2.8.2選擇結構35
2.8.3循環(huán)結構36
2.9判斷結構37
2.9.1if語句38
2.9.2if else語句39
2.9.3多重if語句40
2.9.4if嵌套語句42
2.10邏輯結構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ù)定義與調用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案例練習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進程與線程的區(qū)別99
3.2線程的創(chuà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進行同步處理114
3.6擴展知識115
3.6.1死鎖例程 115
3.6.2生產(chǎn)者與消費者模型119
3.6.3local類123
第4章開啟MicroPython for ESP32之旅126
4.1準備工作126
4.1.1硬件平臺126
4.1.2Windows PwoerShell安裝127
4.1.3CP210x串口驅動安裝128
4.1.4ESP32固件下載129
4.2ESP32固件燒錄130
4.3進入Pyboard132
4.4在Pyboard上運行Python程序132
第5章ESP32網(wǎng)絡基礎使用135
5.1連接WiFi135
5.2開機自動連接WiFi136
5.3獲取系統(tǒng)時間136
5.3.1什么是NTP136
5.3.2方法137
5.3.3實例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實現(xiàn)ESP32的網(wǎng)絡通信141
5.7.1服務器端142
5.7.2Client客戶端142
5.7.3程序運行143
5.8收看星球大戰(zhàn)字符動畫144
第6章MicroPython for ESP32硬件控制146
6.1NodeMCU32S開發(fā)板引腳說明146
6.2知識儲備147
6.2.1模擬信號148
6.2.2數(shù)字信號148
6.2.3高/低電平148
6.3Pin例程148
6.3.1構造對象149
6.3.2方法150
6.4延時例程151
6.5PWM與呼吸燈例程152
6.5.1PWM脈寬調制技術152
6.5.2構造對象153
6.5.3方法153
6.5.4PWM控制LED的亮度154
6.5.5呼吸燈155
6.6ADC例程156
6.6.1構造對象156
6.6.2方法156
6.7RTC例程157
6.7.1構造對象157
6.7.2初始化RTC 時間158
6.7.3查看RTC時間158
6.7.4缺陷158
6.8Timer例程159
6.8.1構造對象159
6.8.2初始化定時器159
6.8.3釋放定時器資源159
6.8.4定時器控制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構造對象163
6.9.7方法164
6.9.8ESP32串口通信——字符串自收發(fā)實驗165
6.10SPI例程166
6.10.1SPI總線接口與物理拓撲結構167
6.10.2SPI總線通信原理168
6.10.3SPI總線數(shù)據(jù)格式168
6.10.4ESP32中SPI的硬件資源情況169
6.10.5構造對象169
6.10.6方法171
第7章MQTT與阿里云平臺實戰(zhàn)173
7.1物聯(lián)網(wǎng)173
7.2為何要用MQTT173
7.3MQTT應用174
7.4MQTT協(xié)議分析174
7.4.1主要特點174
7.4.2其他概念175
7.5MQTT數(shù)據(jù)包格式176
7.5.1數(shù)據(jù)包類型176
7.5.2可變報頭177
7.5.3有效負荷177
7.6創(chuàng)建產(chǎn)品177
7.7產(chǎn)品物模型自定義179
7.8創(chuàng)建單個設備181
7.9使用MQTT.fx接入物聯(lián)網(wǎng)平臺前提條件182
7.10使用MQTT.fx接入182
7.11下行通信測試185
7.12上行通信測試186
7.13查看日志187
7.14MicroPython使用MQTT連接阿里云前期準備188
7.15MicroPython(ESP32)安裝MQTT庫188
7.16MicroPython連接阿里云服務器188
7.16.1方法188
7.16.2運行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源碼準備207
8.3.2移植208
8.3.3編譯212
8.3.4DFU固件燒寫213
8.4運行Pyboard腳本216
8.4.1編輯main.py216
8.4.2重置開發(fā)板216
8.5PuTTY調試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)建一個無function的空type到module中225
8.8.2給type添加無參數(shù)的function227
8.8.3給type添加帶參數(shù)的function228
第9章項目實踐231
9.1項目簡介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重難點歸納239
9.3空氣溫濕度采集239
9.3.1DTH11驅動239
9.3.2獲取溫濕度值241
9.3.3MicroPython中的DHT模塊241
9.3.4實驗現(xiàn)象242
9.3.5重難點歸納243
9.4環(huán)境光照強度測量243
9.4.1工作原理243
9.4.2接口說明243
9.4.3例程分析243
9.4.4實驗現(xiàn)象 245
9.4.5重難點歸納245
9.5雨水檢測245
9.5.1工作原理245
9.5.2連線說明246
9.5.3例程分析246
9.5.4運行現(xiàn)象247
9.5.5重難點歸納247
9.6煙霧濃度檢測248
9.6.1工作原理248
9.6.2使用說明248
9.6.3連線248
9.6.4例程分析249
9.6.5實驗現(xiàn)象249
9.6.6重難點歸納249
9.7舵機控制澆灌250
9.7.1工作原理250
9.7.2連線252
9.7.3例程分析252
9.7.4重難點歸納252
9.8入侵監(jiān)測252
9.8.1功能特點253
9.8.2使用說明254
9.8.3連線254
9.8.4例程分析255
9.9照明控制255
9.10云服務器平臺創(chuàng)建256
9.11項目綜合256
附錄257
參考文獻263