共计 2183 个字符,预计需要花费 6 分钟才能阅读完成。
摘要: 互联网玩家为了让 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 规范库的一小部分,并针对在微控制器和受限环境中运行进行了优化。
MicroPython pyboard 是一款紧凑型电子电路板,可在裸机上运行 MicroPython,为您提供可用于管制各种电子我的项目的低级 Python 操作系统。
MicroPython 充斥了高级性能,例如交互式提醒、任意精度整数、闭包、列表了解、生成器、异样解决等。然而,它足够紧凑,能够在仅 256k 的代码空间和 16k 的 RAM 内运行。MicroPython 旨在尽可能与一般 Python 兼容,让您能够轻松地将代码从桌面传输到微控制器或嵌入式零碎。
MicroPython 是在裸机上运行的残缺 Python 编译器和运行时。您将取得一个交互式提醒 (REPL) 以立刻执行命令,以及从内置文件系统运行和导入脚本的能力。
MicroPython 尽量与 Python(称为 CPython)尽可能兼容,包含用于拜访低级硬件的“机器”等模块也实现了一些外围 Python 库。
看一下看 MicroPython 是如何操作硬件的
import pyb
# 点亮 LED1
pyb.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 数据表示及计算
# 小整数
>>> 123
123
# 大整数
>>> 1 << 160
1461501637330902918203684832716283019655932542976
# 浮点数
>>> 1.23e6
1230000.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 的对应语言包反对,互联网的人就更容易染指到物联网感知层的开发了,对于行的的倒退是个大好事,心愿当前会有更多的反对,比方鸿蒙,也会反对更多的语言包。
点击关注,第一工夫理解华为云陈腐技术~