摘要:互联网玩家为了让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. 使用MircoPython转换PUD编码发送中文短信

    利用MircoPython的ESP32驱动安信可的A9发短信时,发现其发送中文短信的PUD编码资料有点少.经测试后总结如下: 文章目录 一.PUD编码结构 简单应用版: 具体结构: PUD编码测试网站 ...

  2. STM32 进阶教程 2 - micropython 使用

    前言 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.具有如下特点: 1.易于学习:Python有相 ...

  3. esp8266 扫描wifi_基于ESP8266与QT的智能家居控制系统设计

    近年来,在智能化.自动化高新技术的驱动下,智能家居行业进入了飞速发展时期,很多智能设备都慢慢走近了我们的生活,比如阿里的天猫精灵.小米的小爱音箱还有百度的小度音箱.它们在智能家居中一般都是用来控制一些 ...

  4. 零基础物联网开发,踩坑无数,得到这份宝典 | 原力计划

    作者 | Haor.L 责编 | 王晓曼 出品 | CSDN博客 笔者最近参加了校内的一场物联网开发竞赛,从零开始,踩坑无数,感觉很多时候事情都不像预料的一样发展,离开了美好的IDE,太多事情要在板子 ...

  5. 乐鑫ESP32-C3开发(一)简述和目录

    ESP32-C3 1. 博主简述 2. 芯片介绍 3. 博客目录 1. 博主简述 大学期间也使用过乐鑫的ESP8266/ESP32,一般都是通过Arduio/MircoPython/AT进行编程.最近 ...

  6. openmv底层算法剖析---梦飞openmv前传

    前言 接梦飞openmv博客,本篇重点剖析openmv的算法和功能实现.openmv是国外开源团队依托mirco-python架构开发的一套基于stm32内核优化算法的图像识别模组,其目的是让图像视觉 ...

  7. micropython api_micropython和python 微云

    micropython和python 微云 [复制链接] 很早就收到了micropython板子,当时焊了插针玩了几天 ,然后赖就放下了.板子不能肆意插拔实在很头疼,拔掉程序就没了 ,我认为这个严重影 ...

  8. micropython STM32移植笔记(一)

    micropython STM32移植笔记(一) 首先,我是一个搞硬件的,说白了是做电路的,呵呵... 一直想学一些软件,只会搞硬件的工程师是没有灵魂的,画了7年的PCB板卡了,但是每次调试硬件都要求 ...

  9. 基于语音控制的智能家居实现

    前言:因为大三的时候需要交一个物联网通信以及Zigbee的俩门课设,所以花了半天的时间做了一个基于语音控制的智能家居,在这里记录一下以及分享给一些在校学生作为分享,因为那段时间忙着比赛所以花了很短的时 ...

最新文章

  1. Proxool配置多数据源动态切换
  2. Linux基础命令小结
  3. Intel(R)Turbo Boost Technology Driver上面显示为感叹号
  4. 笔记6 | 从源码理解分析mScrollX和mScrollY,scrollTo()和scrollBy(),smoothScrollTo和smoothScrollBy...
  5. ASP.NET面试题目大全(非常经典、吐血推荐)
  6. mysql 索引 测试_mysql的索引测试
  7. linux5.5救援模式,RHEL5救援模式简介RescueModeinRHEL5.PDF
  8. 北京市电影局:重要项目不停工、不流产、不降标
  9. Scrum立会报告+燃尽图(十月二十二日总第十三次)
  10. 桌面 NAS 是什么
  11. linux debian安装字体,Debian安装/设置笔记(字体设置)
  12. 阻止野猪入境 丹麦在德国边境开始建设边境围栏
  13. Verilog中always与assign详解
  14. 天津少儿编程培训班费用多少呢?值不值?
  15. html怎么设置一个表格的宽度一样吗,html表格单元格大小 怎样在html中设置所有表格大小一样...
  16. 【优化充电】基于matlab遗传算法求解电动汽车充电统一管理优化问题(含负荷功率曲线对比图及充电计划)【含Matlab源码 2300期】
  17. oracle空的显示成减号,qdrzq
  18. 【python 字符判断】python 判断名字是否含有数字,英文字符和汉字
  19. MySQL:数据库练习题-1
  20. Error: EIO: i/o error, read如何解决

热门文章

  1. CSS3/ 弹性布局flex
  2. java 正規表示 group_经验分享|Java+百度AI实现人脸识别
  3. linux oa系统搭建,linux版OA系统的安装配置
  4. 【第一章】MySQL数据概述
  5. 2016012072+张济吨+散列函数的应用及其安全性
  6. 2016级算法第六次上机-D.AlvinZH的学霸养成记V
  7. java 语法 —— 数组
  8. @synthesis 使用的时候注意的地方
  9. IOS-简单WebView的使用
  10. android对应版本号