目录
第1章MicroPython创新设计介绍1
1.1MicroPython介绍2
1.1.1MicroPython是什么2
1.1.2MicroPython与Python的区别3
1.1.3为什么用MicroPython进行创新设计5
1.2ESP32硬件平台介绍5
1.2.1ESP32系列SoC5
1.2.2ESP32开发软件平台6
1.2.3DIY开发板介绍7
1.3Wokwi虚拟仿真平台介绍8
1.3.1Wokwi虚拟仿真平台功能8
1.3.2Wokwi平台使用基本流程8
1.3.3Wokwi平台与DIY开发板的配合使用11
1.4 开发环境的搭建11
1.4.1Python安装11
1.4.2Thonny软件安装与配置12
1.4.3PyCharm软件安装与配置15
实验一Python环境与基本操作实验19
第2章MicroPython基础知识20
2.1基本书写格式要求21
2.1.1缩进式格式规范21
2.1.2注释21
2.1.3标识符命名规则21
2.2常量与变量22
2.2.1常量与常量类型222.2.2变量与变量类型22
2.2.3不同进制的书写格式23
2.3基本数据类型23
2.3.1常用数据类型23
2.3.2整型23
2.3.3浮点型24
2.3.4布尔型24
2.3.5字符串型24
2.3.6复数型25
2.3.7不同数据类型之间的转换25
2.3.8数值运算函数25
2.4常用运算符26
2.4.1数值运算符26
2.4.2赋值运算符和复合赋值运算符26
2.4.3关系(比较)运算符26
2.4.4逻辑运算符27
2.4.5位运算符28
2.4.6表达式中运算符的优先级28
2.5输出与输入29
2.5.1标准输出函数print()29
2.5.2标准输入函数input()30
2.6组合数据类型31
2.6.1常用组合数据类型31
2.6.2字符串(str)32
2.6.3列表(list)35
2.6.4元组(tuple)38
2.6.5字典(dict)38
2.6.6集合(set)40
2.6.7列表与其他数据类型的转换41
2.7选择结构42
2.7.1单分支(if)42
2.7.2双分支(ifelse)43
2.7.3多分支(ifelifelse)44
2.7.4选择嵌套结构45
2.8循环结构46
2.8.1for循环46
2.8.2while循环47
2.8.3循环控制语句break与continue47
2.8.4循环嵌套结构48
2.9函数48
2.9.1MicroPython内置函数48
2.9.2函数的定义与调用50
2.9.3函数的参数50
2.9.4通过形参修改实参52
2.9.5函数的返回值52
2.9.6函数的嵌套调用与递归调用53
2.9.7lambda函数定义与使用53
2.10局部变量与全局变量54
2.10.1局部变量54
2.10.2全局变量54
2.10.3局部变量转全局变量55
2.11文件55
2.11.1文件基本概念55
2.11.2文件操作基本流程55
2.11.3文件的开关与关闭56
2.11.4文件的读写操作57
2.12类与对象57
2.12.1面向对象的编程介绍57
2.12.2类的定义58
2.12.3实例对象的定义与使用59
2.12.4访问权限的控制60
2.12.5类的继承、封装与多态60
2.13多线程62
2.13.1多线程基本概念62
2.13.2多线程的定义与启动62
2.13.3线程间的简单数据交换64
2.14常用库的使用66
2.14.1常用内置库66
2.14.2ESP32特有函数和库67
2.14.3第三方库的获得67
实验二MicroPython基本语法编程实验68
第3章ESP32的GPIO输出与输入69
3.1GPIO基础知识70
3.1.1什么是GPIO70
3.1.2GPIO推挽输出与开漏输出70
3.1.3GPIO上拉输入、下拉输入与悬空输入71
3.1.4ESP32S3芯片GPIO介绍72
3.1.5MicroPython中GPIO相关类73
3.2GPIO输出74
3.2.1DIY开发板LED硬件原理图分析74
3.2.2GPIO输出初始化与使用74
3.2.3Wokwi仿真LED流水灯案例75
3.2.4DIY开发板LED流水灯案例77
3.3GPIO查询方式输入77
3.3.1DIY开发板五向按键硬件原理图分析77
3.3.2GPIO输入初始化与使用77
3.3.3Wokwi仿真循环查询方式按键输入控制LED闪烁案例78
3.3.4DIY开发板循环查询方式按键输入控制LED闪烁案例80
3.4GPIO中断方式输入80
3.4.1中断处理程序介绍80
3.4.2GPIO外部中断初始化与使用80
3.4.3Wokwi仿真中断方式按键输入控制LED闪烁案例81
3.4.4DIY开发板中断方式按键输入控制LED闪烁案例83
3.4.5ESP32下载程序后无法连接问题解决84
实验三GPIO输出与输入实验84
第4章ESP32的定时器TIMER85
4.1定时器基本知识86
4.1.1什么是定时器86
4.1.2MicroPython中定时器Timer类86
4.1.3MicroPython中PWM(脉宽调制)类86
4.1.4MicroPython中时间time类88
4.1.5MicroPython中实时时钟RTC类88
4.2定时器TIMER中断89
4.2.1DIY开发板硬件原理图分析89
4.2.2定时器TIMER初始化与使用89
4.2.3Wokwi仿真定时器周期中断流水灯案例89
4.2.4DIY开发板定时器周期中断流水灯案例91
4.3PWM输出91
4.3.1DIY开发板硬件原理图分析91
4.3.2PWM初始化与使用91
4.3.3Wokwi仿真呼吸灯案例92
4.3.4DIY开发板呼吸灯案例93
4.4RTC时钟93
4.4.1Wokwi仿真循环输出系统时间93
4.4.2DIY开发板循环输出系统时间94
实验四定时器TIMER实验95
第5章ESP32的串口通信96
5.1串口通信原理97
5.1.1串行通信介绍97
5.1.2ESP32S3开发板串口介绍100
5.1.3MicroPython中串口UART类101
5.2UART串口输出102
5.2.1DIY开发板硬件原理图分析102
5.2.2UART串口初始化与输出使用103
5.2.3Wokwi仿真串口输出呼吸灯占空比案例103
5.2.4DIY开发板串口输出呼吸灯占空比案例105
5.3UART串口输入106
5.3.1input()和print()函数的使用106
5.3.2UART串口初始化与输入使用107
5.3.3Wokwi仿真串口输入控制流水灯频率108
5.3.4DIY开发板串口输入控制流水灯频率111
实验五串口实验111
第6章ADC数据采集113
6.1ADC数据采集原理114
6.1.1什么是ADC114
6.1.2ESP32S3中ADC介绍115
6.1.3MicroPython中ADC类115
6.2ADC数据采集介绍116
6.2.1DIY开发板硬件原理图分析116
6.2.2ADC初始化与使用116
6.2.3Wokwi仿真电位器电压采集案例117
6.2.4DIY开发板电位器电压采集案例118
实验六ADC数据采集实验119
第7章I2C通信120
7.1I2C通信介绍121
7.1.1什么是I2C通信121
7.1.2ESP32S3的I2C接口122
7.1.3MicroPython中I2C类122
7.2SSD1306 OLED显示屏简介124
7.2.1OLED显示屏显示原理124
7.2.2SSD1306驱动芯片的MicroPython驱动库125
7.3OLED显示英文与绘图126
7.3.1DIY开发板OLED接口硬件原理图分析126
7.3.2Wokwi仿真OLED显示英文与绘图126
7.3.3DIY开发板OLED显示英文与绘图128
7.4OLED显示汉字与BMP图片129
7.4.1汉字与BMP图片的取模129
7.4.2Wokwi仿真OLED显示汉字与BMP图片135
7.4.3DIY开发板OLED显示汉字与BMP图片137
实验七基于I2C接口的OLED显示实验137
第8章SPI通信138
8.1 SPI通信介绍139
8.1.1什么是SPI通信139
8.1.2ESP32S3的SPI接口140
8.1.3MicroPython中SPI类140
8.2ST7789 TFTLCD显示屏简介141
8.2.1TFTLCD屏幕显示原理141
8.2.2ST7789驱动芯片的MicroPython驱动库142
8.3TFTLCD显示彩色BMP图片144
8.3.1彩色BMP图片显示原理144
8.3.2DIY开发板TFTLCD接口硬件原理图分析144
8.3.3DIY开发板TFTLCD显示彩色图片和绘制图形145
8.4TFTLCD显示英文与汉字147
8.4.1英文与汉字的取模147
8.4.2GB2312字符批量取模148
8.4.3DIY开发板TFTLCD显示英文与汉字152
实验八基于SPI接口的TFTLCD显示实验153
第9章WiFi无线网络通信154
9.1WiFi无线通信介绍155
9.1.1WiFi与WLAN155
9.1.2ESP32的WiFi通信模块155
9.1.3MicroPython中的WiFi通信相关类156
9.2ESP32的WiFi使用方法157
9.2.1热点模式(AccessPoint—AP模式)使用方法157
9.2.2接入模式(Station—STA模式)使用方法158
9.2.3Wokwi仿真WiFi网络通信(STA模式)159
9.3WiFi网络校时案例160
9.3.1网络校时协议介绍160
9.3.2DIY开发板通过WiFi进行网络校时案例161
9.3.3Wokwi仿真WiFi网络校时案例162
9.4WiFi网络TCP数据通信案例162
9.4.1TCP通信介绍162
9.4.2DIY开发板通过WiFi进行TCP数据通信(TCP客户端
模式)案例164
9.4.3DIY开发板通过WiFi进行TCP数据通信(TCP服务器
模式)案例165
实验九WiFi通信实验167
第10章蓝牙通信168
10.1蓝牙通信介绍169
10.1.1什么是蓝牙通信169
10.1.2ESP32的蓝牙通信模块170
10.1.3MicroPython中的蓝牙通信相关类171
10.2蓝牙初始化与数据传输172
10.2.1MicroPython蓝牙通信初始化172
10.2.2MicroPython蓝牙通信数据传输173
10.3手机控制DIY开发板LED开关案例174
10.3.1手机蓝牙助手App介绍174
10.3.2蓝牙助手App控制DIY开发板LED开关案例174
实验十蓝牙通信实验176
第11章创新项目设计177
11.1基于无源蜂鸣器的音乐播放器178
11.1.1无源蜂鸣器驱动原理178
11.1.2PWM驱动无源蜂鸣器工作案例178
11.1.3无源蜂鸣器演奏“小星星”180
11.2基于光敏电阻的自动亮度调节LED182
11.2.1光敏电阻工作原理182
11.2.2光敏电阻电压数据采集案例182
11.2.3基于光敏电阻的自动亮度调节LED183
11.3基于红外遥控器控制的LED184
11.3.1红外数据传输原理184
11.3.2红外遥控器数据采集案例185
11.3.3基于红外遥控器控制的LED187
11.4基于滚珠开关的旋转时钟188
11.4.1滚珠开关工作原理188
11.4.2DIY开发板滚珠开关状态采集案例189
11.4.3基于滚珠开关的TFTLCD旋转时钟191
11.4.4基于滚珠开关的OLED旋转时钟193
11.5基于DHT11的温湿度采集与显示195
11.5.1DHT11温湿度传感器工作原理195
11.5.2DHT11的温湿度数据采集案例196
11.5.3基于DHT11的温湿度采集与OLED显示198
11.5.4基于DHT11的温湿度采集与TFTLCD显示200
11.6基于MQTT通信协议的远程温湿度检测系统202
11.6.1MQTT通信协议简介202
11.6.2MQTT数据发布与订阅案例203
11.6.3PC端MQTT调试软件“MQTT.fx”使用206
11.6.4手机端MQTT调试App软件“MQTT调试器”使用208
11.6.5基于MQTT通信协议的远程温湿度检测系统209
实验十一温湿度采集系统综合案例实验212
第12章PCB设计与制作213
12.1嘉立创EDA软件介绍214
12.1.1软件特点214
12.1.2PCB开发板设计的基本流程214
12.1.3新工程建立与保存215
12.2开发板原理图设计216
12.2.1原理图环境参数设置216
12.2.2器件的选择217
12.2.3器件的连接218
12.2.4自定义器件的设计219
12.2.5注释文字的添加219
12.2.6原理图DRC检查220
12.3开发板PCB图设计220
12.3.1原理图导入220
12.3.2放置板框221
12.3.3规则设置221
12.3.4图层设置222
12.3.5自动布线 223
12.3.6PCB图DRC检查224
12.3.7手动布线224
12.3.8添加丝印225
12.3.9添加泪滴225
12.4PCB的制作226
12.4.1PCB在线下单流程226
12.4.2SMT(贴片器件焊接)在线下单流程227
12.4.3元件在线购买流程227
12.5开发板3D外壳设计与制作229
12.5.12D和3D预览229
12.5.23D外壳设计基本流程229
12.5.33D外壳下单流程230
实验十二温湿度采集系统PCB制作实验231
附录232
附录AESP32S3的MicroPython固件烧录方法232
附录BYDESP32S3核心板与DIY开发板原理图234
附录CDIY开发板引脚功能表235
参考文献236