ESP32-C3-WROOM-02-N4でSSD1306 OLEDを使ってみる|内蔵USB書き込みからOTAへの準備

ESP32-C3とSSD1306 OLEDディスプレイを接続し、Arduino IDEからUSB経由で文字を表示している様子ESP32-C3-WROOM-02-N4でSSD1306 OLEDを使ってみる|内蔵USB書き込みからOTAへの準備
スポンサーリンク

今回は、秋月電子で購入した「ESP32-C3-WROOM-02-N4」と、スイッチサイエンスで購入したESP32用の基板を使って、SSD1306 OLEDディスプレイに文字を表示してみます。

ESP32-C3-WROOM-02-N4については、以前の記事ですでに基本的な使い方を紹介しました。

今回はその続きとして、まずArduino IDEを使ってESP32-C3-WROOM-02-N4にプログラムを書き込み、I2C接続したSSD1306 OLEDに文字を表示させます。

今回のポイントは、書き込みにUSB-UART変換器を使わず、ESP32-C3に搭載されている内蔵USBを利用することです。

そして、この最初のプログラムを動かしておくことには、もう一つ目的があります。
それは、ESP32-C3をWi-Fiに接続して、USBケーブルを使わずにプログラムを書き換える「OTA(Over The Air)」に繋げるするためです。

そのため今回は、OTAへ進む前の準備として、

「USBでプログラムを書き込む」

「SSD1306に文字を表示する」

「ESP32-C3が正常に動作していることを確認する」

ところまでをやってみたいと思います。

スポンサーリンク

今回使うもの

  • ESP32-C3-WROOM-02-N4 秋月電子で440円 2026/9月
  • ESP32用基板 スイッチサイエンスで220円
  • SSD1306 OLEDディスプレイ  秋月電子で580円です 今発売されているのは SSD1315で同じです
  • USBケーブル
  • Arduino IDE

今回は「OTAの前準備」

今回いきなりOTAをやるのではなく、まずUSBから確実にプログラムを書き込める環境を作る。
そしてSSD1306に文字が表示できれば、
ESP32-C3の書き込み環境
I2C通信
OLED表示
の3つを同時に確認できます。

Arduino IDE 設定

ボードの設定が済んでいない方私の以前の記事を参考にして設定してください

ESP32-C3の内蔵USBを使って書き込む

ESP32-C3にはUSB機能があるので、対応する基板ではUSBケーブルを使って直接プログラムを書き込むことができます。

今回の構成では、
PC
↓ USB
ESP32-C3
↓ I2C
SSD1306 OLED
という構成になります。

setup()の最初にdelay(2000)を入れておく

void setup() {
 delay(2000);

  // ここから初期化
}

これは以前にもわたしのブログで書いていますので確認してください、もし間違って無限ループなどのプログラムなどを書き込んでしまった場合にusbが見えなくななるための対処法です。

SSD1306の配線

今回のプログラムでは、

#define OLED_SDA 4
#define OLED_SCL 5

となっていますので、

SSD1306ESP32-C3
VCC3.3V
GNDGND
SDAGPIO4
SCLGPIO5
LEDGPIO6

という構成になります。

接続図

ESP32c3 SSD1306  USB  接続図

回路確認チェック

正しく接続されていれば、最初はCOMポートが消えたり表示されたりを繰り返します。そのコンポートを指定して書き込めば書き込めるはずです。
そして、正しく動作するかをlチカで確認します。

#define LED_PIN 6   // 使用しているボードのLEDに合わせて変更
void setup() {
 pinMode(LED_PIN, OUTPUT);
}
void loop() {
 digitalWrite(LED_PIN, HIGH);
 delay(500);
 digitalWrite(LED_PIN, LOW);
 delay(500);
}

こちらでledが点滅すれば正しく動作していることになります。

SSD1306を表示するプログラム

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

こちらのライブラリーを使いますのでまだインストールしていない方は事前にインストールして下さい。

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// I2Cピン
#define OLED_SDA 4
#define OLED_SCL 5

// SSD1306のI2Cアドレス
#define OLED_ADDR 0x3C

// リセットピンなし
Adafruit_SSD1306 display(SCREEN_WIDTH,SCREEN_HEIGHT,&Wire,-1);

void setup() {

  // 書き込み・リセット時の安全対策
 delay(2000);

  // I2C開始
  Wire.begin(OLED_SDA, OLED_SCL);

  // SSD1306初期化
 if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
   while (1) {
     delay(1000);
    }
  }

  // 画面クリア
  display.clearDisplay();

  // 文字設定
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);

  display.setCursor(0,0);
  display.println("ESP32-C3");

  display.setCursor(0,16);
  display.println("SSD1306 OLED");

  display.setCursor(0,32);
  display.println("Hello World!");

  display.setCursor(0,48);
  display.println("USB OK");

  // OLEDへ表示
  display.display();
}

void loop() {
 static int count=0;
  display.fillRect(44,48,20,8, SSD1306_BLACK);  // 黒塗りで数値を消去
  display.setCursor(44,48);
  display.print(count);
  display.display();  // 画面更新
  count++;
 if (count>99) count=0;

 delay(1000);  // 1秒ごとに更新
}

ESP32ではI2Cピンを自由に設定できるので、今回のようにGPIO4をSDA、GPIO5をSCLとして使いました自由に設定してください。

Arduino IDEから書き込む

コンパイル

書き込み

SSD1306に表示

そしてOLEDに、

ESP32-C3
SSD1306 OLED
Hello World!
USB OK 12  // こちらの数字は1から99カウント

などが表示されたら成功です。
OLEDに「USB OK」と表示されました。これで、ESP32-C3へのUSB書き込みとI2CによるSSD1306の表示を確認することができました。
実際の画像です

実際の表示画像

ここまでできればOTAへの準備完了

ここまでで、ESP32-C3-WROOM-02-N4へのUSB書き込みと、SSD1306 OLEDへの表示が確認できました。

今回の目的は、単にOLEDに文字を表示することだけではありません。

まずUSBからプログラムを書き込んでESP32-C3が正常に動作することを確認し、その上で次のステップとしてOTAによるプログラム書き換えに進みます。

OTAが使えるようになると、USBケーブルを接続し直すことなく、Wi-Fi経由でESP32-C3のプログラムを更新できるようになります。

次回は今回作ったプログラムをベースに、ESP32-C3をWi-Fiへ接続し、OTAでプログラムを書き換えるところまで進めてみたいと思います。

まとめ

今回は、秋月電子で購入したESP32-C3-WROOM-02-N4とスイッチサイエンスのESP32用基板を使って、SSD1306 OLEDディスプレイに文字を表示してみました。

Arduino IDEでESP32-C3用の環境を準備し、内蔵USBを利用してプログラムを書き込みます。

SSD1306とはI2Cで接続し、今回はGPIO8をSDA、GPIO9をSCLとして使用しました。

また、プログラムのsetup()の最初にdelay(2000)を入れておくことで、書き込み後の動作確認などをしやすくしています。

OLEDに文字が表示できれば、ESP32-C3へのプログラム書き込み、I2C通信、SSD1306の動作確認まで一度に行うことができます。

ここまで確認できれば、次のステップへ進む準備は完了です。

次回はいよいよWi-Fiを利用して、USBケーブルを使わずにプログラムを書き換える「OTA」に挑戦してみたいと思います。

タイトルとURLをコピーしました