MicroPython 之 PYBoard


一、MicroPython 简介

Python,是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public License)协议。Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。总之,Python是一种简单易用的、能够运行在多个平台下的计算机编程语言。

而microPython,是跑在MCU(微控制器)上的Python,通过内置的解释器执行py文件或者py命令,就可以让微控制器运行您想要的功能了。microPython和Python编程语言一样,在任何板子上都可以使用通用的API控制硬件底层,比如点亮 LED 灯,读取传感器信息, LCD 显示字符串、控制电机、连接网络、连接蓝牙等等。

如果说Arduino让创客摆脱了各种编程环境配置,那么micropython直接让创客摆脱了底层。命令行和解释执行,都是C语言所不具备的优势,运行micropython的soc,就类似一台完整的电脑,我们用python文件和命令行,轻松控制这台电脑中的一切。

microPython是人们连接各种任务的粘合剂,即便您不懂编程,不懂硬件,也可以通过它来控制MCU,要给microPython下一个最准确的定义,最好用一些实例来描述。

您想当咖啡煮好时,咖啡壶就发出“吱吱”声提醒您吗?

您想当邮箱有新邮件时,电话会发出警报通知您吗?

想要一件闪闪发光的绒毛玩具吗?

想要一款具备语音和酒水配送功能的X教授蒸汽朋克风格轮椅吗?

想要一套按下快捷键就可以进行实验测试蜂音器吗?

想为您的儿子自制一个《银河战士》手臂炮吗?

想自制一个心率监测器,将每次骑脚踏车的记录存进存储卡吗?

想过自制一个能在地面上绘图,能在雪中驰骋的机器人吗?

想做一台机械臂,通过摇杆,您做什么动作,它就做什么动作吗?

想过自制一个智能气象站,自动获取天气预报数据吗?

microPython都可以为您实现。

MicroPython诞生啦!

Damien George是一名计算机工程师,他每天都要使用Python语言工作,同时也在做一些机器人项目。有一天,他突然冒出了一个想法:能否用Python语言来控制单片机,进行实现对机器人的操控呢?

要知道,Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言。遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼。

Damien为了突破这种限制,他花费了六个月的时间来打造Micro Python。它基于ANSI C,语法跟Pyton 3基本一致,拥有自家的解析器、编译器、虚拟机和类库等。目前它支持基于32-bit的ARM处理器,比如说pyboard(STM32F405),支持NRF51822(micro:bit)、支持FireBeetle-ESP32、支持WiPy、支持ESP8266核心主控、支持CC3200等等。

二、Pyboard 简介

pyboard是microPython官方出的一款支持microPython的微控制器,采用stm32f405rg MCU主芯片,邮票孔设计,体积小巧。在性能方面,pyboard除了将stm32f405rg本身的外设延用出来,还拓展了微型SD卡插槽、三周加速度计(mma7660)。在小巧的pyboard上,设有29个GPIO,4个LED灯,板载3.3V LDO电源管理芯片,可以提供高达250mA的电流,3.6~16V的宽电压输入。

本次测试板是在淘宝购买 

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-24145583300.9.7e233746ulqmzT&id=594145340736

三、PYBoard配置

1、开发环境配置

#Thonny软件安装
https://thonny.org/
#Thonny配置
工具 --> ESP8266 --> 串口号
#MicroPython官网
https://micropython.nxez.com/docs/micropython/en-us/index.html

 2、板子配置

import pyb

# 设置串口及波特率
pyb.repl_uart(pyb.UART(1, 9600)) 
# 暂停CPU,等待外部中断
pyb.wfi() 
# 获取CPU和总线频率
pyb.freq() 
# 设置cpu频率为60MHZ
pyb.freq(60000000) 
# 停止CPU,等待外部中断
pyb.stop() 

 四、PYBoard开发文档

1、延迟和计时(Delay and timing)

Use the time module:

import time

# 休眠1秒
time.sleep(1)    
# 休眠500毫秒
time.sleep_ms(500)
# 休眠10微秒 
time.sleep_us(10)
# 获取毫秒计数器的值     
start = time.ticks_ms() 
# 计算时差
delta = time.ticks_diff(time.ticks_ms(), start) 

2、内部发光二极管(Internal LEDs) 

from pyb import LED

# 1=red, 2=green, 3=yellow, 4=blue
led = LED(1) 
led.toggle()
led.on()
led.off()

# LED 3和4支持PWM强度(0-255)
# 获取强度
LED(4).intensity()
# 设置50%的强度 
LED(4).intensity(128)