神刀安全网

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

原创作者: comover

大学四年快要结束了,这几年也学习了一点新的姿势。最近一直在跟国外的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,再到最后代码移植成品,最后终于完成了,并且在接下来的一段时间会逐渐的开源。

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

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盘,比就像这样:

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

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

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

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

其中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,灯亮了!

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

从拿到一块板子,到点亮一个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的原理图:

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

* 作者:comover,本文属FreeBuf原创奖励计划文章,未经许可禁止转载。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » pyMagic:用python控制的Geek入门神器

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址