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


    大学四年快要结束了,这几年也学习了一点新的姿势。最近一直在跟国外的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的原理图:

  • 相关阅读:
    Windows下PATH等环境变量详解
    html表单,做个申请邮箱界面练习。
    截取字符串,去空格的练习。
    for循环
    c# if else的练习,判断闰年,输入日期,输出这是今年的的多少天!
    HTML
    输入输出2
    输入输出练习1
    Map练习
    数据库设计范式
  • 原文地址:https://www.cnblogs.com/k1two2/p/5458321.html
Copyright © 2020-2023  润新知