zoukankan      html  css  js  c++  java
  • 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的原理图:

  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/k1two2/p/5458321.html
Copyright © 2011-2022 走看看