技術コラム Vol.12

Pmod™でサクッとプロトタイピング!

公開日:2023/05/16

Pmodは、Digilent社が策定したマイコンボードなどに機能拡張ボードを接続するためのインタフェース規格です。規格は公開されており、誰でも利用することができます。近年、普及が目覚ましいIoT機器には、さまざまなセンサが利用されていますが、Pmodを利用することで手軽にプロトタイプの製作や機能評価が可能です。

当社のボード製品でも、2023年にリリースされた「AP-RZT2-0A」や「AP-RZA3-0A」などから順次、Pmodインタフェースが採用されています。

今回は、Pmodの概要や使い方について簡単にご紹介します。

  1. Pmodの概要
  2. Pmodで簡易デジタル温湿度計を作ってみる
  3. まとめ

1.Pmodの概要

Pmodインタフェース規格は、2011年に1.0.0が公開され、現在は2020年に公開された1.3.1が最新となっています。基本的に後方互換が保たれていますが、インタフェースが追加され、名称なども微妙に変わっていますので、少し注意が必要です。

参考PDF:Pmod interface specification 1.3.1 (Digilent)

Pmodは「Peripheral module」の略で、名称のとおり、センサ、表示器、無線など、さまざまな周辺機能のモジュールがあります。

Digilent社からは、現在100種類前後のPmodデバイスが販売されていますが、その他に各デバイスメーカーなどからもさまざまなPmodデバイスがリリースされ、DigikeyやMouserなどのネット通販で手軽に購入することができます。

  • OLEDディスプレイ
    (Digilent)
  • GPSレシーバー
    (Digilent)
  • 大気速度センサ
    US082-FS3000EVZ
    (Renesas)
  • 温湿度センサ
    US082-HS3001EVZ
    (Renesas)

(1)Pmodインタフェースの規格概要

Pmodインタフェースのコネクタは、6pinまたは12pinの一般的な2.54mmピンヘッダ/レセプタクルを使用します。

基本的にBoard to Boardで直接接続しますが、ケーブルを使って延長することも可能です。また、12pinは6pinx2列を使用し、上の列に6pinのPmodデバイスを挿して利用することが可能です。

インタフェース信号は、非常にシンプルで、電源とGND、I/O信号で構成されます。I/O信号は、UART、SPI、I2Cなど一般的な通信規格が採用されており、下表のようにType1からType6に分類されています。

Pmodインタフェースタイプ(specification 1.3.1)
タイプ名 インタフェース名 コネクタピン数
Type1 GPIO 6
Type1A expanded GPIO 12
Type2 SPI 6
Type2A expanded SPI 12
Type3 UART 6
Type3A expanded UART 12
Type4 H-Bridge 6
Type5 Dual H-Bridge 6
Type5A expanded Dual H-Bridge 12
Type6 I2C 6
Type6A expanded I2C 12

電源ピン(VCCとGND)は、どのタイプも共通で、VCCが6p、12pでGNDが5p、11pに割り当てられています。
12pinでは6pinx2列を使用し、上の列に6pinのPmodデバイスを挿して利用することが可能です。

例えば、Type2(SPI)とType2A(expanded SPI)の信号割り当ては、下表のようになります。

Pmod Type2/2A信号割り当て(specification 1.3.1)
Pin# I/O信号名 入出力 Type2 Type2A
1 CS 出力
2 MOSI 出力
3 MISO 入力
4 SCK 出力
5 GND -
6 VCC -
7 GPIO 入出力 -
8 GPIO 入出力 -
9 GPIO 入出力 -
10 GPIO 入出力 -
11 GND - -
12 VCC - -

電源(VCC)は3.3Vと5.0Vが規定されていますが、ほとんどのPmodデバイスは3.3Vで動作します。I/O信号の電気特性は厳密な規定はなく、一般的なLVCMOS3.3VまたはLVTTL3.3Vが想定されています。また、一部のPmodデバイスでは、LVCMOS1.8Vもサポートされています。

(2)Pmodのソフトウェア

Pmodデバイスのソフトウェアは、ほとんどの場合、Arduino用などのサンプルソフトウェアが配布されています。それらをベースに、使用するマイコンボードに合わせて移植します。
なお、GPIOやATコマンドで制御する、ごく簡単なPmodデバイスでは、サンプルソフトウェアが提供されていない場合もありますが、スクラッチでも容易に作成できると思います。

2. Pmodで簡易デジタル温湿度計を作ってみる

Pmodデバイスの「温湿度センサ」と「OLEDディスプレイ」を使って、簡易的なデジタル温湿度計を作ってみます。

CPUボードは、ルネサス エレクトロニクス社の最新MPU「RZ/A3UL」を搭載した「AP-RZA3-0A」を使用します。
「AP-RZA3-0A」は、基本OSにRTOSを採用したRZA3/UL 1GHzを搭載し、Pmodコネクタを2ポート搭載しています。

参考:RZ/A3UL搭載CPUボード「AP-RZA3-0A」

(1) ハードウェアの準備

AP-RZA3-0AのPmodインタフェースは、Type1/2/3/6、つまりGPIO/SPI/UART/I2Cに対応しています。
インタフェースのタイプはCPUボード裏面にあるハンダジャンパで設定変更することが可能です。

ハンダジャンパ(JP1-JP15)
CN10
Type JP1 JP2 JP3 JP4 JP5 JP6 JP7 JP8
Type1/1A(GPIO) - - - - -
Type2/2A(SPI) - - - - -
Type3/3A(UART) - - - - -
Type6/6A(I2C) - - - - -
CN11
Type JP11 JP12 JP13 JP14 JP15 JP9 JP10
Type1/1A(GPIO) - - - -
Type2/2A(SPI) - - - -
Type3/3A(UART) - - - -
Type6/6A(I2C) - - - -

出荷時設定

今回はCN10にルネサス エレクトロニクス社製温湿度センサ「US082-HS3001EVZ」、CN11にDigilent社製OLEDディスプレイ「Pmod OLEDrgb」を接続することとします。

従って、下図のようなハンダジャンパを設定します。

AP-RZA3-0AとPmodデバイスの接続例
AP-RZA3-0Aのハンダジャンパ設定例

(2)ソフトウェアの準備

AP-RZA3-0AにはPmodデバイスの動作確認用サンプルプログラムを幾つか用意しており、今回ご紹介する温湿度センサ「US082-HS3001EVZ」やOLEDディスプレイ「Pmod OLEDrgb」を対象としたサンプルプログラムも提供しています。

サンプルプログラムはPmodインタフェース制御ドライバ(GPIO・SPI・UART・I2C)をArduino標準ライブラリライクに用意しています。これまでにArduinoボードでPmodデバイスを動作させたことがある方ならば、比較的容易に弊社サンプルを動かせるのではないかと思います。

さらにサンプルプログラムはFreeRTOS™を使用して2種類のPmodをそれぞれスレッド(タスク)別に動作させるように作成しています。各Pmodの制御が独立した設計になっているので、他のPmodデバイスと組み合わせる場合でも、転用しやすいと思います。

AP-RZA3-0A OLEDディスプレイサンプルのスマートコンフィギュレータ画面

CN10側動作はスレッド「pmod1_thread」に、CN11側動作はスレッド「pmod2_thread」に独立して設計されています。
各サンプルから必要なスレッドプログラムを移植することで、様々なPmodデバイスの同時実行も可能です。

(3)動作の確認

AP-RZA3-0Aでは作成したプログラムをCPUボード上のFlashROMに書き込む手順まで用意しております。プログラムを一旦FlashROMに書き込めば、以降は電源を入れるだけでどこでもプログラムを動作することができます。

AP-RZA3-0Aのデジタル温湿度計

3. まとめ

今回は、Pmodインタフェース規格の概要と、PmodデバイスとRZ/A3ULを使った簡易デジタル温湿度計のサンプルプログラムをご紹介しました。

IoT機器などを応用した新たなサービスが次々と生まれる昨今、センサや無線などを搭載したプロトタイプをサクッと作成できるPmodは、非常に便利なアイテムだと思います。

弊社ではPmodインタフェースを搭載したボードとして「AP-RZA3-0A」の他、「AP-RZFV-0A」、「AP-RZT2-0A」、「AP-RZT2-1A」もご用意しておりますので、是非ご活用ください。

製品のご案内

本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。

  • ※ArmおよびCortexは、米国および/またはその他の地域におけるArm Limited(またはその子会社)の登録商標です。
  • ※記載されている会社名、製品名は、各社の登録商標または商標です。
  • ※記載の内容は改良のため、予告なく変更する場合がございます。