摘要:互联网玩家为了让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的对应语言包支持,互联网的人就更容易介入到物联网感知层的开发了,对于行的的发展是个大好事,希望以后会有更多的支持,比如鸿蒙,也会支持更多的语言包。

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

什么是MircoPython?的更多相关文章

  1. pyMagic:用python控制的Geek入门神器

    大学四年快要结束了,这几年也学习了一点新的姿势.最近一直在跟国外的micropython项目,这个项目是由剑桥大学的理论物理学家(theoretical physicist)Damien George ...

随机推荐

  1. 6.使用leetcode去练习语言

    目录 1 本章预览 2 简单题举例 2.1 题目描述 2.2 题目解析 2.3 题解 2.4 涉及基础语法 3 中等题举例 3.1 题目描述 3.2 题目解析 3.3 题解 3.4 涉及基础语法 4 ...

  2. 20.1 OpenSSL 字符BASE64压缩算法

    OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据.验证数字证书以及实现各种安全协议的函数和工具.它可以用于创建和管理公钥和私钥.数字证书和其他安全凭据,还支持SSL/TLS.SSH.S ...

  3. pbootcms 后台内容列表搜索功能扩展及增加显示字段功能

    应项目要求,一个内容模型下栏目不宜分的层级过多,如新闻模块,分2022.2023.2024年度,每年度下分12个月,这样就是2层栏目,再依类别(科技.动漫.电影...)划分层级,栏目数量较多,而且不易 ...

  4. 【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二)

    目录 前言 一.添加依赖 二. yml 配置 三.注入依赖 四.CRUD 常用 API ES 实体类 documents 操作 常见条件查询(重点) 分页查询 排序 构造查询 测试调用 五.文章小结 ...

  5. 浏览器跨 Tab 窗口通信原理及应用实践

    最近,相信大家一定被这么个动效给刷屏了: 以至于,基于这个效果的二次创作层出不穷,眼花缭乱. 基于跨窗口通信的弹弹球: 基于跨窗口通信的 Flippy Bird: 我也尝试制作了一个跨 Tab 窗口的 ...

  6. NodeJS下载安装

    一.什么是NodeJS? NodeJS是一个开源,跨平台的JavaScript运行环境 二.NodeJS安装包下载 1.打开网址:Node.js (nodejs.org) 2.下载稳定版本 三.Nod ...

  7. Linux笔记03: Linux常用命令_3.1命令的基本格式

    3.1命令的基本格式 3.1.1 命令提示符 [root@localhost ~]# 这就是Linux系统的命令提示符.各部分含义如下: ●[]:这是提示符的分隔符号,没有特殊含义. ●root:显示 ...

  8. [ARC105E] Keep Graph Disconnected

    题目链接 好题. 如果 \(1\) 和 \(n\) 一直联通,开始即结束. 如果 \(n\mod 4=1\),那么 \(\frac 12x(x+1)+\frac12(n-x)(n-x+1)\) 为偶数 ...

  9. [ABC318G] Typical Path Problem

    Problem Statement You are given a simple connected undirected graph $G$ with $N$ vertices and $M$ ed ...

  10. LeetCode224:基本计算器(栈)

    解题思路: 1.双栈模拟,一个用来存数,一个用来存操作符.需要考虑 '('后面紧跟'+'.'-'这种情况 2.递归:遇到左括号开始递归,遇到右括号结束递归,返回值. 1 class Solution: ...