United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

DesignSpark Pmod HATで試作 - OLEDrgbを試す

Andrew Back氏がDesignSpark Pmod HATのためのPythonライブラリを公開しているのを見つけ、実際に私のRaspberry PiとPmod HATで試してみた。

Digilent社のPmod(ペリフェラルモジュール)はマイコン開発者の間では非常によく知られている。例えば、Cypress PSoCボードにもPmod用ヘッダが搭載されている。XylinxのFPGAボードにもPmodヘッダがある。こうした便利なツールを使うことであなたのアイデアを素早くプロトタイピングできるのだ。たしかにアナログ/デジタル変換用モジュールは世の中に多く出回っているが、Pmodの場合6ピンもしくは12ピンヘッダに接続するだけで、ブレッドボードやジャンパ線を利用しなくとも簡単に接続できる。さらにキーパッドやSDカードなども簡単に追加できる。この利便性をRaspberry Piの環境へと持ってくることができれば、さらにその開発は加速すること間違いなしだ。

私は既にいくつかのPmodモジュールを持っている。そのうち1つはAndrew氏のPythonライブラリが対応しているOLEDrgb(96x64ピクセルディスプレイを持ったオーガニックRGB LEDモジュール)だ。そのため、これを利用して実際に低コストなプロトタイピングを行ってみた。

箱を開けてみよう

Pmod HATはこのような可愛らしい箱に入っている。

HAT_Box_5f680d4ca6f785023ea770234bcf0a8452659f3e.jpg

中は衝撃を防ぐため緩衝材によって十分保護されている。

HAT_Box_Inside_ad64b8fd8ac6fd44bd9d804d37fe9d8a893d5fbe.jpg

モジュールにはいくつかの金属製のネジが入っているので、自身のRaspberry Piで利用する際には他の道具は一切必要ない。

HAT_Feet_85b13b81b69ae2d0f1f654e14b10d14e5e592ccc.jpg

あなたの期待通り、Pmod HATの規格は一般的なHATを同一規格となっており、65mm x 56.5mmのサイズに収まっており、一般的なRaspberry Piボードと同じように、Model A+、Model B+、2B、3B、3B+、Zero W、そしてZeroが対応している40ピンGPIOコネクタと互換性がある。

Pmodには3つの(12ピンの)ポートがあり、そのうち1つはSPI(JA/JB)をサポートしており、もう1つはI2C(JB)、そしてもう1つはUART (JC)に対応している。これらはすべてGPIOに接続されている。

また、Pmodには電源供給用のバレルジャックポート(電源ポート)が用意されており、もし1.3A以上を供給する必要がある場合は、Raspberry Piに電源を供給できるが、私は今のところまだ試したことはない。しかし、ここで注意してほしいのが、Raspberry Piの電源供給とバレルジャックからの電源供給を同時に行わないことだ。もし焼けるような匂いがしても保証はできない。

ボード上にさらにジャンパがあることに気づくだろうか。ショートさせたいときはJP1とJP2を使えばJBポートのI2Cピンにプルアップ抵抗を利用できる。また,他のジャンパ(JP3)を使えば、デバイスツリーフラグメントやその他のRaspberry Pi OSやそのドライバなどの情報を持つボード上のEPROMに書き込むこともできる。もちろん、本当にコアなユーザーでない限り、このEPROMの情報を変更する必要はない。

今すぐゼロからI/Oヒーローに

まずはじめに、ライブラリをインストールする必要がある。今回、この手順についてはスキップすることにする。Andrew氏の元の記事ではこの手順について完全にカバーしており、もしRaspberry Piに関して初心者でもそこまで難しいものではないはずだ。

ドキュメント内のインストール手順に続いて、いくつかの基本的な例と、サポートされているPmodライブラリを利用してもう少し発展させた例を紹介しよう。

OLEDrgbの基本的な例はシンプルな「Hello World」の例だ。ディスプレイにHello Worldを表示したい場合は、以下のようなシンプルなソースコードより少し複雑になる。

print(“Hello World!”)

しかし、ライブラリを利用するおかげで、そこまで複雑にならなくて済む。実際にOLEDrgbに「Hellow World」を表示する例のPythonコードを以下に示そう。

#!/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)を編集、保存するためのテキストエディタを利用したことがない場合は、以下の利用可能なエディタのうちどれかを利用してみてほしい。

nano hello.py
sudo apt-get install emacs
emacs hello.py
sudo apt-get install vim
vim hello.py

hello.pyを作成後、直接Pythonインタプリタから以下のように実行できる。

$ python hello.py

直接実行できるように権限を設定することもできる。

$ sudo chmod +x hello.py

すると以下のように実行できる。

$ sudo ./hello.py

しかし、この場合プログラムの先頭には以下を含めないといけないことに気をつける。

#!/usr/bin/env python

 

この先頭の魔法の言葉は「シバン(shebang)」と呼ばれており、OSにおいてスクリプトがどのインタプリタを利用すればいいのかを教えてくれるものである。

もし何もないIDLE状態から実行したいのであればそれも可能だ。しかし、実行するとOLEDディスプレイの白い枠内に「Hello World」が表示されるはずだ。

Hello_World_fc8140d95f3fce1af5139b7445905ce6163c5a31.jpg

ここまでの手順がうまく言ったのであれば、発展例を動かすのはすぐだ。今回はその例としてアナログクロックとライフゲーム(Conway’s Game of Life)シミュレーションを動かしてみよう。

アナログクロック

Clock2_695f9191442afb6b1f0f1ef38963f0fbd3186c68.jpg

ライフゲーム

Life_391a910dfcdb124767429a61a73a01cc08d01696.jpg

これらのプログラムをハードウェアのセットアップなしで動かすことができるのは非常に美しい。もし私がなにかしようと考えた場合、明日にでも実現できるのだ。今回のサンプル以外にも例えば、温度の測定しようと考えた場合、Pmodモジュールを交換することだけでできるのだ。

最後に

Andrew Back氏のライブラリはプロジェクトの開始において、「速く簡単に」を支援してくれる素晴らしいものだ。いくつかのサンプルが用意されており、これらを利用することでハードウェアを“飛び越えて”利用できる。LEDスクリーンを理解するのは、最初は難しそうに感じるかもしれないが、今回紹介したようなサンプルコードがあれば今すぐにでも洗練されたスクリーンディスプレイのなんでも表示できる。

Pmod HATとAndrew氏のライブラリは、ハードウェアの問題なしであなたの次のプロジェクトの「強力なクイックスタート」を助けてくれるに違いない。

Good!

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