あるらしいな。
先が見えるものがある
TOLED(Transparent OLED)と言うんだ。
M5Stamp Pico用に改造してみるか。
この記事では、M5Stamp Picoを使って、「透過型OLED(Transparent OLED)」に画像を表示させてみます。
M5Stamp Picoは、切手サイズのマイコンで、さまざまなものに組み込むことができるので、「透過型OLED(Transparent OLED)」ディスプレイもいろんな使い道ができそうです。
そこで、今回はWaveShare社の提供している「1.51inch Transparent OLED」を、「Arduino+M5Stamp Pico」で使用してみたいと思います。
M5Stamp Picoと接続する際の環境構成や、画像やテキストを描画させるためのプログラムを紹介します。
M5Stamp Picoは、Wi-Fi接続やBluetooth接続ができるので、できることが広がりそうですよ!
ぜひ、皆さんも挑戦してみてくださいね!
この記事の前提となるM5Stamp Picoのはじめかたについては、次の記事で紹介しています。
すけろく 切手サイズのコンピューター。 なかなかいい響きだの~。 げんろく 何だそれは? すけろく 「M5Stamp Pico」だ。 ESP32系のマイコンを搭載した切手サイ[…]
今回使用したマイコンとLEDストラップはこちら!
切手サイズのマイコン本体とダウンローダーがセットになったキットです。
通信(WiFi/Bluetooth)機能も搭載され、Aruduino で開発できます。
初めて購入する場合はこちらがおススメです!
<付属品>
|
透過型OLEDです。表示色は、水色になります。ディスプレイをコントロールするための拡張ボード(SSD1309ドライバーチップ内蔵)と透過型OLEDのセットになります。128×64解像度、SPI / I2Cインターフェイスです。この商品は、標準でSPIを使用するように設定されています。
I2Cで使用する場合は、はんだ付けされている部分を変更する必要があります。Amazonで確認
透過型OLEDとM5Stamp Picoを接続する
今回使用する透過型OLEDは、SPI通信を使って制御します。
今回使う「M5Stamp Pico」と「透過型OLED 」のケーブルは、次のような構成にします。

ブレッドボード、ジャンパワイヤはこちらがおススメです!
電子回路の試作を行う際に使用するツールです。こちらは、ワイヤの両端がオスーオス(差し込み型)になっています。ブレッドボード上で使用する際にはこちらが便利です。130pcsあり、長さも110/150/200/250mmとあるので持っておくと便利です。
Amazonで確認
入手元:秋月電子
型番:PH-1x40SG(6.1/6.1)両端のピンが長いものになります。40ピンありますので、8ピン分を切って使うなどできます。
秋月電子さんの通販サイトURLはこちらです。
透過型OLEDをM5Stamp Picoで使うために必要な設定
今回は、Arduino IDEを使ってM5Stamp Picoにプログラムを書き込みます。
透過型OLEDの販売元であるWaveShare社が、Arduino向けサンプルプログラムを提供しています。
Arduino IDEのライブラリ管理機能ではインストールできません。
以下の手順でダウンロードし、サンプルプログラムを実行するまでに修正すべき点をご紹介します。
左のリンクから、WaveShare社のサイトにアクセスします。

サイトを下のほうにスクロールし、「Demo Example」にあるリンクをクリックします。ダウンロードが開始されます。
以下のリンクからも直接ダウンロードできます。
WaveShare社のダウンロード元
「OLED_Module_Code_(12).7z」というファイルがダウンロードできますので、解凍ツールで解凍します。
解凍後、以下のフォルダをコピーします。
「OLED_Module_Code_(12)」-「OLED_Module_Code」-「Arduino」-「OLED_1in51」
コピーしたフォルダを以下の場所にコピーします。
Arduinoのスケッチの標準の保存先は以下の場所です。
「Cドライブ」-「Users」-「”ユーザ名”」-「Documents」-「Arduino」
<修正前>
#include <avr/pgmspace.h>
<修正後>
#include <pgmspace.h>
以下のファイルの内容を書き換えます。
※Arduinoで使用する場合はこの手順は不要です。
<対象ファイル>
・DEV_Config.h
・ImageData.c
・fonts.h
<修正後>
typedef struct
{
unsigned char index[27];
const char matrix[MAX_HEIGHT_FONT*MAX_WIDTH_FONT/8];
}CH_CN;
「fonts.h」の内容を書き換えます。
index[3]をindex[27]に変更します。
※Arduinoで使用する場合はこの手順は不要です。
<修正後>
void Paint_DrawString_CN
{
const char* p_text = pString;
「GUI_Paint.cpp」の内容を書き換えます。
「unsigned char」を「char」に変更します。
※Arduinoで使用する場合はこの手順は不要です。
<削除対象>
Serial.begin(115200);
・・・
Serial.println(“USE_SPI”);
・・・
Serial.println(“USE_I2C”);
「DEV_Config.cpp」の内容を書き換えます。
左のSerial系のコマンド部分を削除します。
※Arduinoで使用する場合はこの手順は不要です。
<修正後>
#if USE_SPI_4W
//set OLED SPI
SPI.setDataMode(SPI_MODE3);
SPI.setBitOrder(SPI_MSBFIRST);
「DEV_Config.cpp」の内容を書き換えます。
「MSBFIRST」を「SPI_MSBFIRST」に変更します。
※Arduinoで使用する場合はこの手順は不要です。
<追加後>
void setup() {
//set Serial
Serial.begin(115200);
「OLED_1in51」の内容を書き換えます。
Serial系のコマンド部分をSetup関数に追加します。
※Arduinoで使用する場合はこの手順は不要です。
<修正後>
void setup() {
・・・
if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
Serial.print(“Failed to apply for black memory…\r\n”);
}
・・・
「OLED_1in51」の内容を書き換えます。
Setup関数にある「return 1;」を削除します。
※Arduinoで使用する場合はこの手順は不要です。
<修正前>
#define OLED_CS 10
・・・
#define OLED_RST 8
・・・
#define OLED_DC 7
<修正後>
#define OLED_CS 19
・・・
#define OLED_RST 22
・・・
#define OLED_DC 21
「DEV_Config.h」の内容をM5Stamp Picoで使用するGPIOの情報に書き換えます。※別のGPIOピン番号にした場合は、読み替えてください。
M5Stamp Picoへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、M5Stamp Picoであるか確認します。
「Partition Scheme」を「No OTA(Large APP)」に設定します。
この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5Stamp Picoを起動すると、次のように透過型OLEDに表示されます。
M5Stamp Picoで透過型OLEDに画像を表示してみる
M5Stamp Picoを使って、透過型OLEDに画像を表示するプログラムを作成します。
表示する画像として、次のものを用意しました。
透過型OLEDへの画像表示プログラム
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
Arduino IDE スケッチ例
<プログラム本体>
<画像ファイル>
※「ImageData.c」という名前のファイルを以下の内容で書き換えます。
M5Stamp Picoへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、M5Stamp Picoであるか確認します。
「Partition Scheme」を「No OTA(Large APP)」に設定します。
この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5Stamp Picoを起動すると、次のように透過型OLEDに表示されます。
背景が透けて見えつつ、画像の表示ができていますね!
編集後記
いかがだったでしょうか。
透過型OLEDを使うことで、ちょっと未来感のある見せ方をすることができます。これから組み込んでいくのが楽しみです。
今回の記事は以上になります。
最後まで、ご覧いただきありがとうございました。
今回使用したマイコンと透過型OLEDはこちら!
切手サイズのマイコン本体とダウンローダーがセットになったキットです。
通信(WiFi/Bluetooth)機能も搭載され、Aruduino で開発できます。
初めて購入する場合はこちらがおススメです!
<付属品>
|
つぎから購入する場合は、次のものを購入してもよいですね。
切手サイズのマイコン本体とピンヘッダなどのコネクタ類がついているキットです。通信(WiFi/Bluetooth)機能も搭載され、Aruduino で開発できます。
ダウンローダーが必要ない場合はこちらをどうぞ!
<付属品>
|
複数個を一度に購入する場合は、次のものをどうぞ!
切手サイズのマイコンです。とても小さく、組み込みに有効なサイズ感ですね。通信(WiFi/Bluetooth)も搭載されています。
開発環境(Aruduino IDE/MicroPython/UIFlow)も豊富でおススメです!
たくさん購入したい場合はこちらをどうぞ!
<付属品>
|
透過型OLEDです。表示色は、水色になります。ディスプレイをコントロールするための拡張ボード(SSD1309ドライバーチップ内蔵)と透過型OLEDのセットになります。128×64解像度、SPI / I2Cインターフェイスです。この商品は、標準でSPIを使用するように設定されています。
I2Cで使用する場合は、はんだ付けされている部分を変更する必要があります。Amazonで確認