嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

从DesignSpark Pmod HAT开始!

当我看到Andrew Back已经为DesignSpark Pmod HAT组建了一个Python库时,我知道必须从中取出我的树莓派并尝试一下这个HAT。

Digilent的Pmods(外围模块)对于大多数微控制器开发板用户来说都是非常熟悉的——例如,您会发现在Cypress PSoC板上的Pmod头——因为它们非常适合快速原型化您的想法。有大量的模块可以让您使用6或12个引脚头快速完成从模拟/数字转换到在系统中添加一个键盘或SD卡:所以不需再使用面包板和电线。将此资源引入树莓派环境对于任何想用树莓派与外界交互的人来说都是一个福音。

我已经有几个Pmods,其中的一个是Andrew的Python库支持的OLEDrgb( Organic RGB LED模块以96×64像素显示),所以我想利用这个多功能,低成本的原型设计工具,这应该很容易测试设置和运行。

开箱

The Pmod HAT 放在一个可爱的小盒子里:

HAT_Box_5f680d4ca6f785023ea770234bcf0a8452659f3e.jpg

 

……被内部的包装好好保护:

HAT_Box_Inside_ad64b8fd8ac6fd44bd9d804d37fe9d8a893d5fbe.jpg

 

板上安装了金属配件,包括固定螺丝,所以您不需要任何其他的硬件来确保将模块安装到树莓派:

HAT_Feet_85b13b81b69ae2d0f1f654e14b10d14e5e592ccc.jpg

 

如您所料,该模块符合HAT规范,其尺寸大小为65mm x 56.5mm,与所有使用40引脚GPIO连接器的树莓派板兼容,包括型号A+、B+、2B、3 B、3 B+、Zero W 和Zero。

该模块有3个(12引脚)Pmod端口:两个支持SPI (JA/JB),一个支持I2C (JB),一个支持UART (JC)。这三个端口都支持GPIO。

模块还包含电源,尽管我自己还没试过,但能给树莓派提供能量(电源供电至少提供1.3A)。不过要注意的是,不要试图在同一时间给插座和树莓派电源供电,否则会烧坏元器件。

您可能也注意到了板上的一些跳线。当短接的时候,JP1和JP2可以在JB端口上启动I2C插脚上的拉升电阻。其他的跳线(JP3)写入能使包含设备树片段和其他信息的板上EPROM包含树莓派操作系统和驱动程序。除非是真正的硬核,否则一般不需要改变EPROM的内容。

Zero I/O Hero in No Time

首先,您必须安装这些库。我不重新讨论这个过程,因为在Andrew Back的原创文章中有详细的介绍,而且两套指令都很容易遵循,即使您的树莓派经验有限,也能够理解。

文档中安装说明是一组基本的示例,然后是库支持的Pmods的一些更高级的示例

OLEDrgb的基本示例是一个真正的“Hello World”示例。当我们把单词放到LED模块显示并将放入存储时,Python代码要比刚才的代码复杂一些:

print(“Hello World!”)

但是,多亏了库连接,并没有那么复杂:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2017 RS Components Ltd
# SPDX-License-Identifier: MIT License

"""
Display Hello, World! in bounding box.
"""

from DesignSpark.Pmod.HAT import createPmod
from luma.core.render import canvas
from luma.oled.device import ssd1331

if __name__ == '__main__':
    try:
        oled = createPmod('OLEDrgb','JA')
        device = oled.getDevice()
        
        with canvas(device) as draw:
            draw.rectangle(device.bounding_box, outline="white", fill="black")
            draw.text((16,20), "Hello, World!", fill="white")
    
        while True:
            pass
    except KeyboardInterrupt:
        pass
    finally:
        oled.cleanup()

 

如果您是Linux新手,您可能不会意识到,但一旦您使用文本编辑器来保存Python程序(例如:hello.py),那么在从命令行运行时,您可以选择:

您可以直接调用Python编译器来运行这个程序:

$ python hello.py

或者您可以使用可执行程序:

$ sudo chmod +x hello.py

然后您可以使用这个运行:

$ sudo ./hello.py

然而,要做到这一点,第一行必须包括:

#!/usr/bin/env python

这就是所谓的“shebang”,并和操作系统通信,为下面的脚本找到编译器。

如果您真的想要,您也可以从IDLE运行这个程序——决定权在于您。无论您如何开始,都应该在OLED屏幕的白色边框内看到“Hello World”:

Hello_World_fc8140d95f3fce1af5139b7445905ce6163c5a31.jpg

一旦您这样做了,就离运行更高级的例子不远了,比如模拟时钟的例子和康威的生活模拟游戏:

模拟时钟

Clock2_695f9191442afb6b1f0f1ef38963f0fbd3186c68.jpg

生命的游戏

Life_391a910dfcdb124767429a61a73a01cc08d01696.jpg

 

该模块的美妙之处在于,几乎没有硬件设置时间来运行这些程序,如果想在明天做些别的事情,例如:测量温度,只是一个交换Pmod的问题。

总结

Andrew Back的库是项目的一个很好的起点,因为在使用这些例子之前,您可以快速并轻松地验证您的硬件,然后将这些示例作为您想要尝试的任何设计的起点。刚开始您可能不敢尝试使用LED显示屏,但这些例子确实给了您需要的东西,让您能在记录时看到一些相当复杂的屏幕。

总之,Pmod HAT和Andrew的库为您的下一个项目提供了一个强大的“快速启动”工具包,在您想要开始硬件组合之前,快速(并且很便宜地)测试一些东西。

我的看法是:超厉害的!

Mark completed his Electronic Engineering degree in 1991 and worked in real-time digital signal processing applications engineering for a number of years, before moving into technical marketing.
DesignSpark Electrical Logolinkedin