RPX-LEDART-FUNX

ショップ


製品概要

下記の開発ボードでHUB75仕様のLEDパネルを使用できるようにする拡張ボードです。

  • TRYGEAR-VIZ-RP2350B
  • TRYGEAR-DASH-RP2350A
  • TRYGEAR-DASH-RP2040
  • TRYGEAR-LITE-RP2040

HUB75は信号線が5Vなので、信号線を3.3V->5V変換する回路が搭載されています。

また、開発基板に実装されているタクトスイッチをアプリケーションの操作用に使用することができます。

RPX-LEDART-FUNXはLED マトリックスパネル用拡張基板として以下のような特徴を持っています。

  • HUB75(E) インターフェースを利用した、1/16 または1/32 スキャンのLED マトリックスパネルを制御することができます。
  • 信号電圧が3.3V のTRYGEAR開発基板から信号電圧が5V のHUB75(E) を適切に制御するために、信号電圧の変換回路を備えており、HUB75(E) を安定して制御できます。
  • TRYGEAR開発ボードのデジタルコネクタはすべて占有しますが、アナログコネクタやTFTコネクタはすべて空いているので、センサーや様々な回路を追加して使用することができます。
  • 複数枚のLED マトリックスパネル(RP2040/RP2350のメモリによる枚数制限はあります)を接続 して制御することもできます。
  • 電子工作で広く利用されているCircuitPython などの無償、便利、高機能な開発環境を利用してLED 表示用のソフトウェアを開発できます。
  • LED マトリックスパネルの制御にはCircuitPythonのrgbmatrixライブラリを使用できます。
  • I2C端子を備えており、温度や湿度、加速度などのセンサーを搭載することができ、その計測値をLED 表示に利用することができます。
  • PICO/PICO2接続コネクタ、HUB75用コネクタ、電源ターミナルブロックは、はんだ付けが必要です。

■ 開発の背景:教科書の「抽象概念」を「実感」へ:情報のデジタル化を肉眼で捉える

RPX-LEDART-FUNXへの64x32ピクセルのLEDパネルの接続表示例

1. 教科書の中の「抽象的なデジタル概念」を、自身で操作できるリアルな体験へ

高等学校「情報I」において、「データのデジタル化」は極めて重要な単元です。教科書には「画像はRGB(赤・緑・青)の画素の集合であること(光の三原色・並置混色)」や「文字フォントはドットの組み合わせで表現されていること」が詳しく書かれています。しかしながら、生徒たちが普段使っているスマートフォンやPCの画面はあまりにも高精細すぎるため、肉眼で1つひとつの画素や素子を識別することは困難であり、どうしても画面上のシミュレーターや座学だけの「遠い抽象概念」になりがちでした。 「情報のデジタル化の仕組みを、拡大鏡などを使わず、生徒たちが自身で操作し自分たちの肉眼でありありと実感できる教材が必要である」――この教育現場の課題意識が、本製品の開発の出発点です。

2. 街中の「デジタルサイネージ」を自分で創るという、消費から創造への大転換

現在、駅や店舗、街中のいたる所で、情報を鮮やかに伝える「デジタルサイネージ(電子看板)」を目にするようになりました。これらは現代社会における情報発信(情報デザイン)と情報通信技術の結晶です。 単に教科書で考え方を勉強するだけでなく、「毎日街で見かけているあのデジタルサイネージを、自分たちの手で、自分のPythonコードを使って実現できる」という体験は、生徒たちにとってこれ以上ない強力な学習の動機付けとなります。画面の中だけで完結するプログラミングを超え、テクノロジーを「消費する側」から「作成する側」へと回るワクワク感を提供したいという想いが込められています。

3. 「HDMIの大画面出力」と「HUB75の自発光パネル」による、表現の使い分け

マイクロファンでは、教室のプロジェクターや大型テレビに高解像度でグラフィックやデータグラフを出力できる、HDMI出力搭載マイコン基板「TRYGEAR-VIZ RP2350B」を提供しています。 HDMIが「クラス全体への成果発表や、詳細なデータサイエンスの可視化」に向いているのに対し、本製品が制御するHUB75規格のLEDパネルは「明るい屋外や離れた場所からでも圧倒的な視認性を持つ、街のインフラや看板としてのデジタル表示」に向いています。 画面へ高精細に出力する技術(HDMI)と、鮮やかに自発光するパネルを駆動する技術(HUB75)。この2つのアプローチを教育現場に揃えることで、生徒たちは「目的や環境に応じたデジタル表現の使い分け(対比学習)」を多角的に学ぶことができるようになります。


CircuitPythonでのプログラム例

TRYGEAR開発基板には、それぞれに対応したCircuitPythonファームウェアを書き込んでください。さらに、そのファームウェアのバージョンに対応したライブラリbundleのlibフォルダの内容をTRYGEAR開発基板のフラッシュのlibフォルダに書き込んでください。

文字列と図形を交互に表示するプログラム例

始めに、RPX-LEDART-FUNXを64x32ピクセルのLEDパネルに接続して表示を行うプログラム例を示します。

import board
import displayio
import rgbmatrix
import framebufferio
import time

# LEDパネルの初期化
displayio.release_displays()

matrix = rgbmatrix.RGBMatrix(
  width=64, height=32, bit_depth=5,
  rgb_pins=[board.GP0, board.GP1, board.GP2, board.GP3, board.GP4, board.GP5],
  addr_pins=[board.GP6, board.GP7, board.GP8, board.GP9],
  clock_pin=board.GP11, latch_pin=board.GP12, output_enable_pin=board.GP13)

display = framebufferio.FramebufferDisplay(matrix)

# 文字や図形の表示処理
groupt = displayio.Group() # 文字列表示用のグループ
groups = displayio.Group() # 図形表示用のグループ

# 文字列の表示(登録)を行う
from adafruit_display_text import label
import terminalio

groupt.append(label.Label(terminalio.FONT, text="MicroFan", x=0, y=4, color=0xFFFFFF))
groupt.append(label.Label(terminalio.FONT, text="PICO-LEDART", x=0, y=12, color=0xFFFF00))
groupt.append(label.Label(terminalio.FONT, text="Circuit", x=0, y=20, color=0xFF00FF))
groupt.append(label.Label(terminalio.FONT, text="Python", x=25, y=28, color=0xFF00FF))

# 図形の表示(登録)を行う
from adafruit_display_shapes.rect import Rect
from adafruit_display_shapes.circle import Circle
from adafruit_display_shapes.triangle import Triangle

groups.append(Rect(2, 2, 20, 20, fill=0xFF0000, outline=0xFFFF00))
groups.append(Triangle(30, 5, 20, 25, 40, 25, fill=0x00FF00, outline=0xFFFF00))
groups.append(Circle(50, 20, 10, fill=0x0000FF, outline=0xFFFF00))

while True:
    display.root_group = groupt # 文字列を表示する
    time.sleep(3)
    display.root_group = groups # 図形を表示する
    time.sleep(1)

壁で跳ね返るボール

ボールが動いてLEDパネルの端にぶつかって音を出して跳ね返るプログラム例を示します。

import displayio, picodvi, board, rgbmatrix, framebufferio

displayio.release_displays()

matrix = rgbmatrix.RGBMatrix(
  width=64, height=32, bit_depth=5,
  rgb_pins=[board.GP0, board.GP1, board.GP2, board.GP3, board.GP4, board.GP5],
  addr_pins=[board.GP6, board.GP7, board.GP8, board.GP9],
  clock_pin=board.GP11, latch_pin=board.GP12, output_enable_pin=board.GP13)

display = framebufferio.FramebufferDisplay(matrix)

group = displayio.Group()
display.root_group = group
# ここまではグラフィックス利用の初期化で今後も共通

import simpleio
from adafruit_display_shapes.circle import Circle

class Ball(Circle):
    # 初期座標、縦横速度、色を与える
    def __init__(self, x0, y0, r, vx, vy, color):
        super().__init__(x0, y0, r, fill=color, outline=0xFFFF00)
        self.vx = vx
        self.vy = vy
    def tick(self):
        # 縦横速度分移動して
        self.x0 += self.vx
        self.y0 += self.vy
        # 画面の端に来たら速度を反転させて跳ね返る
        if self.x0 <= self.r or self.x0 >= (display.width-1)-self.r:
            simpleio.tone(board.GP20, 1000, 0.01)
            self.vx = -self.vx
        if self.y0 <= self.r or self.y0 >= (display.height-1)-self.r:
            simpleio.tone(board.GP20, 500, 0.01)
            self.vy = -self.vy

ball = Ball(20, 20, 3, 1, 2, 0x00FF00)
group.append(ball)

import time

while True:
    group[0].tick()
    time.sleep(0.05)

回路図


関連製品

TRYGEAR-DASH-RP2350A

TRYGEAR-DASH-RP2040