文档章节

Geek入门神器:TPYBoard-能跑MicroPython的stm32开发板

 殉殇
发布于 2017/06/20 17:34
字数 1568
阅读 9
收藏 0
点赞 0
评论 0

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

    0x01 引言


    MicroPython是运行在微控制器上的Python,遵守MIT协议。剑桥大学数学科学中心的Damien P. George在研究各种深奥数学、物理问题之余,还搞了一个MicroPython项目,将Python移植到ARM Cortex M微处理器上,并开发了电路板。2013年曾经在KickStarter上成功筹得近10万英镑。2014年成功完成项目,发货。参考网站:http://www.micropython.net.cn


    同时,这个项目也在GitHub上开源,至今已有1800+星,60位贡献者。George曾在2014年PyCon UK上介绍MicroPython,所用硬件平台叫pyboard。


    0x02 micropython开发板概述


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

1、  Pyboard

2、  Pymagic

3、  TPYBoardV102

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


    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 灯了,代码如下:

myled = pyb.LED(1)
myled.on()
myled.off()

    这些命令将控制 LED 的亮和灭。


    这种方式不错,不过我们将尝试让其更智能化。在你擅长的文本编辑器里打开 pyboard 里边的 MAIN.PY 文件,写入或粘贴如下的代码。如果你是 python 新手,那么希望从此开始你能对 python 有正确的认识印象。

led = pyb.LED(2)
while True:
   led.toggle()
   pyb.delay(1000)

    当你保存了文件后,按一下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源代码:

#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()

更多相信信息可参考网站:http://www.micropython.net.cn

© 著作权归作者所有

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 0
作品 0
Micropython TPYBoard拼插编程之按键控制LED灯

一、什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输。该开发板内置4...

bodasisiter ⋅ 04/18 ⋅ 0

[Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵

一、什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输。该开发板内置4...

bodasisiter ⋅ 04/17 ⋅ 0

第一款Micropython图形化编辑器—Python Editor

当你看到这篇文章的时候,显然你已经阅读了很多类似的文章,那么本篇文章会深入讲解一些新手的需求,提供详细的建议,当然我不会告诉你具体怎么做,一切答案都是肤浅的。 就拿我自己来说,初...

bodasisiter ⋅ 04/23 ⋅ 0

人生苦短,用 RT-Thread MicroPython 享受编程的乐趣

在 i.MX RT1050 EVK 开发板上实现这样的一个读取板载的 6 轴传感器信息和系统 CPU 利用率等信息,实时显示到网页中效果,你猜需要多少代码? 事实上 RT-Thread 的同事利用 RT-Thread MicroP...

RTThread物联网操作系统 ⋅ 05/02 ⋅ 0

Micropython之萝卜狗远程门禁控制系统

  * 本文作者:_橙子 ゝ,本文属FreeBuf原创奖励计划,未经许可禁止转载   当代社会,我们进公司需要门禁卡,出入小区需要门禁卡,门禁系统又称出入管理控制系统(ACCESS CONTROL SYSTEM)...

FreeBuf ⋅ 05/24 ⋅ 0

精彩源于起点——2018年潍坊市首次青少年Python编程公开课

有一种语言叫计算机语言 I want to talk with Computer 春遇到冬,有了岁月 天遇到地,有了永恒 我们拥有的, 不止是长大, 还有那份长大的悲欢经历。 未来会有很多可能, 但一切源于万象开始...

bodasisiter ⋅ 05/07 ⋅ 0

[Micropython]TPYBoard v10x MFRC522智能门禁系统

MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。也就是射频卡。 经常忘带钥匙,最尴尬的上周竟然去开4楼的门,(家住五楼,无电梯),开了好一会没打开,事后对4...

bodasisiter ⋅ 05/10 ⋅ 0

RT-Thread 软件包介绍

1、软件包的目的 软件包在高级语言中非常常见,很多高级语言都有对应的软件包平台,比如 Python 的 PyPi,Ruby 的 Gems 等等。软件包生态对于一门语言的选择至关重要,因为这些软件包具有很强...

RTThread物联网操作系统 ⋅ 05/17 ⋅ 0

[Micropython]TPYBoard v202 利用单片机快速实现家庭智能控制平台

一提到智能家庭,大家可能首先想到的是各种大佬级公司搞的牛逼产品,或者说是创新产品。想想就觉得很复杂,有的用工控机,有的用树莓派,还有的用arduino,不管用什么,都绕不过服务器进行控...

bodasisiter ⋅ 05/30 ⋅ 0

Micropython TurnipBit的蓝牙使用

为了部落 什么是TurnipBit开发板 TurnipBit开发板由TurnipSmart公司制作的一款MicroPython开发板,基于nrf51822芯片为主控芯片,以MKL26Z128VFM4芯片作为边载辅助芯片,板载5*5LED灯,板载加...

bodasisiter ⋅ 05/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部