MicroPython是近年國外開源硬件(也是智能硬件)中*熱門的主題之一,它使用Python語言在嵌入式中編程,不需要了解底層寄存器、數(shù)據(jù)手冊、廠家的庫函數(shù),大部分外設(shè)和常用功能都有自己的庫,使開發(fā)和移植變得容易和快速。MicroPython已經(jīng)可以真正用于開發(fā)產(chǎn)品,這是其迅速吸引智能硬件開發(fā)者的原因。本書帶領(lǐng)初學(xué)者逐步了解MicroPython的基礎(chǔ)知識、硬件平臺、開發(fā)技巧,采用大量淺顯易懂的實例,使讀者在實踐中快速入門。
本書介紹國內(nèi)外開源硬件領(lǐng)域熱門的編程技術(shù),用MicroPython做出很酷的東西,就是用Python語言在嵌入式中編程。MicroPython已經(jīng)可以真正用于開發(fā)產(chǎn)品,這是其迅速吸引智能硬件開發(fā)者的原因。本書涉及MicroPython基礎(chǔ)知識、硬件平臺、開發(fā)技巧,案例豐富;讓小白快速學(xué)編程、玩硬件,讓工程師真正進行產(chǎn)品開發(fā);適用于創(chuàng)客、發(fā)燒友和技術(shù)開發(fā)者。
MicroPython是近年開源社區(qū)中最熱門的項目之一,它功能強大,使用簡單,是創(chuàng)客、DIY愛好者、工程師最好的工具,也可以用在專業(yè)開發(fā)中。
相比另一個創(chuàng)客神器Arduino,MicroPython使用更加簡單、方便,入門更快,性能也更好,更加適合初學(xué)者。它無須復(fù)雜的設(shè)置,不需要安裝特別的軟件和額外的硬件,也不用編譯和下載,只要一個USB線,使用任何文本編輯器就可以進行編程。大部分硬件的功能,使用一個命令就能驅(qū)動,不用了解硬件底層就能快速開發(fā),對于產(chǎn)品原型設(shè)計、軟件移植非常有好處,讓開發(fā)過程變得輕松,充滿樂趣。和傳統(tǒng)開發(fā)方法相比,MicroPython開發(fā)產(chǎn)品原型的速度更快,程序也更容易實現(xiàn)模塊化,更方便進行維護。和其他類似軟件相比,MicroPython是可以真正用在產(chǎn)品開發(fā)中的軟件。
MicroPython以其開放的架構(gòu)和MIT授權(quán)方式,在很短時間內(nèi)就風靡世界,全世界有很多愛好者用它做出各種產(chǎn)品和有趣的應(yīng)用。現(xiàn)在MicroPython已經(jīng)被移植到了多種硬件平臺上,如STM32、ESP8266、ESP32、dsPIC33、RTL8195、CC3200等,讓我們有很多選擇。
本書可以作為學(xué)習(xí)MicroPython的入門讀物,也可以作為工具書,查看各種API的用法。本書先介紹MicroPython的起源,然后介紹MicroPython的基礎(chǔ)知識和硬件平臺,再重點介紹STM32和ESP8266上MicroPython的應(yīng)用方法以及API,最后介紹了幾個有趣的應(yīng)用。通過本書讀者可以快速了解并掌握MicroPython。
本書作者作為MicroPython中文社區(qū)站長,長期致力于MicroPython的研究和推廣。本書的內(nèi)容是由中文社區(qū)活動資料、社區(qū)的中文教程、官網(wǎng)英文社區(qū)、作者翻譯的官網(wǎng)文檔等整理而來,希望通過這本書,讓廣大愛好者和工程師可以了解到國外最新的技術(shù),也希望和更多的愛好者一起交流,共同進步。書中難免存在不足和錯誤,請廣大讀者指正。
編著者
2017年10月
資深嵌入式和無線應(yīng)用工程師,精通多種單片機,是全球最小Python芯片Pynano芯片設(shè)計師,MicroPython中文社區(qū)創(chuàng)始人,榮獲2016年intel智能硬件大賽全國50最佳項目的榮譽。
第1章 MicroPython簡介001
1.1 MicroPython是什么001
1.2 MicroPython的歷史001
1.3 MicroPython的特點004
1.4 授權(quán)005
第2章 基礎(chǔ)知識006
2.1 Python3和MicroPython006
2.2 MicroPython的系統(tǒng)結(jié)構(gòu)007
2.3 安裝驅(qū)動008
2.4 常用終端軟件010
2.5 MicroPython的REPL014
2.5.1 REPL的快捷鍵014
2.5.2 使用help()函數(shù)015
2.5.3 查看模塊包含的變量和函數(shù)019
2.6 MicroPython官方固件020
第3章 硬件平臺介紹023
3.1 pyboard023
3.2 ESP8266028
3.3 其他可以運行MicroPython的硬件032
第4章 pyboard的使用041
4.1 快速指南041
4.2 從閃燈開始047
4.3 按鍵的使用049
4.4 GPIO的使用050
4.4.1 GPIO的其他函數(shù)052
4.4.2 GPIO的別名055
4.4.3 直接用端口名稱057
4.5 ADC模數(shù)轉(zhuǎn)換057
4.6 DAC數(shù)模轉(zhuǎn)換058
4.7 定時器(Timer)063
4.8 UART068
4.9 I2C071
4.10 SPI074
4.11 外中斷076
4.12 USB_VCP078
4.13 CAN080
4.14 文件操作084
4.15 小結(jié)085
第5章 pyboard的Python標準庫和微庫086
5.1 內(nèi)置函數(shù)087
5.2 數(shù)組(array)088
5.3 復(fù)數(shù)運算(cmath)089
5.4 垃圾回收(gc)091
5.5 數(shù)學(xué)計算(math)092
5.6 數(shù)據(jù)流事件(select)095
5.7 系統(tǒng)功能(sys)096
5.8 binary/ASCII轉(zhuǎn)換(ubinascii)098
5.9 集合和容器類型(ucollections)099
5.10 哈希算法庫(uhashlib)100
5.11 堆隊列算法(uheapq)101
5.12 輸入/輸出流(uio)102
5.13 JSON編碼解碼(ujson)103
5.14 操作系統(tǒng)基本服務(wù)(uos)103
5.15 正則表達式(ure)108
5.16 socket模塊(usocket)110
5.17 壓縮和不壓縮原始數(shù)據(jù)類型(ustruct)114
5.18 時間函數(shù)(utime)115
5.19 zlib解壓縮(uzlib)120
第6章 MicroPython特別庫121
6.1 簡化的BTree數(shù)據(jù)庫(btree)121
6.1.1 函數(shù)121
6.1.2 方法122
6.1.3 常量123
6.1.4 例程123
6.2 幀緩沖區(qū)操作(frambuf)124
6.2.1 類124
6.2.2 構(gòu)造函數(shù)125
6.2.3 繪制基本形狀126
6.2.4 繪制文字126
6.2.5 其他方法126
6.2.6 常量127
6.3 硬件相關(guān)函數(shù)(machine)127
6.3.1 復(fù)位函數(shù)127
6.3.2 中斷相關(guān)函數(shù)128
6.3.3 功率管理128
6.3.4 常量129
6.3.5 Class129
6.4 訪問和控制MicroPython內(nèi)部(micropython)138
6.5 使用網(wǎng)絡(luò)(network)140
6.5.1 class CC3K141
6.5.2 class WIZNET5K143
6.6 結(jié)構(gòu)化訪問二進制數(shù)據(jù)(uctypes)144
6.6.1 定義數(shù)據(jù)結(jié)構(gòu)層145
6.6.2 模塊內(nèi)容146
6.6.3 結(jié)構(gòu)說明和實例化結(jié)構(gòu)對象147
6.6.4 結(jié)構(gòu)對象147
6.6.5 限制148
6.7 線程148
6.7.1 基本函數(shù)149
6.7.2 使用方法149
第7章 pyboard專用模塊(pyb)151
7.1 時間相關(guān)功能151
7.2 復(fù)位功能152
7.3 中斷相關(guān)函數(shù)153
7.4 功耗管理153
7.5 其他函數(shù)154
7.6 類158
7.6.1 加速度傳感器(Accel)158
7.6.2 方法158
7.6.3 例程159
7.7 ADC159
7.7.1 構(gòu)造函數(shù)159
7.7.2 方法160
7.7.3 ADCAll161
7.8 數(shù)模轉(zhuǎn)換(DAC)163
7.8.1 構(gòu)造函數(shù)163
7.8.2 方法163
7.9 三線舵機驅(qū)動(servo)164
7.9.1 構(gòu)造函數(shù)165
7.9.2 方法165
7.10 pyb和machine的區(qū)別166
第8章 ESP8266167
8.1 快速指南168
8.2 ESP8266專用模塊esp176
8.3 MicroPython標準模塊和machine模塊179
8.4 網(wǎng)絡(luò)配置(network)179
8.4.1 函數(shù)180
8.4.2 class WLAN180
8.4.3 構(gòu)造函數(shù)180
8.4.4 方法181
8.4.5 連接網(wǎng)絡(luò)184
8.4.6 作為http服務(wù)器186
8.5 文件管理軟件189
8.5.1 WebREPL189
8.5.2 uPyLoader193
8.5.3 MicroPython File Uploader200
8.5.4 uPyCraft201
第9章 使用技巧和常見問題206
9.1 不能正確識別出PYBFlash磁盤206
9.2 安裝虛擬串口失敗206
9.3 PYBFLASH磁盤中文件損壞或亂碼207
9.4 恢復(fù)出廠設(shè)置207
9.5 怎樣升級pyboard的固件208
9.5.1 Linux下升級固件210
9.5.2 Nucleo開發(fā)板升級固件211
9.6 升級ESP8266的固件212
9.6.1 需要的軟件212
9.6.2 固件文件212
9.6.3 進入升級模式213
9.6.4 esptool.py213
9.6.5 Flash Download Tools215
9.6.6 uPyLoader216
9.7 訪問寄存器217
9.7.1 方法217
9.7.2 使用STM32的寄存器控制LED218
第10章 MicroPython應(yīng)用219
10.1 計算圓周率219
10.2 驅(qū)動OLED模塊222
10.3 溫度傳感器DS1820225
10.4 溫濕度傳感器DHT11228
10.5 氣壓傳感器 BMP180229
10.6 用熱敏電阻測溫度237
10.7 在SensorTile上使用MicroPython242
10.7.1 移植MicroPython固件244
10.7.2 傳感器驅(qū)動246
10.7.3 使用SensorTile制作開源智能懷表項目261
10.8 其他MicroPython項目鏈接270
附錄272