图书目录

目录

第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双分支(ifelse)43

2.7.3多分支(ifelifelse)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.4ESP32S3芯片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.2ESP32S3开发板串口介绍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.2ESP32S3中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.2ESP32S3的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.2ESP32S3的SPI接口140

8.1.3MicroPython中SPI类140

8.2ST7789 TFTLCD显示屏简介141

8.2.1TFTLCD屏幕显示原理141

8.2.2ST7789驱动芯片的MicroPython驱动库142

8.3TFTLCD显示彩色BMP图片144

8.3.1彩色BMP图片显示原理144

8.3.2DIY开发板TFTLCD接口硬件原理图分析144

8.3.3DIY开发板TFTLCD显示彩色图片和绘制图形145

8.4TFTLCD显示英文与汉字147

8.4.1英文与汉字的取模147

8.4.2GB2312字符批量取模148

8.4.3DIY开发板TFTLCD显示英文与汉字152

实验八基于SPI接口的TFTLCD显示实验153

第9章WiFi无线网络通信154

9.1WiFi无线通信介绍155

9.1.1WiFi与WLAN155

9.1.2ESP32的WiFi通信模块155

9.1.3MicroPython中的WiFi通信相关类156

9.2ESP32的WiFi使用方法157

9.2.1热点模式(AccessPoint—AP模式)使用方法157

9.2.2接入模式(Station—STA模式)使用方法158

9.2.3Wokwi仿真WiFi网络通信(STA模式)159

9.3WiFi网络校时案例160

9.3.1网络校时协议介绍160

9.3.2DIY开发板通过WiFi进行网络校时案例161

9.3.3Wokwi仿真WiFi网络校时案例162

9.4WiFi网络TCP数据通信案例162

9.4.1TCP通信介绍162

9.4.2DIY开发板通过WiFi进行TCP数据通信(TCP客户端

模式)案例164

9.4.3DIY开发板通过WiFi进行TCP数据通信(TCP服务器

模式)案例165

实验九WiFi通信实验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基于滚珠开关的TFTLCD旋转时钟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的温湿度采集与TFTLCD显示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

附录AESP32S3的MicroPython固件烧录方法232

附录BYDESP32S3核心板与DIY开发板原理图234

附录CDIY开发板引脚功能表235

参考文献236