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

简介: 大学四年快要结束了,这几年也学习了一点新的姿势。最近一直在跟国外的micropython项目,这个项目是由剑桥大学的理论物理学家(theoretical physicist)Damien George发起的,一个用python语言来控制硬件的项目。

大学四年快要结束了,这几年也学习了一点新的姿势。最近一直在跟国外的micropython项目,这个项目是由剑桥大学的理论物理学家(theoretical physicist)Damien George发起的,一个用python语言来控制硬件的项目。

0×01 缘起

大家都知道,如果要对一个MCU进行控制的话,一般方法是需要写基于c或者asm语言的代码,再经过专业的编译器编译后,再通过工具下载到芯片中,才能够完成整个开发过程,当然还免不了有多次调试。

这个过程肯定有很多g点,触之则痛。记得,我刚开始学51单片机的时候,安装到下载进去第一个程序花费了几天的时间,才点亮了第一个LED灯。但这还不算什么,还要学习51核的各种中断机制,还有串口,总线等各种各样的姿势,花费了不少的时间。

虽然这也对深入了解底层有很大的好处,但是,当我们只是简单的想用来做一个小测试或者小diy的时候,这种大精力的学习往往得不偿失。大家一定记得这样一句话,人生苦短,快用python。如果能够将python的轻量级与microcontroller的小型化结合在一起,那想必是及好的。

大学四年,我也一直在做这方面的努力,尝试写了一些代码库,但是还是没有脱离编译语言的窠臼。后期看到了micropython在Kickstarter上进行筹款,正好满足我这方面的想法,所以就一直在跟。由于micropython官方出品的硬件-pyBoard在价格较高,而且micropython遵照MIT协议的。所以我就自己做了一块板子,从原理图到PCB,再到最后代码移植成品,最后终于完成了,并且在接下来的一段时间会逐渐的开源。

 

Mircopython主板+FPC转接板

0×02 了解

pyMagic为一块基于STM32F405RG微控制器运行Python语言解释器的硬件平台。与Arduino类似,但pyMagic更为强大。整体来说,pyMagic支持python3语法,具有完成的Python语法分析器,解释器,编译器,虚拟机和运行环境。完全可做到离线运行,并且能够模拟键盘和鼠标,完全可以替代teensy的工作,而且可以写python代码的那种哦。当然还有些更强大的功能,比如能够通过内置的socket进行tcp/ip数据的发送,等等,这些在后面的文章再进行介绍。

0×03 人生苦短快用python

比如说,我现在要点亮一个板子上面的一颗led灯珠,那么在pyMagic上面只要做这么几步:

第一步:插入U盘,不,插入pyMagic,然后电脑上面会弹出来一个名称为PYBFLASH的U盘,比就像这样:

空间有点小只有95KB,对你没有看错,不是95MB,只有95KB。这是因为现在使用的是STM32芯片内置的flash空间,所以就只有这么大了,但是这么小写入N个python脚本文件也是足够的了。而且,我会告诉你插入TF卡后,能够扩展到4个G的嘛。

第二步:打开U盘打开后里面有如下四个文件

其中boot.py为启动文件,指明一些启动的选项main.py文件是执行的主文件,当然也可以改成其他乱七八糟的名字pybcdc.inf是windows下的驱动信息文件README.txt就是readme了。

第三步:用记事本打开boot.py

# boot.py -- run on boot-up
# can run arbitrary Python, but best to keep it minimal

import machine
import pyb
#pyb.main('main.py') # main script to run after this one
#pyb.usb_mode('CDC+MSC') # act as a serial and a storage device
#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse

去掉#pyb.main(‘main.py’) 前的注释符号,并进行保存,也就是告诉板子,启动的时候运行boot.py后要运行main.py。

第四步:用记事本打开main.py写入如下三行代码并保存:

from pyb import LED
led = LED(1) # red led
led.on()

第五步:按下复位按键bingo,灯亮了!

从拿到一块板子,到点亮一个led灯只需要五步,并且不需要安装任何的软件,进行任何的设置,或许这就是python的精髓,人生苦短快用python。

0×04 使用pyMagic的方式不只一种

在第二节里面提到了pyMagic内置python3的解释器,也就是能够随时解释,也就是说我们可以写一行代码就可以看到一行代码的效果咯。so cool~这种方法起始也很简单,就是将串口作为一个终端,用来进行数据的回显。是不是有种上世纪90年代geek的感觉。下面来演示下(ps:我直接在Ubuntu上面进行视频录制的演示了,操作方法和windows略有不同,不过原理类似),其中:picocom 为linux下的串口工具:

0×05 预告

pyMagic的功能不只是这么多,还可以读取管脚电压,播放歌曲,和其他设备连网等,当我们在碰到些硬件问题时,能够迅速解决提高效率。在接下来的文章中还会给大家带来使用pyMagic读取硬件flash,离线破解RFID卡,等简单的操作。希望能够和热爱硬件的geek一起交流学习。最后附上pyMagic的硬件特点:

STM32F405RG MCU.
168 MHz Cortex-M4 CPU with 32-bit hardware floating point.
1 MiB flash storage, 192 KiB RAM.
USB口, 支持 串口,通用存储,HID协议。
SD卡插槽。
4 LEDs, 1复位按钮, 1通用按钮.
3.3V0.3A板载 LDO , 可从USB口或者外置电池供电。
实时时钟。
30个通用IO口,其中28个支持5V输入输出。
2个 SPI接口, 2个 CAN接口, 2个I2C接口, 5个USART接口.
14个 12-bit ADC引脚。
2个DAC 引脚。

以及pyBoard的原理图:

相关文章
|
4月前
|
算法 搜索推荐 Python
我学习Python的三个神级网站
我学习Python的三个神级网站
|
8月前
|
设计模式 Python
【python】基础开发技巧
【python】基础开发技巧
22 0
|
10月前
|
数据挖掘 Java Linux
【毕业设计之python系列】基于Python+GUI的在线音乐播放器的设计与实现
【毕业设计之python系列】基于Python+GUI的在线音乐播放器的设计与实现
333 0
|
12月前
|
程序员 C语言 Python
好玩的 Python 彩蛋
好玩的 Python 彩蛋
68 0
|
Web App开发 前端开发 Ubuntu
基于python的问答对联生成系统 附完整代码 毕业设计
基于python的问答对联生成系统 附完整代码 毕业设计
202 0
基于python的问答对联生成系统 附完整代码 毕业设计
|
开发者 Python
python 范儿编程--解析式 中|学习笔记
快速学习 python 范儿编程--解析式 中
91 0
python 范儿编程--解析式 中|学习笔记
|
机器学习/深度学习 数据可视化 定位技术
python 范儿编程--解析式 上|学习笔记
快速学习 python 范儿编程--解析式 上
85 0
python 范儿编程--解析式 上|学习笔记
|
机器学习/深度学习 数据挖掘 开发者
python 范儿编程--解析式 下|学习笔记
快速学习 python 范儿编程--解析式 下
92 0
python 范儿编程--解析式 下|学习笔记
朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?
朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?
朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?
|
Python
小猪的Python学习之旅 —— 22.安静!吵到我用TNT了(上)
原理利用Python-pptx库,通过编写模板的方式自动生成批量PPT!
218 0