注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

  • 専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン23: 超音波センサーモジュール (HC-SR04)

このレッスンでは、ESP32開発ボードを使用して超音波センサー(HC-SR04)で距離を測定する方法を学びます。センサーのセットアップ、データの読み取り、および距離をセンチメートル単位で計算する方法を説明します。このプロジェクトは、マイクロコントローラーやセンサーを扱う初心者に最適で、データ取得とシリアル通信の実践的な経験を提供します。ESP32のプログラミングスキルを向上させ、超音波センサー技術を理解するための基礎を築くことができます。

必要な部品

このプロジェクトには以下の部品が必要です。

すべての部品が揃ったキットを購入すると便利です。リンクはこちら:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから個別に購入することもできます。

Component Introduction

Purchase Link

ESP32 & Development Board

購入

超音波センサーモジュール (HC-SR04)

購入

ブレッドボード

購入

配線

../_images/Lesson_23_Ultrasonic_esp32_bb.png

コード

コード解析

  1. ピン宣言:

    まず、超音波センサー用のピンを定義します。 echoPintrigPin は整数として宣言され、ESP32開発ボードでの物理接続に対応する値が設定されます。

    const int echoPin = 26;
    const int trigPin = 25;
    
  2. setup() 関数:

    setup() 関数はシリアル通信を初期化し、ピンモードを設定し、超音波センサーの準備ができていることを示すメッセージを表示します。

    void setup() {
      Serial.begin(9600);
      pinMode(echoPin, INPUT);
      pinMode(trigPin, OUTPUT);
      Serial.println("Ultrasonic sensor:");
    }
    
  3. loop() 関数:

    loop() 関数はセンサーから距離を読み取り、その値をシリアルモニターに表示し、400ミリ秒待機してから繰り返します。

    void loop() {
      float distance = readDistance();
      Serial.print(distance);
      Serial.println(" cm");
      delay(400);
    }
    
  4. readDistance() 関数:

    readDistance() 関数は超音波センサーをトリガーし、信号が反射して戻るまでの時間に基づいて距離を計算します。

    詳細については、超音波センサーモジュールの動作 原理 を参照してください。

    float readDistance() {
      digitalWrite(trigPin, LOW);   // Set trig pin to low to ensure a clean pulse
      delayMicroseconds(2);         // Delay for 2 microseconds
      digitalWrite(trigPin, HIGH);  // Send a 10 microsecond pulse by setting trig pin to high
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);  // Set trig pin back to low
      float distance = pulseIn(echoPin, HIGH) / 58.00;  // Formula: (340m/s * 1us) / 2
      return distance;
    }