如何从Python转向MicroPython?

TsinghuaJoking 2023-07-31 08:07

01 线电轨

一、问题/目标

  前面我们学习了 Python语言, 开发无线电轨智能车模使用的是 MicroPython 语言,如何从 Python 语言编程, 转向 MicroPython 语言编程,下面让我们来谈谈以下三个问题: (1)他们之间的区别;(2) MicroPython中特殊的硬件开发软件包;(3)在 MicroPython 开发单片机中嵌入式程序的三个需要注意到的特点,Setup-Loop 整体框架结构;硬件相关软件结构;硬件中断的使用。下面让我们逐一讨论一下。

二、基本原理

1、与Python之间的差异

  • Introduction to MicroPython – Python for Microcontrollers[1]

  MicroPython 语言是集成了 Python 语言的一个分支, 实现了 Python 3.4 版本语言标准。它是专门为在单片机这类嵌入式微控制器上,  实现的一款简洁稳定的Python语言解释器由于它属于高级解释型语言,  使得单片机的开发变得容易起来现在已经有众多的单片机平台都支持 MicroPython 进行应用软件的开发。对于初学者来讲,  在语法层面, MicroPython 与 Python 语言的差别基本上不易被觉察。  这里就不做展开, 大家如果感兴趣,可以在 MicroPython 官网进行查看。  最后需要说明一点的是,  为了便于软件开发,  在MicroPython中有一种交互式程序开发模式, REPL, 也就是 Read Evaluate Print Loop。MicroPython 在此模式下, 不断读取从串口输入的 MicroPython  指令, 执行后, 进行结果输出。这个过程不断循环, 形成一个交互式开发模式。

  比如在Thonny 环境中,利用上面程序编辑窗口进行软件开发属于正常程序开发,在Shell中就可以使用 REPL 机制进行交互式开发,比如下面演示在 Shell 中 命令提示符后面输入不同命令,  回车后, MicroPython 执行结果的演示。手工输入, 或者拷贝前面的命令,  都可以进行执行。

2、硬件软件包

  为了应用到单片机平台中的硬件模块,在 MicroPython 中还集成了很多特殊的软件包。应用这些软件包可以定义一些与硬件相关的对象, 以及相关的硬件函数接口。

  这里以无线电轨智能车重核心控制板 ESP32为例, 在它的MicroPython 中就集成了很多的硬件软件包包括有管脚、异步串口、PWM、ADC 以及外部的 I2C, SPI 串行接口等。通过这些特殊的硬件驱动软件包, 我们就可以在Python 语言中访问利用这些硬件资源, 来控制车模的运行, 感知外部环境等。比如这里是 I2C总线软件包, 通过它可以连接单片机外部很多资源,为了应用这个端口,可以 import machine 软件包中的 Pin, I2C 模块,通过定义相应的对象,   设置 I2C 总线端口的属性,并与外部设备通信。

  通过实验 掌握更多单片机的这些硬件资源的特点和使用方法是应用单片机解决车模控制问题的管脚所在。

3、嵌入式程序开发

  最后, 我们讨论一下 MicroPython 开发嵌入式程序的特点。对于初学者需要注意三个方面的内容。第一个就是程序主题大体上呈现设置与循环两部分。在设置部分,往往需要 import 所需要的软件包、  对程序软件变量和硬件模块进行初始化等然后程序进入一个由 for 或者 while 语句构成的无限循环结构,  在这个结构中周期的执行一系列的指令, 完成控制的主要任务。第二部分就是需要理解程序中包含有一些与硬件相关的变量、对象等。它们需要不停的进行循环刷新和幅值,这些实时变量的值反映了单片机外部端口的电压信号, 或者通讯数据等, 通过前面的循环结构进行周期的读取或者赋值。  最终形成对外部电路的控制。

  最后讲一下在车模控制中会碰到的另外一个特殊编程技术,  那就是中断。中断是在 单片机内部硬件在满足某些条件下执行的程序片段,  比如当定时器硬件出现溢出是会产生周期的定时器中断; 在外部端口出现电压变化时会出现 IO 信号中断;在串口接收到数据的时候会出现串口通讯中断等。灵活的应用中断是单片机嵌入式开发的重要技巧。 通常情况下,  前面的 Loop 循环 以及中断程序, 在嵌入式软件开发中往往被称为嵌入式程序的 后台 任务和 前台 任务。

三、应用举例

  这里以无线电轨智能车综合测试程序为例,  来说明一下 MicroPython 程序的特点。对于初学者来看, 这个程序显得有点复杂,但在整体上, 大家看到, 它分为前后两部分。  前面部分属于 Setup 初始化部分,  做了很多的硬件初始化,  也定义了一些函数。后面一部分,就是有 while 形成的 循环控制部分,  这些属于软件的后台任务部分。在每一次循环中依次执行 OLED 屏幕的刷新,按键的检测处理,以及控制板上 LED 的闪烁, 用于显示程序运行状态。此时估计大家会有一个疑问, 车模运动中舵机和电机控制代码在哪里执行呢?

  为了解决这个疑问, 大家看这个综合演示程序的中间部分,在这里定义了 ESP32 硬件定时器对象, timer0,接下来定义了一个函数,  用于定时器中断函数后面是对定时器进行初始化,设置定时器工作模式为周期中断模式,中断周期为 10毫秒,  也就是100Hz 的重复频率,第三个参数设置中断服务程序。这个程序就是前面定义的 timer0  irq 函数。因此这个中断程序就会在 Timer0 的中断驱动下, 每隔精确的 10毫秒, 就被执行一次。 中断程序属于嵌入式软件的前台任务。 中断程序定义了中断任务这些是需要用到的全局变量,  和程序中其它函数进行信息传递。读取电磁场传感器的交流电压值判断赛道的属性计算舵机偏移量对舵机偏移量进行限幅下面就是设置电机运行速度和舵机偏移量。中间部分是用于控制电机是否运行的逻辑。之所以利用中断周期进行车模控制,  主要是为了保证控制时间的精确和周期的稳定。  这要比在 while 循环中执行控制命令更加可靠。

  大家感兴趣还可以研究一下这个程序前面的初始化过程,对于一些和硬件相关的模块的使用,可以配合后面相关的实验介绍进行联系。通过这个程序, 大家能够熟悉 MicroPython 编写嵌入式软件的一些特点。

1、演示代码

四、练习/实验

  本文给出了 MicroPython中 需要注意的编程事项, 结合后面无线电轨车模编程实验, 大家逐步理解嵌入式软件编程的特点,   这些特点也同样是用于 C 语言, 汇编语言开发嵌入式系统。为后面智能车模软件开发打下基础。

参考资料

[1]

Introduction to MicroPython – Python for Microcontrollers: https://www.seeedstudio.com/blog/2020/03/30/introduction-to-micropython-python-for-microcontrollers/#:~:text=Basically%2C%20Micropython%20is%20a%20lean%20and%20efficient%20implementation,of%20using%20other%20more%20complicated%20languages%20like%20C%2B%2B.

[2]

清华云盘资料下载: https://cloud.tsinghua.edu.cn/d/7471180bdb0f4d1ebbc7/

[3]

无线电轨智能车校内赛 | 如何学习无线电轨车模?: https://zhuoqing.blog.csdn.net/article/details/131876635

[4]

基础Python学习网站 Learn Python: https://www.learnpython.org/


TsinghuaJoking 这是一个公众号,它不端、不装,与你同游在课下、课上。 卓晴博士,清华大学中央主楼 626A。010-62773349, 13501115467,zhuoqing@tsinghua.edu.cn
评论
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 100浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 109浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 102浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 102浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 109浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 104浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 73浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 104浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 65浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 125浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 89浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 128浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦