专栏首页FreeBufpyMagic:用python控制的Geek入门神器

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

原创作者:comover

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

0x01 缘起

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

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

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

大学四年,我也一直在做这方面的努力,尝试写了一些代码库,但是还是没有脱离编译语言的窠臼。后期看到了micropython在Kickstarter上进行筹款,正好满足我这方面的想法,所以就一直在跟。

由于micropython官方出品的硬件-pyBoard在价格较高,而且micropython遵照MIT协议的。所以我就自己做了一块板子,从原理图到PCB,再到最后代码移植成品,最后终于完成了,并且在接下来的一段时间会逐渐的开源。

Mircopython主板+FPC转接板

0x02 了解

pyMagic为一块基于STM32F405RG微控制器运行Python语言解释器的硬件平台。与Arduino类似,但pyMagic更为强大。整体来说,pyMagic支持python3语法,具有完成的Python语法分析器,解释器,编译器,虚拟机和运行环境。

完全可做到离线运行,并且能够模拟键盘和鼠标,完全可以替代teensy的工作,而且可以写python代码的那种哦。当然还有些更强大的功能,比如能够通过内置的socket进行tcp/ip数据的发送,等等,这些在后面的文章再进行介绍。

0x03 人生苦短快用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。

0x04 使用pyMagic的方式不只一种

在第二节里面提到了pyMagic内置python3的解释器,也就是能够随时解释,也就是说我们可以写一行代码就可以看到一行代码的效果咯。so cool~这种方法起始也很简单,就是将串口作为一个终端,用来进行数据的回显。

是不是有种上世纪90年代geek的感觉。下面来演示下(ps:我直接在Ubuntu上面进行视频录制的演示了,操作方法和windows略有不同,不过原理类似),其中:picocom 为linux下的串口工具:

0x05 预告

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的原理图:

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

本文分享自微信公众号 - FreeBuf(freebuf),作者:comover

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WPScan使用完整攻略:如何对WordPress站点进行安全测试

    WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用PHP编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和Wo...

    FB客服
  • 挖洞经验 | 利用密码重置功能实现账号劫持

    最近,我参加了某平台邀请的漏洞测试项目,在其中发现了一个独特的账号劫持漏洞,整个漏洞发现过程非常意外也非常幸运,通过密码重置功能就能实现账号劫持,在此我就把它写...

    FB客服
  • 缓冲区溢出漏洞可导致内核崩溃,苹果多款操作系统均受影响

    国外大神Kevin Backhouse刚刚放出了一篇博文,对苹果操作系统内核中发现的堆缓冲区溢出漏洞(CVE-2018-4407)进行了一番解构。

    FB客服
  • JanusGraph -- 事务详解(janusgraph transactions)

    几乎所有与JanusGraph的交互都与事务相关联。JanusGraph事务对于多个线程并发使用是安全的。JanusGraph实例上的方法,如graph.V(....

    洋仔聊编程
  • WCF 技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[下篇]

    [续《上篇》]TransactionFlow选项通过TransactionFlowAttribute这个操作契约写入绑定上下文,由事务绑定创建的事务信道获取该选...

    蒋金楠
  • 第一个前后端分离的web项目

      现在,开发系统是一个很火的潮流,尤其是随着数据的越来越大,前后端分离就变得势在必行,这两天刚好要开题,就跑了一个前后端分离的代码。首先我们介绍后端的流程

    stefan666
  • GDAL,地学必备~python的gdal(裁剪、拼接)

    反正我不是很熟,我只知道它很酷、很快、而且很厉害,不过好像也有很多缺陷。很酷很快很厉害我就不多说了,网上的彩虹屁多的和牛毛一样。我主要想说说几个问题,虽然这些问...

    一个有趣的灵魂W
  • 如何成为大数据Spark高手

    Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和...

    企鹅号小编
  • Go Web框架gin的入门教程

    目前,基于Go的web框架也可谓是百花齐放了,之所以选择gin ,没其他原因,就只是因为其在github上的star数是最多的,而且仅仅从README看,其文件...

    会呼吸的Coder
  • 干货 | 如何成为大数据Spark高手

    Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和...

    Spark学习技巧

扫码关注云+社区

领取腾讯云代金券