{{indexmenu_n>3}}====== MicroPython ====== MicroPython(http://micropython.org/),是Python 3编程语言的一个完整软件实现,基于ANSI C(C语言标准),被优化于运行在微控制器之上。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。 MicroPython是面向嵌入式设备的轻量级的Python,最低能够运⾏在只有256k代码空间和16K RAM的硬件上。MicroPython有两个主要应用场景:非常适合于编程入门;降低嵌入式的开发门槛。 C/C++语言在嵌入式系统中的代码占比中一直处于王者地位,但近几年MicroPython的发展和普及证明,Python无疑将在未来几年内快速抢占和蚕食C/C++的份额。 {{ :program:python:micropython-logo.svg.png?nolink |}} MicroPython是澳大利亚程序员和物理学家Damien George,在2013年一次成功的Kickstarter众筹活动之后最初创建的。尽管最初的Kickstart众筹活动将MicroPython与pyboard微控制器一起发行,MicroPython支持大量的基于ARM的体系结构。MicroPython已经运行于Arduino、ESP8266、ESP32、和物联网硬件。在2016年,Python软件基金会创建了MicroPython的BBC Micro Bit版本,作为其BBC Micro Bit合作伙伴贡献的一部分。 这个项目的源代码托管于GitHub。 ====== 硬件支持 ====== MicroPython中功能最强,速度最快,资源最丰富的是STM32系列,支持的芯片型号最多,适应性最好,它的库也是最全面的。目前STM32分支支持STM32F4/F7/L4系列下的数十种型号芯片和开发板,是DIY的最佳选择,比如说STM32F405。也就是说ARM处理器STM32F405上直接可运行Python语言,Python语言来控制单片机。 还有基于ARM®Cortex™-M0的MicroBit。不过,ESP8266(以及ESP32)可能是最普及的MicroPython硬件,获得MicroPython官方推荐。 ==== pyboard ==== {{ :program:python:pybv10b-pinout.jpg?nolink |}} pyboard是官方的MicroPython微控制器板,基于STM32F405RG微控制器。 ==== TPYBoard ==== {{ :program:python:20170314tawqpg.png?nolink |}} [[http://old.tpyboard.com/|TPYBoard]]是遵守MIT协议由[[http://www.turnipsmart.com/|TurnipSmart]]公司制作的一系列MicroPython开发板,目前TPYBoard现已形成了完善的MicroPython开发体系,并形成了完善的[[http://docs.tpyboard.com/zh/latest/|技术文档]]以及技术支持服务。TPYBoard v101/v102基于STM32F405;TPYBoard v201基于STM32F405并支持以太网;TPYBoard v202基于ESP8266并支持WIFI;TPYBoard v702基于STM32F405,是目前市面上唯一支持GPS&北斗双模定位及GPRS通信功能的MicroPython开发板。 ==== ESP8266/ESP32 ==== ESP8266 是一款由上海乐鑫信息科技(Espressif)开发的可以作为微控制器使用的成本极低且具有完整TCP/IP协议栈的Wi-Fi IoT控制芯片,由深圳安信可(Ai-Thinker)基于ESP8285生产的ESP-01模组于2014年8月首次引起了西方的创客们的注意。NodeMCU便是安信可基于ESP8266或ESP32的开源 IoT 开发板。 {{ :program:python:2922621297.png?nolink |}} NodeMCU 项目成功借鉴了 Arduino 或 Raspberry Pi 的运作模式,项目包含开发板和开源固件,该固件提供了一个基于 eLua(嵌入式 Lua)的简单编程环境。NodeMCU 内置 USB 端口,并比 Arduino 更多出Wifi支持。 在开发工具方面,有 NodeMCU 官方的 Lua SDK,第三方的 Noduino SDK,甚至也可以使用 Arduino IDE。但对ESP32和ESP8266板进行编程的流行方法是使用MicroPython固件。 ==== 掌控板 ==== {{ :program:python:4d829a0b62a65aaaef3e231389dc5964.png?nolink |}} [[https://www.mpython.cn/mPython/index|mPython掌控板]]是一块MicroPython微控制器板,由创客教育专家委员会推出,是国内第一款专为编程教育而设计的开源硬件,它集成了ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,具有专属mPythonX IDE掌控板编程软件。 “掌控板”是一个可玩性、可拓展性超高的微型掌上电脑,集多种传感器、感应器于一身,配备一块OLED屏幕,集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时板上集成OLED显示屏、RGB灯、加速度计、麦克风、数字光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及python代码编程,可实现智能机器人、创客智造作品等智能控制类应用。利用掌控上丰富的传感器,结合它小尺寸的特点还可以做很多智能穿戴、电子饰品等各种DIY作品应用。 ==== Micro:bit ==== {{ :program:python:microbit.png?nolink |}} Python软件基金会创建了MicroPython的BBC Micro Bit版本——Micro:bit Python编辑器,作为其BBC Micro Bit合作伙伴贡献的一部分。Micro:bit是基于ARM®Cortex™-M0的嵌入式系统。 ==== 兼容芯片 ==== MicroPython大致可以烧录这些芯片(具体参考[[http://micropython.org/download|MicroPython downloads]] ): * STM32F4——STM32系列是ST(意法半导体)基于Arm Cortex™-M0、M0+、M3、M4和M7内核的高性能微控制器。主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)。 * ESP8266——乐鑫设计的无线系统级芯片,集成32-bit MCU & 2.4 GHz Wi-Fi。 * ESP32——乐鑫设计的无线系统级芯片,集成32-bit MCU & 2.4 GHz Wi-Fi和Bluetooth LE。 * NUCLEO-F401RE——ST(意法半导体)带有STM32F401RE MCU的STM32 Nucleo-64开发板,支持Arduino和ST morpho连接。 * Espruino Pico——Espruino(https://www.espruino.com/)是一种可以运行在128KB闪存和8KB RAM的微控制器(MCU)上的交互式轻量级Javascript引擎,Espruino Pico是全球第一款面向初学者或专家级玩家的JavaScript单片机。 {{ :program:python:1312046997.jpg?nolink |}} ====== 编辑器 ====== ==== micro:bit Python编辑器 ==== Python软件基金会创建了MicroPython的BBC Micro Bit版本——micro:bit Python编辑器(https://python.microbit.org/) ,作为其BBC Micro Bit合作伙伴贡献的一部分。 {{ :40.oshw:micro_bit:python-editor.png?nolink |}} ==== Mu ==== Mu(https://codewith.mu/)是一个用Python编写的跨平台编辑器,它最初是为了micro:bit开发的,在发布micro:bit Python编辑器之前,Mu被官方推荐,并被认为可能是人们在BBC micro:bit上进行MicroPython编程最简单的方式。 {{ :40.oshw:micro_bit:mu.gif?nolink |}} ==== MicroPython IDE ==== MicroPython IDE是Visual Studio Code的Micropython集成开发环境。 {{ :40.oshw:micro_bit:screenshot-getting-started.png?nolink |}} ==== PythonEditor ==== [[http://www.tpyboard.com/pythoneditor/|Python Editor]]是TurnipSmart公司基于TPYBoard系列开发板的Micropython语言在线拼插编辑器。当拼插好图形,系统会根据图形自动生成Micropython代码,在右侧区域显示,不需要考虑格式和缩进的问题。只需要掌握好图形拼插的原理,代码将是完全正确的。 {{ :program:python:1527242969288603.png?nolink |}} ====== 官方文档 ====== [[https://microbit.org/guide/python/|Micro:bit的MicroPython指南]] [[https://microbit-micropython.readthedocs.io/en/latest/|BBC Micro:bit MicroPython文档]] {{ :program:python:comic.png?nolink |}} ====== CircuitPython ====== 2017 年 7 月,MicroPython 被分叉创建了 CircuitPython 以支持不同的硬件集,这是一个强调简化低成本微控制器的实验和教育的 MicroPython 版本,面向学生和初学者。为了让人更轻松体验微控制器和机器人编程,Edublocks 等项目启用了类似 Scratch 的拖放式体验,支持 CircuitPython。 {{ :program:python:68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f61646166727569742d636972637569742d707974686f6e2f43697263756974507974686f6e5f5265706f5f6865616465725f6c6f676f2e706e67.png |}} CircuitPython 的开发由 Adafruit Industries 提供支持,所以提供对 Adafruit 系列硬件的支持但降低了与 ESP8266 的兼容性。大多数 Adafruit 实现都将微控制器板显示为 USB 连接驱动器,在这些情况下,添加代码就像将它拖到磁盘一样简单。在 Adafruit 每周时事通讯 Python on Hardware 中会提供有关单板上 CircuitPython、MicroPython 和 Python 的新闻,Welcome CircuitPython 也由 adafruit.com 提供。 更多MicroPython与CircuitPython信息可以参考[[http://culmart.com/play/programming/micropython-and-circuitpython.html|这篇文章]]。