本书共分为9章。第1~3章主要介绍MicroPython以及Python语言基础;第4~5章重点针对ESP32与MicroPython的实践性操作;第6~7章重点阐述MicroPython在物联网的应用;第8章展现如何修改MicroPython源码与添加自定义库的方法;第9章为一个智能农业的项目实践。
本书对智能物联网时代面临的挑战,以及MicroPython的基础知识做了清晰的阐述,有助于读者整理思路,了解需求,并更有针对性、有选择地深入学习相关知识。
第1章MicroPython介绍1
1.1MicroPython的起源1
1.2MicroPython的发展 2
1.3MicroPython与Pyboard的关系2
1.3.1MicroPython与Pyboard介绍2
1.3.2Pyboard与传统嵌入式开发板的关系3
1.3.3学习MicroPython是否还需要学习以C语言为首的嵌入式开发3
1.4MicroPython 系统结构3
1.5MicroPython的优势3
1.5.1编译环境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工业控制5
1.6.3家用电器5
1.6.4网络和通信5
1.6.5医用设备领域6
1.6.6模块化系统6
1.6.7汽车电子6
1.6.8其他6
1.7Python环境搭建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标识符的规则14
2.2.3命名规则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优先级34
2.8程序流程控制35
2.8.1顺序结构35
2.8.2选择结构35
2.8.3循环结构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循环43
2.10.2for循环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创建字符串51
2.12.3字符串的输出与输入51
2.12.4遍历字符串52
2.12.5常用函数54
2.13列表(list)59
2.13.1基本概念59
2.13.2遍历列表60
2.13.3常用函数62
2.13.4列表嵌套66
2.14元组(tuple)68
2.15字典(dict)69
2.15.1基本概念69
2.15.2根据键访问值70
2.15.3常用函数71
2.15.4遍历字典74
2.16函数简介76
2.16.1引入函数76
2.16.2基本概念78
2.17函数定义与调用78
2.17.1基本使用78
2.17.2文档说明79
2.17.3参数80
2.17.4返回值84
2.17.5函数的类型87
2.17.6函数的嵌套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进程与线程的区别99
3.2线程的创建与启动100
3.2.1threading模块简介100
3.2.2Thread类101
3.3线程的生命周期106
3.3.1线程的状态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生产者与消费者模型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网络基础使用135
5.1连接WiFi135
5.2开机自动连接WiFi136
5.3获取系统时间136
5.3.1什么是NTP136
5.3.2方法137
5.3.3实例137
5.4urequests下载网页数据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下载网页数据141
5.7利用socket实现ESP32的网络通信141
5.7.1服务器端142
5.7.2Client客户端142
5.7.3程序运行143
5.8收看星球大战字符动画144
第6章MicroPython for ESP32硬件控制146
6.1NodeMCU32S开发板引脚说明146
6.2知识储备147
6.2.1模拟信号148
6.2.2数字信号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常用通信协议分类及其特征160
6.9.2UART接口162
6.9.3UART数据帧格式162
6.9.4UART四要素163
6.9.5ESP32中串口的硬件资源情况163
6.9.6构造对象163
6.9.7方法164
6.9.8ESP32串口通信——字符串自收发实验165
6.10SPI例程166
6.10.1SPI总线接口与物理拓扑结构167
6.10.2SPI总线通信原理168
6.10.3SPI总线数据格式168
6.10.4ESP32中SPI的硬件资源情况169
6.10.5构造对象169
6.10.6方法171
第7章MQTT与阿里云平台实战173
7.1物联网173
7.2为何要用MQTT173
7.3MQTT应用174
7.4MQTT协议分析174
7.4.1主要特点174
7.4.2其他概念175
7.5MQTT数据包格式176
7.5.1数据包类型176
7.5.2可变报头177
7.5.3有效负荷177
7.6创建产品177
7.7产品物模型自定义179
7.8创建单个设备181
7.9使用MQTT.fx接入物联网平台前提条件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发布者191
第8章MicroPython for STM32F4193
8.1源码下载193
8.2MicroPython编译环境搭建196
8.2.1VMware安装196
8.2.2Ubuntu安装到VMware197
8.3移植MicroPython到自己的开发板上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重置开发板216
8.5PuTTY调试TPYBorad216
8.6创建自定义类库218
8.7创建module219
8.7.1创建无function的module220
8.7.2给module添加无参数的function222
8.7.3给module添加带参数的function223
8.8在module中添加type225
8.8.1创建一个无function的空type到module中225
8.8.2给type添加无参数的function227
8.8.3给type添加带参数的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代码及现象237
9.2.7重难点归纳239
9.3空气温湿度采集239
9.3.1DTH11驱动239
9.3.2获取温湿度值241
9.3.3MicroPython中的DHT模块241
9.3.4实验现象242
9.3.5重难点归纳243
9.4环境光照强度测量243
9.4.1工作原理243
9.4.2接口说明243
9.4.3例程分析243
9.4.4实验现象 245
9.4.5重难点归纳245
9.5雨水检测245
9.5.1工作原理245
9.5.2连线说明246
9.5.3例程分析246
9.5.4运行现象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实验现象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入侵监测252
9.8.1功能特点253
9.8.2使用说明254
9.8.3连线254
9.8.4例程分析255
9.9照明控制255
9.10云服务器平台创建256
9.11项目综合256
附录257
参考文献263