社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

Geek的入门神器:micropython-能跑python的stm32开发板

bodasister • 6 年前 • 574 次点击  

这个不会发图 详情图去www.tpyboard.com 0x01 引言

MicroPython是运行在微控制器上的Python,遵守MIT协议。剑桥大学数学科学中心的Damien P. George在研究各种深奥数学、物理问题之余,还搞了一个MicroPython项目,将Python移植到ARM Cortex M微处理器上,并开发了电路板。2013年曾经在KickStarter上成功筹得近10万英镑。2014年成功完成项目,发货。
同时,这个项目也在GitHub上开源,至今已有1800+星,60位贡献者。George曾在2014年PyCon UK上介绍MicroPython,所用硬件平台叫pyboard。

0x02 micropython开发板概述

Micro Python是Python 3编程语言的一个简洁和快速实现,专门优化运行于一个微控制器上。它基于ANSIC,语法跟Pyton 3基本一致,拥有自家的解析器、编译器、虚拟机和类库等,下面是MicroPython支持的一些常见开发板:

3、 TPYBoardV10x [attach]379008[/attach] TPYBoard单片机开发板,现有TPYBoardV101、v102两个版本,其中v102为v101的升级版,新增swd接口。采用python开发语言,提供了30个GPIO,轻松使用python开发物联网产品。支持Python3.0及以上版本的直接运行,支持重力加速度传感器,支持上百周边外设配件。

0x03 以TPYBoardV102为例,讲解micropython如何使用。
下面以TPYBoardV102开发板为例,详解micropython如何使用。比如说,如果现在要运行第一个脚本,那么在TPYBoardV102上面只要做这么几步:
     第一步:通过USB线插入TPYBoardV102跟电脑连接,然后电脑上面会弹出来一个名称为TPFLASH的U盘,

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

其中main.py为开机自动运行文件,可以将自己的代码放在里面;boot.py为开机引导文件,由它加载main.py;pybcdc.inf为windows下的虚拟串口驱动文件;README.txt包含开启开发板的必要基础信息。 第三步:编辑mian.py: 现在我们可以开始编写自己的 python 程序了。用文本编辑器打开 main.py 文件。Windows 环境下可以使用记事本或者其他编辑器。Mac 和 linux 下使用你喜欢的文本编辑器即可。

该行以 # 字符开始,意味着只是一个注释。这样的命令行不会被执行,仅为代码提供信息用在这个 main.py 加多两行,

第一行表明使用 pyb 模块,这个模块包含了控制开发板的所有函数和类。 第二行打开了蓝色的 LED:先是在 pyb 模块中使用了 LED 类,创建了 LED 4 的实例,然后将其点亮 第四步:重置开发板 为运行这个小小的脚本,我们需要保存并关闭 main.py文件,然后在 USB 设备中退出(或者卸载),就像退出移动磁盘一样。 当设备安全退出或解除挂载后就来到了实现功能的地方:按下板上的复位键将重置开发板并运行写好的程序。黑色的复位按键位于右边,USB 接口下。当按下复位键后绿色的 LED 将快速闪烁,然后蓝色的 LED 保持长亮。 至此编写和运行第一个 MicroPython 程序就完成了,加油!

0x04 TPYBoard单片机开发板实用案例

实例一:点亮LEDS pyboard 板上最容易实现的事情莫过于点亮板上附带的小灯。连接开发板,按照上篇教程中提到的登录方法,就可与在解释器中开始点亮 LED 灯了,代码如下: [code]myled = pyb.LED(1) myled.on() myled.off() [/code]

这些命令将控制 LED 的亮和灭。 这种方式不错,不过我们将尝试让其更智能化。在你擅长的文本编辑器里打开 pyboard 里边的 MAIN.PY 文件,写入或粘贴如下的代码。如果你是 python 新手,那么希望从此开始你能对 python 有正确的认识印象。 [code]led = pyb.LED(2) while True: led.toggle() pyb.delay(1000) [/code]

当你保存了文件后,按一下rst键,pyboard上的绿色LED将持续闪烁。

实例二:TPYboard控制LCD5110显示6x8字符 先看一下LCD5110针脚含义吧(注意:LCD5110的针脚有些不一样的) TPYBoard的针脚与5110的针脚对应关系如下:

TPYBoard LCD5110 memo ————————————————————————————

any Pin => RST Reset pin (0=reset, 1=normal)

any Pin => CE Chip Enable (0=listen for input, 1=ignore input)

any Pin => DC Data/Command (0=commands, 1=data)

MOSI => DIN data flow (Master out, Slave in)

SCK => CLK SPI clock

3V3 or any Pin => VCC 3.3V logic voltage (0=off, 1=on)

any Pin => LIGHT Light (0=on, 1=off)

GND => GND

还是看不明白的话,直接上针脚编号吧 TPYBoard LCD5110 memo ———————————————————————————— Y10 => RST Reset pin (0=reset, 1=normal) Y11 => CE Chip Enable (0=listen for input,1=ignore input) Y9 => DC Data/Command (0=commands, 1=data) X8 => DIN data flow (Master out, Slave in) X6 => CLK SPI clock VCC Y12 => LIGHT Light (0=on, 1=off)

GND

接线ok后,可运行main.py了。

main.py源代码:

[code]#main.py
import pyb
import upcd8544
from machine import SPI,Pin

def main():
    SPI    = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK
    #DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)
    #CLK =>SPI(1).SCK  'X6' SPI clock

    RST    = pyb.Pin('Y10')
    CE     = pyb.Pin('Y11')
    DC     = pyb.Pin('Y9')
    LIGHT  = pyb.Pin('Y12')
    lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)

    lcd_5110.lcd_write_string('Hello Python!',0,0)
    lcd_5110.lcd_write_string('Micropython',6,1)
    lcd_5110.lcd_write_string('TPYBoard',12,2)
    lcd_5110.lcd_write_string('v102',60,3)
    lcd_5110.lcd_write_string('This is a test of LCD5110',0,4)


if __name__ == '__main__':
    main()








[/code]
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/5892
 
574 次点击