techemo(てけも)のブログ

30代リーマンの副業ブログ

【ゼロから始めるプログラミング】マイコンでミニディスプレイに時間を表示~手順は?躓いたところは?~

【ゼロから始めるプログラミング】ということで

2024年の年明けにPythonにチャレンジしてみて少しずつ抵抗がなくなってきました

今回はESP32というマイコンとミニディスプレイを買ってみたのでC言語?に挑戦してみます

なんとなく思いついたことをやってみているだけなので、いつまで続くかわからないですが備忘録がてら記していこうと思います

書き始めたら長編になってしまったのですがお付き合いください

マイコンでディスプレイに時間を表示できるまで

Pythonに触ってみて、なんとなくAIに聞きながらならエラーも解決でき、動くプログラムを書けるので調子に乗って

ESP32というマイコンとミニディスプレイを買ってみました

techemo.hatenablog.com

 

触るまで知りませんでしたがESP32というマイコンは一般的にはPythonではなくC言語で動かすようです

いろんな方が遊び方を解説してくれているのでなんとか遊べそうです

qiita.com

とはいえゼロからスタートの初心者なので色々躓きました

躓いた所をメモしてるので初学者には役立つと信じています

 

今回やってみたことは

  1. 環境を整える
  2. ディスプレイを接続する
  3. WiFi経由で時間を取得しディスプレイに表示させる

 

①環境を整える

まず今回購入したESP32とは

Espressif Systems社が開発した多機能なマイクロコントローラユニット(MCU)で

Wi-FiBluetoothの両方を内蔵し、

IoT(モノのインターネット)デバイスの開発に広く使用されているそうです。

主な特徴:

デュアルコアプロセッサ

Wi-FiBluetooth LE(低消費電力)の内蔵

豊富なGPIOピン

低消費電力設計

利用例:

スマートホームバイス(温度センサー、照明制御など)

ウェアラブルバイス

産業用IoTセンサー

ネットワーク接続された監視カメラ

自動車のテレマティクスシステム

 

まずは上述のサイトを参考に環境を整えていきました

①-1 Arduino IDEのインストール

Arduino IDEで検索し、公式サイトのダウンロードページからPCのOSに合ったものをダウンロードします

①-2 各種設定

まずはじめに英語だったので焦りましたが、ファイル>環境設定 から

言語を日本語に設定し

下部のボードマネージャURLを追加のところに

"https://dl.espressif.com/dl/package_esp32_index.json"

とコピペして、ボード情報を取得できるようにするそうです

①-3 ESP32のパッケージをインストール

ツール>ボード>ボードマネージャ から

ESP32を検索し、インストールします

あとはボードをUSBでPCに繋いで、、

上述のサイトではこれで設定できていそうだったのですが私の場合は追加の設定が必要でした

なぜかというとPCがESP32を認識しておらずデバイスマネージャにはビックリマークが出ていました

調べるとやはり同様の躓きをされている方がいて参考にさせてもらいました

zenn.dev

ビックリマークのついている「CP2102N」を検索するとSILICON LABSという会社でドライバーを配布してくれているので

ダウンロードして解凍フォルダ内の

「CP210xVCPInstaller_x64.exe」を開いてインストールするとビックリマークが消えました

これでようやくESP32を認識してくれたのでAruduinoIDEで

ボード選択窓の▼からボードの選択とポートの選択ができました

 

②ディスプレイを接続する

続いてミニディスプレイにESP32から出力できるように準備します

こちらも先駆者の方がいるので参考に設定していきます

spend-carefree.hatenablog.com

まずはArduino IDEの準備から

ツール>ライブラリを管理 から

ミニディスプレイの「SH1106」で検索しライブラリをインストールします

あとはファイル>スケッチ例>Adafruits SH1106>oled を選択してロード

参考ページの情報からPIN12,14をそのまま使用するとエラーが発生したとあり

SDAをpin27, SCLをpin26とすることで解決したとあるのでそのように修正します

あとは物理的に配線をして

<ピン構成:ディスプレイ側→ESP32>

VDD→3V3

GND→GND

SCK→26PIN

SDA→27PIN

Arduino IDEでコードを検証してから、ボードに書き込むと

ディスプレイが繋がり模様が映し出されました

WiFi経由で時間を取得しディスプレイに表示させる

最後にWiFi経由で5秒毎にリセットして現在時刻を取得するコードを参考にミニディスプレイに表示できるようにアレンジしました

raspberry-pi.nomad-life.net

といっていもコードを書けないのでAIに依頼しました

参考ページのコードを打ち込んで修正してもらいました

当然1回ではうまくいかずエラーの内容を聞きながら修正してもらいました

(ピンの位置は実際に使用するピンに合わせて修正ください)

これで動かしてみると

ディスプレイに時間が表示されました

 

振り返り

今回は、マイコンを使ってミニディスプレイに時間を表示させるという、シンプルなプロジェクトに挑戦してみました

このプロジェクトを通して、プログラミングの基礎的な知識だけでなく、ハードウェアとの連携の楽しさ、そしてエラーを解決していく過程で得られる達成感も味わえました

夏休みの自由研究とかにはもってこいな教材ですね

初心者の私にとっては、躓いた問題を一つずつ解決していくことで、プログラミングスキル(AI活用スキル?)が確実に向上していくように感じました

 

次にやりたいこと

プログラミングの世界は広大で、無限の可能性を感じました

このプロジェクトを足がかりに、さらなる挑戦を楽しんで見たいと思います

植物への水やり自動化など先人たちに習って試していき

いずれはオリジナルな遊び方ができるようになりたいです

 

モチベーションが続く限り学んで躓いた所を残していけたらと思います

これから始める方の参考になれば幸いです

 

ESP32やディスプレイはAmazonでも安価に購入できるので試してみてください

マイコンについてはこのまとめ記事にこれまで試したものを整理しました