ESP32 チュートリアル 43/55 - IoT インターネット気象観測所 | SunFounder の ESP32 IoT 学習キット

ESP32 チュートリアル 43/55 - IoT インターネット気象観測所 | SunFounder の ESP32 IoT 学習キット

このチュートリアルでは、ESP32とSunFounderのカメラ拡張ボードを使用して、インターネット接続の気象ステーションを構築します。このプロジェクトでは、ESP32が気温や湿度を含むリアルタイムの気象データを取得し、それをLCDスクリーンに表示することができます。このアプリケーションは、ESP32の機能を紹介するだけでなく、外部APIからデータを取得して解析する方法も示しています。

チュートリアルを進めるにつれて、コンポーネントを配線し、コードを構成し、すべてがシームレスに機能することを確認します。最終的な結果は、10秒ごとに読み取りを更新し、現在の気象条件を明確に表示する完全に機能する気象ステーションになります(ビデオの00:30で)。

ハードウェアの解説

このプロジェクトで使用される主なコンポーネントには、ESP32マイクロコントローラー、LCDディスプレイ、および必要な配線が含まれます。ESP32は内蔵のWi-FiとBluetoothを備えており、インターネットに接続してデータを取得することができます。LCDディスプレイは、温度と湿度を含む現在の天気情報を表示します。

私たちが使用しているLCDは16x2の文字表示で、2行の各16文字を表示できることを意味します。これで私たちの天気情報の出力には十分です。ESP32はI2Cを介してLCDと通信し、わずか2本のデータラインを使うことで配線が簡素化されます。

データシートの詳細

製造業者エスプレスシフ
部品番号ESP32-WROOM-32
論理/IO電圧3.3 V
供給電圧3.0-3.6 V
出力電流(チャネルごと)最大12 mA
ピーク電流(チャンネルあたり)40 mA
PWM周波数ガイダンス1 kHz
入力ロジック閾値0.3 V(低)、0.7 V(高)
電圧降下 / RDS(on)/ 飽和度0.5 V
熱的限界-40から85 °C
パッケージQFN48
ノート / バリアントさまざまな用途に応じた複数のバリアントが含まれています。

  • ESP32に安定した3.3Vの電源が供給されていることを確認してください。
  • すべてのコンポーネントに共通の基盤を使用して、通信の問題を回避してください。
  • I2Cスキャナーを使用してLCDのI2Cアドレスを確認してください。
  • データ取得中の接続切れを避けるために、Wi-Fi接続の状態を監視してください。
  • データ取得の堅牢性のためにJSONパースエラーを処理する。

配線指示

esp32-43-weather_station-wiring

コンポーネントを配線するには、まずLCDをESP32に接続します。LCDはI2Cインターフェースを使用するため、LCDのSDAピンをESP32のGPIO21に、SCLピンをGPIO22に接続してください。LCDの電源ピンとグラウンドピンをそれぞれESP32の5VピンとGNDピンに接続することを確認してください。

次に、付属のリチウムバッテリーまたはUSB接続を使用してESP32が正しく電源供給されていることを確認してください。バッテリーはポータビリティを提供しますが、USB接続はプログラミングやデバッグに便利です。最後に、すべての接続が確実であることを確認し、機能を妨げる可能性のある緩い配線の問題を避けてください。

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

プログラムのセットアップフェーズでは、シリアル通信を初期化し、提供されたSSIDとパスワードを使用してWi-Fiネットワークに接続します。以下のコードスニペットはWi-Fi接続を処理します。

WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
}
Serial.println("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());

このコードは、データ取得に進む前にESP32が指定されたWi-Fiネットワークに接続することを確保します。接続に失敗した場合、再接続を継続的に試みます。

次に、天気データを取得するためにHTTP GETリクエストを送信する必要があります。これは以下のコードスニペットを使用して実現されます:

String serverPath = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + countryCode + "&units=metric" + "&APPID=" + openWeatherMapApiKey;
jsonBuffer = httpGETRequest(serverPath.c_str());

ここでは、都市、国コード、そして私たちのAPIキーを含むAPIリクエストのURLを構築します。httpGETRequest関数が呼び出されて、天気データを取得します。

最後に、JSONレスポンスを解析し、LCDに関連データを表示します。

lcd.clear(); 
lcd.setCursor(0, 0); 
lcd.print(time);
lcd.print(" ");        
lcd.print(myObject["weather"][0]["main"]);             
lcd.setCursor(0, 1);
lcd.print("T:");    
lcd.print(myObject["main"]["temp"]); 
lcd.print("\xDF");  // "°" char
lcd.print("C ");    
lcd.print("H:");    
lcd.print(myObject["main"]["humidity"]);  
lcd.print("%");

このコードスニペットは、LCDディスプレイを現在の時刻、天候、気温、湿度で更新します。以前の表示をクリアし、各行の適切な位置にカーソルを設定します。

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

成功に配線とプログラミングが完了すると、あなたの天気予報ステーションはWi-Fiに接続し、10秒ごとに天気データを取得し始めます。現在の温度、湿度、気象条件がLCD画面に表示されます。ESP32がWi-Fiに接続できない場合、シリアルモニターにエラーメッセージを表示します。

OpenWeatherMapサービスからブロックされないように、API呼び出し制限に注意してください。データの取得に問題がある場合は、APIキーを確認し、都市と国コードが正しく指定されているかを確認してください(動画の15:45にて)。

ビデオのタイムスタンプ

  • 00:00 開始
  • 2:00 プロジェクトの紹介
  • 5:04 OpenWeather アカウント
  • 6:11 配線
  • 8:05 Arduino コードの説明
  • 14:13 ジェイソン コード内の要素
  • 20:23 Arduino IDEでESP32ボードとCOMポートを選択中
  • 22:05 LCD1602での気象ステーションのデモンストレーション
  • 23:45 LCD2004での気象ステーションのデモンストレーション

画像

esp32-43-weather_station-main
esp32-43-weather_station-main
esp32-43-weather_station-wiring
esp32-43-weather_station-wiring
844-ESP32 Tutorial 43/55- Arduino code for IoT Internet Weather Station
言語: C++
コピーしました!

ファイル📁

ファイルは利用できません。