如何从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
评论 (0)
  •   物质扩散与污染物监测系统:环境守护的关键拼图   一、物质扩散原理剖析   物质扩散,本质上是物质在浓度梯度、温度梯度或者压力梯度等驱动力的作用下,从高浓度区域向低浓度区域迁移的过程。在环境科学范畴,物质扩散作为污染物在大气、水体以及土壤中迁移的关键机制,对污染物的分布态势、浓度动态变化以及环境风险程度有着直接且重大的影响。   应用案例   目前,已有多个物质扩散与污染物监测系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润物质扩散与污染物监测系统。这些成功案例为物质
    华盛恒辉l58ll334744 2025-04-09 11:24 68浏览
  • 在人工智能技术飞速发展的今天,语音交互正以颠覆性的方式重塑我们的生活体验。WTK6900系列语音识别芯片凭借其离线高性能、抗噪远场识别、毫秒级响应的核心优势,为智能家居领域注入全新活力。以智能风扇为起点,我们开启一场“解放双手”的科技革命,让每一缕凉风都随“声”而至。一、核心技术:精准识别,无惧环境挑战自适应降噪,听懂你的每一句话WTK6900系列芯片搭载前沿信号处理技术,通过自适应降噪算法,可智能过滤环境噪声干扰。无论是家中电视声、户外虫鸣声,还是厨房烹饪的嘈杂声,芯片均能精准提取有效指令,识
    广州唯创电子 2025-04-08 08:40 196浏览
  • 文/Leon编辑/侯煜‍就在小米SU7因高速交通事故、智驾性能受到质疑的时候,另一家中国领先的智驾解决方案供应商华为,低调地进行了一场重大人事变动。(详情见:雷军熬过黑夜,寄望小米SU7成为及时雨)4月4日上午,有网友发现余承东的职务发生了变化,华为官网、其个人微博认证信息为“常务董事,终端BG董事长”,不再包括“智能汽车解决方案BU董事长”。余承东的确不再兼任华为车BU董事长,但并非完全脱离华为的汽车业务,而是聚焦鸿蒙智行。据悉,华为方面寻求将车BU独立出去,但鸿蒙智行仍留在华为终端BG部门。
    华尔街科技眼 2025-04-09 15:28 101浏览
  •   卫星图像智能测绘系统:地理空间数据处理的创新引擎   卫星图像智能测绘系统作为融合卫星遥感、地理信息系统(GIS)、人工智能(AI)以及大数据分析等前沿技术的综合性平台,致力于达成高精度、高效率的地理空间数据采集、处理与应用目标。借助自动化、智能化的技术路径,该系统为国土资源管理、城市规划、灾害监测、环境保护等诸多领域输送关键数据支撑。   应用案例   目前,已有多个卫星图像智能测绘系统在实际应用中取得了显著成效。例如,北京华盛恒辉北京五木恒润卫星图像智能测绘系统。这些成功案例为卫星
    华盛恒辉l58ll334744 2025-04-08 16:19 93浏览
  • ## DL/T645-2007* 帧格式:* 帧起始字符:68H* 地址域:A0 A1 A2 A3 A4 A5* 帧起始字符:68H* 控制码:1字节* 主站:* 13H:请求读电能表通信地址* 11H:请求读电能表数据* 1CH:请求跳闸、合闸* 从站:* 91H:正常应答读电能表* 9CH:正常应答跳闸、合闸* 数据域长度:1字节* 数据域:DI0 DI1 DI2 DI3* 发送方:每字节+33H* 接收方:每字节-33H* 数据标识:* 电能量* 最大需量及发生时间* 变量* 事件记录*
    四毛打印店 2025-04-09 10:53 76浏览
  • 文/郭楚妤编辑/cc孙聪颖‍伴随贸易全球化的持续深入,跨境电商迎来蓬勃发展期,物流行业 “出海” 成为不可阻挡的必然趋势。加之国内快递市场渐趋饱和,存量竞争愈发激烈。在此背景下,国内头部快递企业为突破发展瓶颈,寻求新的增长曲线,纷纷将战略目光投向海外市场。2024 年,堪称中国物流企业出海进程中的关键节点,众多企业纷纷扬帆起航,开启海外拓展之旅。然而,在一片向好的行业发展表象下,部分跨境物流企业的经营状况却不容乐观。它们受困于激烈的市场竞争、不断攀升的运营成本,以及复杂的国际物流环境,陷入了微利
    华尔街科技眼 2025-04-09 15:15 111浏览
  •     根据 IEC术语,瞬态过电压是指持续时间几个毫秒及以下的过高电压,通常是以高阻尼(快速衰减)形式出现,波形可以是振荡的,也可以是非振荡的。    瞬态过电压的成因和机理,IEC 60664-1给出了以下四种:    1. 自然放电,最典型的例子是雷击,感应到电力线路上,并通过电网配电系统传输,抵达用户端;        2. 电网中非特定感性负载通断。例如热处理工厂、机加工工厂对
    电子知识打边炉 2025-04-07 22:59 166浏览
  • 在万物互联时代,智能化安防需求持续升级,传统报警系统已难以满足实时性、可靠性与安全性并重的要求。WT2003H-16S低功耗语音芯片方案,以4G实时音频传输、超低功耗设计、端云加密交互为核心,重新定义智能报警设备的性能边界,为家庭、工业、公共安防等领域提供高效、稳定的安全守护。一、技术内核:五大核心突破,构建全场景安防基座1. 双模音频传输,灵活应对复杂场景实时音频流传输:内置高灵敏度MIC,支持环境音实时采集,通过4G模块直接上传至云端服务器,响应速度低至毫秒级,适用于火灾警报、紧急呼救等需即
    广州唯创电子 2025-04-08 08:59 159浏览
  •     在研究Corona现象时发现:临界电压与介电材料表面的清洁程度有关。表面越清洁的介电材料,临界电压越高;表面污染物越多的地方,越容易“爬电”。关于Corona现象,另见基础理论第007篇。    这里说的“污染物”,定义为——可能影响介电强度或表面电阻率的固体、液体或气体(电离气体)的任何情况。    IEC 60664-1 (对应GB/T 16935.1-2023) 定义了 Pollution Degree,中文术语是“污染等
    电子知识打边炉 2025-04-07 22:06 118浏览
  •   物质扩散与污染物监测系统软件:多领域环境守护的智能中枢   北京华盛恒辉物质扩散与污染物监测系统软件,作为一款融合了物质扩散模拟、污染物监测、数据分析以及可视化等多元功能的综合性工具,致力于为环境科学、公共安全、工业生产等诸多领域给予强有力的技术支撑。接下来,将从功能特性、应用场景、技术实现途径、未来发展趋势等多个维度对这类软件展开详尽介绍。   应用案例   目前,已有多个物质扩散与污染物监测系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润物质扩散与污染物监测系统。这
    华盛恒辉l58ll334744 2025-04-09 14:54 124浏览
  •   卫星图像智能测绘系统全面解析   一、系统概述   卫星图像智能测绘系统是基于卫星遥感技术、图像处理算法与人工智能(AI)技术的综合应用平台,旨在实现高精度、高效率的地理空间数据获取、处理与分析。该系统通过融合多源卫星数据(如光学、雷达、高光谱等),结合AI驱动的智能算法,实现自动化、智能化的测绘流程,广泛应用于城市规划、自然资源调查、灾害监测等领域。   应用案例   目前,已有多个卫星图像智能测绘系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润卫星图像智能测绘系统
    华盛恒辉l58ll334744 2025-04-08 15:04 108浏览
  •   工业自动化领域电磁兼容与接地系统深度剖析   一、电磁兼容(EMC)基础认知   定义及关键意义   电磁兼容性(EMC),指的是设备或者系统在既定的电磁环境里,不但能按预期功能正常运转,而且不会对周边其他设备或系统造成难以承受的电磁干扰。在工业自动化不断发展的当下,大功率电机、变频器等设备被大量应用,现场总线、工业网络等技术也日益普及,致使工业自动化系统所处的电磁环境变得愈发复杂,电磁兼容(EMC)问题也越发严峻。   ​电磁兼容三大核心要素   屏蔽:屏蔽旨在切断电磁波的传播路
    北京华盛恒辉软件开发 2025-04-07 22:55 264浏览
  • HDMI从2.1版本开始采用FRL传输模式,和2.0及之前的版本不同。两者在物理层信号上有所区别,这就需要在一些2.1版本的电路设计上增加匹配电路,使得2.1版本的电路能够向下兼容2.0及之前版本。2.1版本的信号特性下面截取自2.1版本规范定义,可以看到2.1版本支持直流耦合和交流耦合,其共模电压和AVCC相关,信号摆幅在400mV-1200mV2.0及之前版本的信号特性HDMI2.0及之前版本采用TMDS信号物理层,其结构和参数如下:兼容设计根据以上规范定义,可以看出TMDS信号的共模电压范
    durid 2025-04-08 19:01 175浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦