【小学生の自由研究】初心者キットで作る「超音波で測る身長メーター」|壁に貼って自分の背を測る装置

超音波で測ろう! 身長メーター自由研究

超音波センサーで自分の身長を測る装置を作ろう

夏休みの自由研究で、ちょっと変わったテーマがいいんだ。家で測れる物だと面白そうだなぁ。

じゃあ「超音波で測る身長メーター」はどう? 天井に貼って、下に立つだけで頭までの距離を測って身長を計算してくれるんだ。コウモリと同じ仕組みで動く、ちょっとカッコいい自由研究になるよ。

今回は、自由研究で電子工作をやりたい小学生のお子さんに向けて、初心者キットだけで作れる「超音波で測る身長メーター」を紹介します。

波センサーHC-SR04を天井に貼り付けて、その下に立ってもらうことで、頭までの距離を測って身長を計算する装置です。家族みんなの身長を測ってデータを集めれば、研究らしいレポートが書けます。

この記事で作るもの
  1. 超音波センサーで頭までの距離を測る
  2. 「天井までの高さ – 頭までの距離」で身長を計算
  3. 結果をシリアルモニタにcmで表示
  4. LEDで「測定中」を知らせる

使う部品

部品役割個数
Arduino UNO R3装置の頭脳1
HC-SR04超音波センサー距離を測る1
LED測定中の表示1
抵抗330ΩLEDを保護1
ブレッドボード配線をする台1
ジャンパーワイヤーつなぐ線7〜8本

配線図

        a b c d e
       +─────────+
[+]rail| . . . . . | ← 5V (Arduino から)
[-]rail| . . . . . | ← GND (Arduino から)
       +─────────+
row 5  | X . . . . | ← HC-SR04 VCC ([+]rail)
row 7  | X . . . . | ← HC-SR04 Trig (D7)
row 9  | X . . . . | ← HC-SR04 Echo (D6)
row 11 | X . . . . | ← HC-SR04 GND ([-]rail)
row 15 | X . . . . | ← 330Ω 上足 (D13 から)
row 16 | X . . . . | ← 330Ω 下足+LED アノード
row 18 | X . . . . | ← LED カソード ([-]rail)
       +─────────+

部品同士のつながり

Arduino       HC-SR04
  5V   ────→   VCC
  D7   ────→   Trig (送信トリガ)
  D6   ←────   Echo (受信タイミング)
  GND  ←────   GND

超音波センサーは「ピッ」と音を送って、跳ね返ってくる時間で距離を計算する仕組みです。コウモリと同じ原理ですね。

プログラム

#define TRIG 7
#define ECHO 6
#define LED 13
#define MOUNT_HEIGHT_CM 250  // 床からセンサー面までの高さ (測って書き換える)

void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(LED, OUTPUT);
  Serial.println("身長メーター スタート!");
}

void loop() {
  digitalWrite(LED, HIGH);

  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  long duration = pulseIn(ECHO, HIGH, 30000);
  if (duration == 0) {
    Serial.println("測定失敗");
    digitalWrite(LED, LOW);
    delay(1000);
    return;
  }

  float distanceCm = duration * 0.034 / 2;
  float heightCm = MOUNT_HEIGHT_CM - distanceCm;

  Serial.print("頭までの距離: ");
  Serial.print(distanceCm);
  Serial.print("cm  身長: ");
  Serial.print(heightCm);
  Serial.println("cm");

  digitalWrite(LED, LOW);
  delay(1000);
}

プログラムの動き

flowchart TD A[起動] --> B["LED点灯
測定中"] B --> C[超音波送信] C --> D[反射時間を測る] D --> E[距離を計算] E --> F["身長を計算
天井-距離"] F --> G[シリアル表示] G --> H[LED消灯] H --> I[1秒待つ] I --> B

使い方

測定の手順
  1. センサーを付けた高さ (床からセンサー面まで) を測って、プログラムのMOUNT_HEIGHT_CMに書き込む
  2. HC-SR04をドア枠の上や天井に下向きに固定 (取り付け面の高さが基準になる)
  3. センサーの真下にまっすぐ立つ
  4. シリアルモニタの数字が安定したら身長が読める
頭が髪でモジャモジャだと正確に測れないの?

いいところに気づいたね! 髪や姿勢で超音波の反射位置がずれやすいから、頭の上に本を1冊載せて測ると数字が安定するよ。気温で音速も少し変わるので、メジャーと比べて補正するのもいい研究になるんだ。

自由研究の組み立て方

家族みんなの身長を測って、本物のメジャーと比べる実験をすると、研究らしいレポートになります。

研究の流れ
  1. 家族5人の身長をメジャーで測る (正確な値)
  2. 同じ5人を超音波メーターで測る
  3. 差を表にして、どれくらいズレるかを調べる
  4. 原因 (髪、姿勢、センサーの位置) を考察
  5. 正確に測るための工夫を提案

改造のアイデア

発展アイデア
  1. LCDに身長を直接表示する (シリアルモニタ不要に)
  2. パッシブブザーで身長別に音を変える (高い人は高い音)
  3. 3回測って平均を取る (精度向上)
  4. サーボモータで「目盛り針」を動かす (アナログ風)

まとめ

今回は、自由研究にぴったりな「超音波で測る身長メーター」を紹介しました。Arduino初心者キットだけで作れて、家族のデータを集めて分析できる、自由研究として理想的な題材です。

大切なのは、本物のメジャーと比べて、どれくらい差が出るかを表にすることです。誤差の原因を一緒に考察するところまでやると、レポートが充実します。

他にも初心者キットだけで作れる作例を別の記事で紹介しているので、興味があれば見てみてね。