新書推薦:
《
重写晚明史(全5册 精装)
》
售價:NT$
3560.0
《
汉末晋初之际政治研究
》
售價:NT$
602.0
《
强者破局:资治通鉴成事之道
》
售價:NT$
367.0
《
鸣沙丛书·鼎革:南北议和与清帝退位
》
售價:NT$
551.0
《
从康德到黑格尔的发展:兼论宗教哲学(英国观念论名著译丛)
》
售價:NT$
275.0
《
突破不可能:用特工思维提升领导力
》
售價:NT$
352.0
《
王阳明大传:知行合一的心学智慧(精装典藏版)
》
售價:NT$
1010.0
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:NT$
602.0
編輯推薦:
《MicroPython项目开发实战》探讨了开发人员如何利用Python开发基于精简版Python(即MicroPython)的应用程序。MicroPython早在2013年就出现了,并且一直在稳步发展,围绕MicroPython形成了一个活跃和创新的社区。MicroPython允许开发人员在更高的抽象层次上工作,使其专注于应用程序,而将低层处理器细节留在接口后面,这使得即使是非软件开发人员也可以轻松地快速编写控制硬件和与硬件接口的应用程序。
內容簡介:
《MicroPython项目开发实战》详细阐述了与MicroPython项目相关的基本内容,主要包括MicroPython简介、管理实时任务、针对I/O扩展器编写MicroPython驱动程序、开发应用程序测试框架、自定义MicroPython内核启动代码、自定义调试工具以可视化传感器数据、使用手势控制设备、基于Android的自动化和控制、利用机器学习构建物体检测应用程序、MicroPython的未来等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
關於作者:
雅各布·贝宁格是一位专注于基于微控制器的嵌入式系统的独立顾问。他曾为多个行业提供咨询、指导和开发系统,包括汽车、国防、工业、医疗和航天领域。Jacob喜欢与公司合作,帮助他们开发和改进流程和技能。他每月出版一份时事通讯,以及关于嵌入式系统设计技术和挑战的出版物的博客。Jacob持有中密歇根大学(Central Michigan University)电气工程、物理和数学学士学位,以及密歇根大学(University of Michigan)空间系统工程硕士学位。
目錄 :
第1章 MicroPython简介 1
1.1 嵌入式软件语言 1
1.2 MicroPython案例 3
1.2.1 用例1—DIY项目 5
1.2.2 用例2—快速原型 5
1.2.3 用例3—小批量生产产品 6
1.3 评估MicroPython是否适合 7
1.4 选择合适的开发平台 8
1.4.1 调查可用的架构 8
1.4.2 确定感兴趣的开发板 9
1.4.3 利用KT矩阵选择开发板 12
1.5 MicroPython的开发过程和策略 13
1.6 有用的开发资源 16
1.7 本章小结 16
1.8 本章练习 17
1.9 进一步阅读 17
第2章 管理实时任务 19
2.1 技术需求 19
2.2 实时调度的需求条件 19
2.3 MicroPython调度技术 20
2.3.1 轮流调度 21
2.3.2 使用定时器的周期性调度 24
2.3.3 MicroPython线程机制 28
2.3.4 事件驱动调度 31
2.3.5 合作式调度 31
2.4 使用asyncio的协同多任务处理 31
2.4.1 asyncio简介 32
2.4.2 基于协作多任务的LED示例 33
2.4.3 关于asyncio的进一步讨论 35
2.5 本章小结 36
2.6 本章练习 36
2.7 进一步阅读 36
第3章 针对I/O扩展器编写MicroPython驱动程序 37
3.1 技术需求 37
3.2 RGB按钮I/O扩展器项目要求 38
3.2.1 硬件需求 38
3.2.2 软件需求 38
3.3 硬件和软件架构设计 39
3.3.1 硬件架构 39
3.3.2 详细的硬件设计 40
3.3.3 选择一个按钮 41
3.3.4 I/O扩展器原理图 41
3.3.5 软件架构 42
3.4 项目构建 45
3.4.1 构建硬件 45
3.4.2 构建I/O扩展器驱动程序 46
3.4.3 构建RGB驱动程序 47
3.4.4 构建RGB按钮驱动程序 48
3.5 测试和验证 49
3.5.1 开发测试用例 49
3.5.2 编写应用程序 52
3.6 本章小结 58
3.7 本章练习 58
3.8 进一步阅读 58
第4章 开发应用程序测试框架 59
4.1 技术需求 59
4.2 测试框架简介 59
4.3 测试框架的需求 61
4.3.1 硬件需求 61
4.3.2 软件需求 62
4.4 测试框架设计 63
4.4.1 测试框架的硬件体系结构 63
4.4.2 测试框架的软件体系结构 64
4.5 构建测试框架 67
4.5.1 编写测试架构 67
4.5.2 测试PCA8574 69
4.6 运行测试框架 71
4.7 本章小结 72
4.8 本章练习 73
4.9 进一步阅读 73
第5章 自定义MicroPython内核启动代码 75
5.1 技术需求 75
5.2 MicroPython内核概述 76
5.2.1 下载MicroPython内核 76
5.2.2 MicroPython内核的组织方式 77
5.2.3 STM32L475E_IOT01A端口 77
5.3 访问启动代码 83
5.4 将MicroPython模块添加至内核中 90
5.5 将自定义内核部署至开发板上 92
5.5.1 编译后的输出文件 93
5.5.2 对开发板编程 94
5.5.3 测试更新后的内核 96
5.6 本章小结 98
5.7 本章练习 98
5.8 进一步阅读 98
第6章 自定义调试工具以可视化传感器数据 99
6.1 技术需求 99
6.2 调试和可视化嵌入式系统 100
6.3 可视化工具的需求 100
6.3.1 硬件需求 100
6.3.2 软件需求 101
6.4 可视化工具的设计 101
6.4.1 可视化工具的硬件架构 102
6.4.2 可视化工具的软件架构 103
6.5 构建可视化工具 104
6.5.1 安装项目库 105
6.5.2 在MicroPython中设置串行数据流 105
6.5.3 利用命令行参数打开COM端口 108
6.5.4 利用Matplotlib创建用户界面 110
6.5.5 绘制输入数据流 112
6.6 测试并运行可视化工具 115
6.7 本章小结 117
6.8 本章练习 118
6.9 进一步阅读 118
第7章 使用手势控制设备 119
7.1 技术需求 119
7.2 手势控制器简介 119
7.3 手势控制器的需求 120
7.3.1 硬件需求 121
7.3.2 软件需求 121
7.4 硬件和软件设计 121
7.4.1 硬件架构 122
7.4.2 详细的硬件设计 122
7.4.3 软件架构 124
7.5 构建手势控制器 125
7.5.1 APDS-9960操作理论 125
7.5.2 分析手势数据 128
7.5.3 APDS-9960手势驱动程序 131
7.5.4 APDS-9960手势类构造函数 133
7.5.5 APDS-9960手势类检测方法 135
7.5.6 手势控制器应用程序 138
7.6 测试手势控制器 140
7.7 本章小结 141
7.8 本章练习 142
7.9 进一步阅读 142
第8章 基于Android的自动化和控制 143
8.1 技术需求 143
8.2 传感器节点项目需求 143
8.2.1 硬件需求 144
8.2.2 软件需求 144
8.3 硬件和软件设计 145
8.3.1 硬件架构 145
8.3.2 软件架构 146
8.4 构建传感器节点 146
8.4.1 在ESP32上安装MicroPython 147
8.4.2 安装ESP32闪存工具 147
8.4.3 利用MicroPython对ESP32编程 147
8.4.4 利用LED测试MicroPython 149
8.4.5 设置WebREPL 150
8.4.6 利用Anaconda简化应用程序开发 152
8.4.7 安装uasyncio 154
8.4.8 编写传感器节点应用程序 154
8.5 测试传感器节点 161
8.5.1 Android套接字服务器 161
8.5.2 向传感器节点发出命令 163
8.5.3 测试命令 163
8.6 本章小结 164
8.7 本章练习 165
8.8 进一步阅读 165
第9章 利用机器学习构建物体检测应用程序 167
9.1 技术需求 167
9.2 机器学习简介 167
9.2.1 智能系统需求 169
9.2.2 从云端到边缘的机器学习 171
9.3 物体检测需求 172
9.3.1 硬件需求 172
9.3.2 软件需求 173
9.4 物体检测设计和理论 174
9.4.1 CIFAR-10和CIFAR-100数据集 174
9.4.2 机器学习模型语言 176
9.4.3 TFLu 176
9.4.4 CMSIS-NN 177
9.4.5 硬件 178
9.5 在OpenMV相机上实现并测试物体检测 178
9.5.1 OpenMV IDE 179
9.5.2 实现预训练的CIFAR-10网络 181
9.5.3 利用TensorFlow模型进行人物检测 183
9.6 本章小结 187
9.7 本章练习 187
9.8 进一步阅读 188
9.9 参考资料 188
第10章 MicroPython的未来 189
10.1 不断发展的MicroPython 189
10.2 Pyboard D-series 190
10.2.1 Pyboard D-series硬件 190
10.2.2 Pyboard D-series软件 193
10.3 真实世界中的MicroPython 196
10.3.1 DIY/创客示例项目 197
10.3.2 专业示例项目 197
10.4 MicroPython的发展趋势 198
10.5 进一步讨论 199
10.6 参考资料 199
附录A 201
內容試閱 :
传统上,嵌入式系统开发人员在编程时主要使用C语言,一些走在前沿的开发人员还会使用C 语言。在过去的10年里,设计和构建嵌入式系统的方式及软件开发的方式发生了很大的变化。Python语言已经成为许多计算机和服务器应用程序开发的主导语言,许多年轻和新进的开发人员会首先学习Python,而不是其他语言。这使得Python成为开发嵌入式系统的独特而有趣的选择。
本书探讨了开发人员如何利用Python开发基于精简版Python(即MicroPython)的应用程序。MicroPython早在2013年就出现了,并且一直在稳步发展,围绕MicroPython形成了一个活跃和创新的社区。MicroPython允许开发人员在更高的抽象层次上工作,使其专注于应用程序,而将低层处理器细节留在接口后面,这使得即使是非软件开发人员也可以轻松地快速编写控制硬件和与硬件接口的应用程序。
本书将引领读者了解使用MicroPython开发应用程序的背景,并帮助读者熟悉一些设计模式,进而针对项目形成自己的想法。
适用读者
本书适用于嵌入式系统开发人员或任何对使用MicroPython构建嵌入式系统感兴趣的读者。
这里,希望读者对电子学和Python有一些基本的了解,若具有一些MicroPython的实验经验,将会给学习带来帮助。
作者在本书中试图强化软件开发过程,一些设计自己的产品或使用开源软件的开发人员往往缺少这方面的知识。无论读者目前的技能水平如何,都将了解在何处和何时使用MicroPython、哪些技术和模式可以直接应用于自己的项目,以及如何扩展本书中的项目。
本书内容
第1章将引领读者了解嵌入式软件开发及MicroPython的适用范围。本章将讨论如何决定使用哪种语言,以及一些通用的最佳实践方案。
第2章将讨论开发人员在基于MicroPython的系统中使用的,用于调度任务的不同 技术。
第3章将解释如何为外部设备编写驱动程序。
第4章将介绍用于测试基于MicroPython的应用程序的不同方法,并为对此类操作感兴趣的读者提供了几种不同的选择。
第5章通过检查和更改MicroPython内核,帮助读者了解MicroPython的幕后操作。本章内容重点关注开发人员在生产系统时可能需要修改的启动代码。
第6章将帮助读者探索如何将传感器和调试信息从设备传输到计算机,然后可视化系统上产生的结果。这对于监视关键变量、调试语句或仅仅创建传感器仪表板非常重要。
第7章将介绍如何将手势传感器与开发板连接,并编写一个检测手势的应用程序。
第8章将学习如何使用ESP32微控制器创建一个传感器节点,该节点可以传输传感器数据并从Android模板接收命令。该方法很容易扩展到物联网(IoT)应用程序和设备控制上。
第9章演示了使用MicroPython支持的OpenMV相机模块构建一个可以检测图像中对象的应用程序。
第10章探讨了MicroPython的未来,以及我们在未来几年可能看到的方向。
软件/硬件支持
本书假定读者对Python有基本的了解,并且构建过一些嵌入式系统项目。更有经验的嵌入式软件开发人员将能够快速学习如何编写基于MicroPython的应用程序。同时,假设读者了解流程图和基本的接线图,并了解如何使用Git存储库及在自己的计算机上安装软件。本书涉及的软件/硬件及操作系统需求如表0.1所示。
表0.1 本书涉及的软件/硬件及操作系统需求
本书涉及的软件/硬件 操作系统需求
PyCharm Windows,Linux,macOS
PuTTY Windows,Linux,macOS
Linux Virtual Machine Windows,Linux,macOS
Python 3.x Windows,Linux,macOS
Anaconda Terminal Windows,Linux,macOS
Simple TCP Socket Tester Windows,Linux,macOS
续表
本书涉及的软件/硬件 操作系统需求
OpenMV IDE Windows,Linux,macOS
Pyboard —
RobotDyn I2C 8-bit PCA8574 I/O扩展器 —
Adafruit RGB Pushbutton PN: 3423 —
STM32L4 IoT Discovery Node —
Robotdyn I2C 8-bit PCA8574 I/O扩展器 —
USB to UART Converter —
Adafruit ADPS9960分线板 —
支持MicroPython的开发板 —
ESP32 WROVER-B —
OpenMV Camera Module —
书中项目并不一定是按顺序设计的。考虑到这一点,建议读者在查看自己最感兴趣的项目之前,按顺序阅读前两章。这两章介绍了MicroPython的背景知识及如何调度任务。同时,鼓励读者阅读最后一章,其中介绍了pyboard-D,这可能是在大多数实验中可选择使用的开发板。
下载示例代码
读者可访问www.packt.com并通过账号下载本书的示例代码,也可访问www.packtpub. com/support,注册后,将收到包含示例代码文件的电子邮件。
读者还可通过下列步骤下载代码文件。
(1)登录www.packt.com并注册。
(2)选择Support选项卡。
(3)单击Code Downloads。
(4)在搜索栏中输入本书的名称并遵循后续指令操作。
在文件下载完毕后,确保使用下列软件的最新版本解压或析取文件。
? Windows:WinRAR/7-Zip。
? macOS:Zipeg/iZip/UnRarX。
? Linux:7-Zip/PeaZip。
本书的代码也托管在GitHub上,对应网址为PacktPublishing/MicroPython-Projects。如果代码更新,这些代码也将在现有的GitHub存储库上更新。
另外,读者还可访问https://github.com/PacktPublishing/。其中包含丰富的书籍和视频目录的其他代码包。
下载彩色图像
我们提供了本书中截图/图表的彩色图像,读者可访问https://static.packt-cdn.com/ downloads/9781789958034_ColorImages.pdf下载。
本书约定
本书在文本方面采用了一些约定。
代码块如下所示。
def system_init():
print(”Initializing system ...”)
print(”Starting application ...”)
当希望强调特定的代码部分时,相关代码行或条目设置为粗体,如下所示。
try:
PushButton = RGB_Button.DeviceIO.Read()
except Exception as e:
sys.print_exception(e)
print(”Exiting application ...”)
sys.exit(0)
命令行输入或输出如下所示。
pip install pySerial
图标表示警告或重要的注意事项。
图标表示提示信息和操作技巧。
读者反馈和客户支持
欢迎读者对本书提出建议或意见并予以反馈。
对此,读者可向customercare@packtpub.com发送邮件,并以书名作为邮件标题。
勘误表
尽管我们希望做到尽善尽美,但错误依然在所难免。如果读者发现谬误之处,无论是文字错误还是代码错误,望不吝赐教。对此,读者可访问http://www.packtpub.com/ submit-errata,选取对应书籍,输入并提交相关问题的详细内容。
版权须知
一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知我们网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件至copyright@packtpub.com。
若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可访问authors.packtpub.com。
问题解答
若读者对本书有任何疑问,均可发送邮件至questions@packtpub.com,我们将竭诚为读者服务。