什么是MircoPython?
摘要:互联网玩家为了让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?的更多相关文章
- pyMagic:用python控制的Geek入门神器
大学四年快要结束了,这几年也学习了一点新的姿势.最近一直在跟国外的micropython项目,这个项目是由剑桥大学的理论物理学家(theoretical physicist)Damien George ...
随机推荐
- 6.使用leetcode去练习语言
目录 1 本章预览 2 简单题举例 2.1 题目描述 2.2 题目解析 2.3 题解 2.4 涉及基础语法 3 中等题举例 3.1 题目描述 3.2 题目解析 3.3 题解 3.4 涉及基础语法 4 ...
- 20.1 OpenSSL 字符BASE64压缩算法
OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据.验证数字证书以及实现各种安全协议的函数和工具.它可以用于创建和管理公钥和私钥.数字证书和其他安全凭据,还支持SSL/TLS.SSH.S ...
- pbootcms 后台内容列表搜索功能扩展及增加显示字段功能
应项目要求,一个内容模型下栏目不宜分的层级过多,如新闻模块,分2022.2023.2024年度,每年度下分12个月,这样就是2层栏目,再依类别(科技.动漫.电影...)划分层级,栏目数量较多,而且不易 ...
- 【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二)
目录 前言 一.添加依赖 二. yml 配置 三.注入依赖 四.CRUD 常用 API ES 实体类 documents 操作 常见条件查询(重点) 分页查询 排序 构造查询 测试调用 五.文章小结 ...
- 浏览器跨 Tab 窗口通信原理及应用实践
最近,相信大家一定被这么个动效给刷屏了: 以至于,基于这个效果的二次创作层出不穷,眼花缭乱. 基于跨窗口通信的弹弹球: 基于跨窗口通信的 Flippy Bird: 我也尝试制作了一个跨 Tab 窗口的 ...
- NodeJS下载安装
一.什么是NodeJS? NodeJS是一个开源,跨平台的JavaScript运行环境 二.NodeJS安装包下载 1.打开网址:Node.js (nodejs.org) 2.下载稳定版本 三.Nod ...
- Linux笔记03: Linux常用命令_3.1命令的基本格式
3.1命令的基本格式 3.1.1 命令提示符 [root@localhost ~]# 这就是Linux系统的命令提示符.各部分含义如下: ●[]:这是提示符的分隔符号,没有特殊含义. ●root:显示 ...
- [ARC105E] Keep Graph Disconnected
题目链接 好题. 如果 \(1\) 和 \(n\) 一直联通,开始即结束. 如果 \(n\mod 4=1\),那么 \(\frac 12x(x+1)+\frac12(n-x)(n-x+1)\) 为偶数 ...
- [ABC318G] Typical Path Problem
Problem Statement You are given a simple connected undirected graph $G$ with $N$ vertices and $M$ ed ...
- LeetCode224:基本计算器(栈)
解题思路: 1.双栈模拟,一个用来存数,一个用来存操作符.需要考虑 '('后面紧跟'+'.'-'这种情况 2.递归:遇到左括号开始递归,遇到右括号结束递归,返回值. 1 class Solution: ...