02 黄盈樟 MicroPython与硬件开发MicroPython与硬件开发 黄盈樟 个人简介 2019年11月10日8时10分 资深嵌入式开发工程师,近几年的工作领域为开源无人机系统应用、物联网全系统 应用,擅长语言是C/C++/Python, 曾于国内多个重点大学开展无人机应用项目, 在国内多所二本院校担任物联网专业的课程讲师。 目录 CONTENTS 硬件发展史与开发语言 MicroPython发展史 MicroPython实例 MicroPython实例 物联网全栈开发 1 硬件发展史与开发语言 根据摩尔定律的发展,硬件的性能越来越好,随之对开发语言的 要求也越高。 电子管时代 中小型机时代 嵌入式系统时代 物联网时代 2 MicroPython发展史 MicroPython的缘起,在教育领域中的应用。 MicroPython发明者 • Damien George Mu编辑器及MicroPython贡献者 • • Exceptions • with , yield from, etc. • 增加 3.5’s async and await。 • 根据嵌入式运行环境,增加了硬件专用库和删减了部分库。 MicroPython支持的硬件开发板 • PyBoard • WiPy • ESP8266 • ESP32 • STM32F4 • NUCLEO boards • Espruino Pico Mi0 码力 | 23 页 | 1.77 MB | 1 年前3
8 安翔 Python助力物联网项目开发 • 服务端程序开发 •典型 IoT 项目剖析 – 智能家居系统 •典型 IoT 项目剖析 – 智能家居系统 – 技术栈 • 单片机程序开发 • 使用多种硬件接口 • 驱动各种外设 • 嵌入式Linux软件开发 • 使用多种硬件接口 • 驱动各种外设 • 数据库存储 • 网络通信 • Web程序开发 • 数据存储 • 数据可视化 Python 各个击破 IoT 技术栈 • • Python 开发 IoT 服务端 •Python 各个击破 IoT 技术栈 -- MicroPython 开发 IoT 终端 • MicroPython 支持数十种单片机 • 支持多种硬件接口:GPIO、I2C、SPI、 UART、PWM….. • 开发便捷: 直接通过文件系统编写和运行程 序, 无需烧写器 • 相比传统单片机开发模式,减少了对IC厂家 资源的依赖 •Python •Python 各个击破 IoT 技术栈 -- Python 开发 IoT 网关 • 构建Python环境:很多IC厂商的BSP已经对 Python有了很好的支持,若没有则自主移植 • 支持多种硬件接口: pyserail等,如果没有 通过C语言开发 • 支持多种数据库:sqlite、mysql…. • 支持多种网络库:requests、hbmqtt…. • 性能敏感的模块采用C/C++编写库,供 Python应用程序调用0 码力 | 22 页 | 5.00 MB | 1 年前3
Hello 算法 1.0.0b5 Python版是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。比如在某台计算机中,算法 A 的 运行时间比算法 B 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要 在各种机器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗 ,因为它们非常适合用分治思想进行分 析。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想要准确预估一段代码的运行时间,应该如何操作 呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns,乘法操作 * 需要 10 ns,打印操作 print() 需要 对一的顺序关系。 ‧ 树形结构:树、堆、哈希表,元素之间是一对多的关系。 ‧ 网状结构:图,元素之间是多对多的关系。 3.1.2 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 第 3 章 数据结构 hello‑algo0 码力 | 361 页 | 30.64 MB | 1 年前3
Python 标准库参考指南 3.7.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 14.2 configparser --- 配置文件解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 14.3 netrc --- netrc 文件处理 Python 的日志记录工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 16.7 logging.config --- 日志记录配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 16.8 logging.handlers --- 日志处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1541 30.14 site ——站点专属的配置钩子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556 31 自定义 Python 解释器 15590 码力 | 1846 页 | 9.09 MB | 9 月前3
Python 标准库参考指南 3.7.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 14.2 configparser --- 配置文件解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 14.3 netrc --- netrc 文件处理 的日志记录工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 16.7 logging.config --- 日志记录配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 16.8 logging.handlers --- 日志处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1637 30.14 site ——站点专属的配置钩子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653 31 自定义 Python 解释器 16570 码力 | 1961 页 | 9.14 MB | 9 月前3
Hello 算法 1.0.0b4 Python版方法就是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够 反映真实情况,但也存在较大局限性。 难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。例如,在某台计算机中,算法 A 的运行时 间比算法 B 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要在各种 机器上进行测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的 成简单案例的复杂度分析。 2.2. 时间复杂度 2.2.1. 统计算法运行时间 运行时间可以直观且准确地反映算法的效率。然而,如果我们想要准确预估一段代码的运行时间,应该如何 操作呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns,乘法操作 * 需要 10 ns,打印操作需要 5 ns 等。 树形结构:树、堆、哈希表,元素存在一对多的关系。 ‧ 网状结构:图,元素存在多对多的关系。 3. 数据结构 hello‑algo.com 37 3.1.2. 物理结构:连续与离散 在计算机中,内存和硬盘是两种主要的存储硬件设备。硬盘主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。内存用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。 在算法运行过程中,相关数据都存储在内存中。0 码力 | 329 页 | 27.34 MB | 1 年前3
Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 14.2 configparser --- 配置文件解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 14.3 netrc --- netrc 文件处理 的日志记录工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 16.7 logging.config --- 日志记录配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 16.8 logging.handlers --- 日志处理程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 29.2 sysconfig ——提供对 Python 配置信息的访问支持 . . . . . . . . . . . . . . . . . . . . . 1564 29.3 builtins --- 内建对象 . . . . . . . . . .0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 14.2 configparser --- 配置文件解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 14.3 netrc --- netrc 文件处理 的日志记录工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 16.7 logging.config --- 日志记录配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 16.8 logging.handlers --- 日志处理程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 29.2 sysconfig ——提供对 Python 配置信息的访问支持 . . . . . . . . . . . . . . . . . . . . . 1564 29.3 builtins --- 内建对象 . . . . . . . . . .0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 14.2 configparser --- 配置文件解析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 14.3 netrc --- netrc 文件处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 16.7 logging.config --- 日志记录配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 16.8 logging.handlers --- 日志处理程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655 29.2 sysconfig ——提供对 Python 配置信息的访问支持 . . . . . . . . . . . . . . . . . . . . . . . 1672 29.3 builtins --- 内建对象 . . . . . . . .0 码力 | 2052 页 | 9.74 MB | 9 月前3
Hello 算法 1.1.0 Python版是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源 两者的优劣并根据情境选择合适的方 法至关重要。 2.3 时间复杂度 运行时间可以直观且准确地反映算法的效率。如果我们想准确预估一段代码的运行时间,应该如何操作呢? 1. 确定运行平台,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。 2. 评估各种计算操作所需的运行时间,例如加法操作 + 需要 1 ns ,乘法操作 * 需要 10 ns ,打印操作 print() 需要 1111 (补码) = 1000 0000 (补码) → −128 你可能已经发现了,上述所有计算都是加法运算。这暗示着一个重要事实:计算机内部的硬件电路主要是基 于加法运算设计的。这是因为加法运算相对于其他运算(比如乘法、除法和减法)来说,硬件实现起来更简 第 3 章 数据结构 hello‑algo.com 56 单,更容易进行并行化处理,运算速度更快。 请注意,这并不意味着计算机只能0 码力 | 364 页 | 18.42 MB | 1 年前3
共 150 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15













