如何从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
评论
  • 晶台光耦KL817和KL3053在小家电产品(如微波炉等)辅助电源中的广泛应用。具备小功率、高性能、高度集成以及低待机功耗的特点,同时支持宽输入电压范围。▲光耦在实物应用中的产品图其一次侧集成了交流电压过零检测与信号输出功能,该功能产生的过零信号可用于精确控制继电器、可控硅等器件的过零开关动作,从而有效减小开关应力,显著提升器件的使用寿命。通过高度的集成化和先进的控制技术,该电源大幅减少了所需的外围器件数量,不仅降低了系统成本和体积,还进一步增强了整体的可靠性。▲电路示意图该电路的过零检测信号由
    晶台光耦 2025-01-16 10:12 97浏览
  • 全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,与汽车技术领先者法雷奥合作,采用创新的开放系统协议(OSP)技术,旨在改变汽车内饰照明方式,革新汽车行业座舱照明理念。结合艾迈斯欧司朗开创性的OSIRE® E3731i智能LED和法雷奥的动态环境照明系统,两家公司将为车辆内饰设计和功能设立一套全新标准。汽车内饰照明的作用日益凸显,座舱设计的主流趋势应满足终端用户的需求:即易于使用、个性化,并能提供符合用户生活方式的清晰信息。因此,动态环境照明带来了众多新机遇。智能LED的应用已
    艾迈斯欧司朗 2025-01-15 19:00 78浏览
  • 百佳泰特为您整理2025年1月各大Logo的最新规格信息,本月有更新信息的logo有HDMI、Wi-Fi、Bluetooth、DisplayHDR、ClearMR、Intel EVO。HDMI®▶ 2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新规范将支持更高的分辨率和刷新率,并提供更多高质量选项。更快的96Gbps 带宽可满足数据密集型沉浸式和虚拟应用对传输的要求,如 AR/VR/MR、空间现实和光场显示,以及各种商业应用,如大型数字标牌、医疗成像和
    百佳泰测试实验室 2025-01-16 15:41 157浏览
  • 电竞鼠标应用环境与客户需求电竞行业近年来发展迅速,「鼠标延迟」已成为决定游戏体验与比赛结果的关键因素。从技术角度来看,传统鼠标的延迟大约为20毫秒,入门级电竞鼠标通常为5毫秒,而高阶电竞鼠标的延迟可降低至仅2毫秒。这些差异看似微小,但在竞技激烈的游戏中,尤其在对反应和速度要求极高的场景中,每一毫秒的优化都可能带来致胜的优势。电竞比赛的普及促使玩家更加渴望降低鼠标延迟以提升竞技表现。他们希望通过精确的测试,了解不同操作系统与设定对延迟的具体影响,并寻求最佳配置方案来获得竞技优势。这样的需求推动市场
    百佳泰测试实验室 2025-01-16 15:45 236浏览
  • 故障现象 一辆2007款法拉利599 GTB车,搭载6.0 L V12自然吸气发动机(图1),累计行驶里程约为6万km。该车因发动机故障灯异常点亮进厂检修。 图1 发动机的布置 故障诊断接车后试车,发动机怠速轻微抖动,发动机故障灯长亮。用故障检测仪检测,发现发动机控制单元(NCM)中存储有故障代码“P0300 多缸失火”“P0309 气缸9失火”“P0307 气缸7失火”,初步判断发动机存在失火故障。考虑到该车使用年数较长,决定先使用虹科Pico汽车示波器进行相对压缩测试,以
    虹科Pico汽车示波器 2025-01-15 17:30 95浏览
  • 一个易用且轻量化的UI可以大大提高用户的使用效率和满意度——通过快速启动、直观操作和及时反馈,帮助用户快速上手并高效完成任务;轻量化设计则可以减少资源占用,提升启动和运行速度,增强产品竞争力。LVGL(Light and Versatile Graphics Library)是一个免费开源的图形库,专为嵌入式系统设计。它以轻量级、高效和易于使用而著称,支持多种屏幕分辨率和硬件配置,并提供了丰富的GUI组件,能够帮助开发者轻松构建出美观且功能强大的用户界面。近期,飞凌嵌入式为基于NXP i.MX9
    飞凌嵌入式 2025-01-16 13:15 199浏览
  • 食物浪费已成为全球亟待解决的严峻挑战,并对环境和经济造成了重大影响。最新统计数据显示,全球高达三分之一的粮食在生产过程中损失或被无谓浪费,这不仅导致了资源消耗,还加剧了温室气体排放,并带来了巨大经济损失。全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,艾迈斯欧司朗基于AS7341多光谱传感器开发的创新应用来解决食物浪费这一全球性难题。其多光谱传感解决方案为农业与食品行业带来深远变革,该技术通过精确判定最佳收获时机,提升质量控制水平,并在整个供应链中有效减少浪费。 在2024
    艾迈斯欧司朗 2025-01-14 18:45 133浏览
  • 实用性高值得收藏!! (时源芯微)时源专注于EMC整改与服务,配备完整器件 TVS全称Transient Voltage Suppre,亦称TVS管、瞬态抑制二极管等,有单向和双向之分。单向TVS 一般应用于直流供电电路,双向TVS 应用于电压交变的电路。在直流电路的应用中,TVS被并联接入电路中。在电路处于正常运行状态时,TVS会保持截止状态,从而不对电路的正常工作产生任何影响。然而,一旦电路中出现异常的过电压,并且这个电压达到TVS的击穿阈值时,TVS的状态就会
    时源芯微 2025-01-16 14:23 152浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 109浏览
  • 随着智慧科技的快速发展,智能显示器的生态圈应用变得越来越丰富多元,智能显示器不仅仅是传统的显示设备,透过结合人工智能(AI)和语音助理,它还可以成为家庭、办公室和商业环境中的核心互动接口。提供多元且个性化的服务,如智能家居控制、影音串流拨放、实时信息显示等,极大提升了使用体验。此外,智能家居系统的整合能力也不容小觑,透过智能装置之间的无缝连接,形成了强大的多元应用生态圈。企业也利用智能显示器进行会议展示和多方远程合作,大大提高效率和互动性。Smart Display Ecosystem示意图,作
    百佳泰测试实验室 2025-01-16 15:37 172浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 146浏览
  • 数字隔离芯片是现代电气工程师在进行电路设计时所必须考虑的一种电子元件,主要用于保护低压控制电路中敏感电子设备的稳定运行与操作人员的人身安全。其不仅能隔离两个或多个高低压回路之间的电气联系,还能防止漏电流、共模噪声与浪涌等干扰信号的传播,有效增强电路间信号传输的抗干扰能力,同时提升电子系统的电磁兼容性与通信稳定性。容耦隔离芯片的典型应用原理图值得一提的是,在电子电路中引入隔离措施会带来传输延迟、功耗增加、成本增加与尺寸增加等问题,而数字隔离芯片的目标就是尽可能消除这些不利影响,同时满足安全法规的要
    华普微HOPERF 2025-01-15 09:48 184浏览
  • 近期,智能家居领域Matter标准的制定者,全球最具影响力的科技联盟之一,连接标准联盟(Connectivity Standards Alliance,简称CSA)“利好”频出,不仅为智能家居领域的设备制造商们提供了更为快速便捷的Matter认证流程,而且苹果、三星与谷歌等智能家居平台厂商都表示会接纳CSA的Matter认证体系,并计划将其整合至各自的“Works with”项目中。那么,在本轮“利好”背景下,智能家居的设备制造商们该如何捉住机会,“掘金”万亿市场呢?重认证快通道计划,为家居设备
    华普微HOPERF 2025-01-16 10:22 176浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 129浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦