ESP32 チュートリアル 53/55 - LCD インターネットクロックの作成 | SunFounder の ESP32 IoT 学習キット

ESP32 チュートリアル 53/55 - LCD インターネットクロックの作成 | SunFounder の ESP32 IoT 学習キット

このチュートリアルでは、SunFounderのESP32マイクロコントローラを使用して、インターネット接続型のLCD時計を作成します。この時計はインターネット経由で現在の時間と自動的に同期し、12時間形式または24時間形式で時間を表示し、曜日、日付、月も表示します。ネットワーク時間プロトコル(NTP)を使用することで、時計は手動調整なしで正確さを維持します。

esp32-53-インターネット時計-メイン

このプロジェクトでは、ESP32の内蔵Wi-Fi機能を活用してNTPサーバーから現在の時刻を取得します。ユーザーの好みに応じてフォーマットできる液晶ディスプレイ(LCD)を使用して時刻を表示します。手順についてのさらなる説明は、(動画の00:30で)ご覧ください。

ハードウェアの解説

このプロジェクトの主なコンポーネントには、ESP32マイクロコントローラー、20x4 LCDディスプレイ、および電源が含まれます。ESP32は、内蔵Wi-FiとBluetoothを備えた強力なマイクロコントローラーであり、IoTプロジェクトに適しています。LCDは時刻と日付を表示するために使用され、異なる表示サイズに設定できます。

LCDはI2Cプロトコルを介して動作し、2本のワイヤ(SDAとSCL)で通信します。これにより配線が簡素化され、ESP32に必要なピンの数が減ります。NTPサーバーへの接続はESP32のWi-Fi機能を使用して行われ、リアルタイムでの更新が可能です。

  • 正しい電源電圧(5 V)を確保してください。
  • 電源ピンの近くにデカップリングコンデンサを使用して、安定性を確保してください。
  • I2C接続にはバスの競合を避けるために注意してください。
  • LCDのI2Cアドレスを確認してください(0x27または0x3F)。
  • Wi-Fiの認証情報を確認して、正確に接続してください。
  • コードで夏時間調整を扱います。
  • 自分の地理的な位置に合った正しいNTPサーバーを利用してください。
  • 表示を更新する前に、必ずLCDをクリアしてください。

配線指示

ESP32-11_LCD-wiring

ESP32をLCDに接続するには、まず電源ピンを接続します。LCDのVCCをESP32の5Vピンに接続し、LCDのGNDピンをESP32のGNDピンに接続します。I2C通信のために、LCDのSDAピンをESP32のGPIO 21に接続し、SCLピンをGPIO 22に接続します。接続が確実であることを確認し、通信の問題を避けてください。

配線を設定する際は、簡単に接続できるようにオス-メスのジャンパーワイヤーを使用してください。LCDに異なるI2Cアドレスまたはピン構成がある場合は、コードを適宜調整してください。必要に応じて、代替の配線オプションについては(動画の05:30で)動画を参照してください。

コード例とウォークスルー

コードはLCDを初期化し、NTPサーバーから時間データを取得するためのWi-Fi接続を設定します。重要な識別子として、ssidpasswordWi-Fiネットワークに接続するために使用されますが、ntpServer1ntpServer2使用するNTPサーバーを指定してください。

const char* ssid = "dars";
const char* password = "llllllllllllll";
const char* ntpServer1 = "pool.ntp.org";
const char* ntpServer2 = "time.nist.gov";

このスニペットはネットワーク認証情報とサーバーアドレスを示しています。Wi-Fi SSIDとパスワードを正確に入力してください。誤りがあると、ESP32がインターネットに接続できなくなります。

テキストがありません。printLocalTime()関数は、現在の時間を表示用にフォーマットします。構造tm時間情報を保存するために使用され、strftime時間を読みやすい文字列にフォーマットするのを助けます。

void printLocalTime() {
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)) {
    Serial.println("No time available (yet)");
    return;
  }
  char timeHour[5];
  strftime(timeHour, 5, "%H", &timeinfo);

このコードは、ローカル時間が利用可能かどうかをチェックし、時間を取得します。フォーマットされた時間は、その後LCDに現在の時間を表示するために使用されます。時間がまだ利用できない場合は、シリアルモニターにメッセージを印刷します。

最後に、setup()この関数はLCDを初期化し、Wi-Fiに接続します。また、NTPサーバー設定を構成し、時刻同期のためのコールバックを設定します。

void setup() {
  Serial.begin(115200);
  lcd.init(); // initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);

この抜粋は、デバッグのためにシリアルモニターを初期化し、LCDを設定し、指定されたWi-Fiネットワークへの接続を試みます。接続状態はシリアルモニターに印刷され、接続を確認できるようになります。

デモンストレーション / 期待すること

設定が成功すると、LCDに現在の時刻、曜日、日付が表示されます。時刻は5秒ごとに更新されることが期待できます。loop()関数。NTPサーバーへの接続が失敗した場合、時間がまだ利用できないことを示すメッセージがシリアルモニターに表示されます(ビデオの12:00にて)。

一般的な落とし穴には、配線の誤り、間違ったI2Cアドレス、および不正確なWi-Fi認証情報が含まれます。すべての接続が確実であり、NTPサーバーがネットワークから到達可能であることを確認してください。

ビデオのタイムスタンプ

  • 00:00 開始
  • 2:10 はじめに
  • 5:15 配線の説明
  • 7:32 Arduinoコードの説明
  • 18:43 Arduino IDEでESP32ボードとCOMポートを選択しています
  • 20:27 インターネット時計デモ

画像

ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
esp32-53-internet-clock-main
esp32-53-internet-clock-main
854-ESP32 Tutorial 53/55- Internet Clock
言語: C++
コピーしました!

必要かもしれないもの

リソースと参考文献

ファイル📁

必要なファイル (.h)