写点什么

什么是 MircoPython?

发布于: 22 小时前

​​​​​​​​​​​​​​摘要:互联网玩家为了让 Python 这样的简单易学、社区 API 丰富的语言可以在嵌入式领域用上,逐渐开始了一轮 Python 上嵌入式的迁移,这样就有了今天的主角——MircoPython。


本文分享自华为云社区《Python的物联网衍生microPython【生长吧!Python】》,原文作者:o0 龙龙 0o 。

引言


随着物联网的发展,随着互联网向嵌入式应用下沉,很多应用在互联网的编程语言也慢慢向嵌入式和单片机领域发展。


因为物联网的高速发展,边端嵌入式应用也开始被物联网玩家介入,本来嵌入式的发展主要应用的的嵌入式的 C 语言,因为 C 语言对比互联网使用的脚本语言有上手慢,不好学,社区 API 少等问题,不利于互联网玩家和模式的介入,互联网玩家为了让 Python 这样的简单易学、社区 API 丰富的语言可以在嵌入式领域用上,有人说 1000 行的 C 程序、100 行的 Java 程序、Python 只需要 10 行,体现 Python 的便易性,逐渐开始了一轮 Python 上嵌入式的迁移,这样就有了今天的主角——MircoPython。

   

MicroPython 和 Python 一样,都是遵循 GPL(GNU General Public License)协议的开源解释性语言,可以在任何硬件板子上运行已经移植好的 API 控制硬件和进行算法运算,比如常见的硬件 IO-存储器、传感器、显示器、灯开关、运动部件、网络和通讯都可以利用 MicroPython 语言进行操作。

   

MicroPython 可以让有 Python 语言经验的人但是没有 C 语言基础、嵌入式基础和硬件基础的人,更快捷的接触嵌入式,控制自己手里的 MCU。

MicroPython


MicroPython 是 Python 3 编程语言的精简高效实现,其中包括 Python 标准库的一小部分,并针对在微控制器和受限环境中运行进行了优化。


MicroPythonpyboard 是一款紧凑型电子电路板,可在裸机上运行 MicroPython,为您提供可用于控制各种电子项目的低级 Python 操作系统。


MicroPython 充满了高级功能,例如交互式提示、任意精度整数、闭包、列表理解、生成器、异常处理等。 然而,它足够紧凑,可以在仅 256k 的代码空间和 16k 的 RAM 内运行。MicroPython 旨在尽可能与普通 Python 兼容,让您可以轻松地将代码从桌面传输到微控制器或嵌入式系统。


MicroPython 是在裸机上运行的完整 Python 编译器和运行时。 您将获得一个交互式提示 (REPL) 以立即执行命令,以及从内置文件系统运行和导入脚本的能力。 


MicroPython 尽量与 Python(称为 CPython)尽可能兼容,包括用于访问低级硬件的“机器”等模块也实现了一些核心 Python 库。


看一下看 MicroPython 是如何操作硬件的


import pyb
# 点亮LED1pyb.LED(1).on()
# 打印信息到串口窗口print('Hello MicroPython!')
复制代码


有个 MicroPython ,我就可以这样简单的操作一个 LED 的点亮和关闭,也可以打印 log 到串口窗口

更复杂我们可以操作一个存储器,如下:


from machine import Pin, I2C
# 创建一个I2C总线i2c = I2C(scl=Pin('X1'), sda=Pin('X2'))
#查找总线上的设备dev_list = i2c.scan()
# 向设备地址0x42写入‘4’同时从0x42读出4个字节i2c.writeto(0x42, b'4')data = i2c.readfrom(0x42, 4)
# 存储器和内存互相访问i2c.writeto_mem(0x42, 0x12, b'')data = i2c.readfrom_mem(0x42, 0x12, 2)
复制代码


通过上面的命令我们就可以简单的操作一个 I2C 存储器,比 C 语言方便太多了,有个 mircoPython,我们甚至可以直接利用嵌入式进行数学运算,来实现计算的转移,当然大型运算还是需要嵌入式够有一定的算力,这个和当前的设备定义有些出入,挺好玩,比如在 mircoPython IDE 上我们可以直接运行下面的计算,当时计算不是由计算机而是由连接的嵌入式 MCU 完成的。


# mircoPython 数据表示及计算# 小整数>>> 123123# 大整数>>> 1 << 1601461501637330902918203684832716283019655932542976# 浮点数>>> 1.23e61230000.0# 复数计算>>> (1 + 2j) * 4j(-8+4j)
复制代码

microPython 应用


目前 MicroPython 支持基于 32-bit 的 ARM 处理器,比如说 pyboard(STM32F405),支持 NRF51822(micro:bit)、支持 FireBeetle-ESP32、支持 WiPy、支持 ESP8266 核心主控、支持 CC3200 等等。


越来越多厂家开始适配 MicroPython,毕竟有着潜在的用户群,说不定未来 LiteOS 也会去继承 MicroPython 的支持,现在好像已经有 Javascript 的支持,有个 Python 的对应语言包支持,互联网的人就更容易介入到物联网感知层的开发了,对于行业的发展是个大好事,希望以后会有更多的支持,比如鸿蒙,也会支持更多的语言包。


点击关注,第一时间了解华为云新鲜技术~

发布于: 22 小时前阅读数: 15
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
什么是MircoPython?