图书前言

前    言

传统上,嵌入式系统开发人员在编程时主要使用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,我们将竭诚为读者服务。