MENU
  • ホーム
  • 生成AI
  • Drone
  • Minecraft
  • RaspberryPi
  • 随想
面白いこと発掘だ
northarantの研究室
  • ホーム
  • 生成AI
  • Drone
  • Minecraft
  • RaspberryPi
  • 随想
northarantの研究室
  • ホーム
  • 生成AI
  • Drone
  • Minecraft
  • RaspberryPi
  • 随想
  1. ホーム
  2. Python
  3. HC-SR04を用いた距離の測定

HC-SR04を用いた距離の測定

2023 2/17
Python RaspberryPi センサー
2023年2月17日

さて、次は超音波で距離を測定するセンサーHC-SR04を使って、距離を測定してみたいと思います。

この機能の実装には、私は GPIO Zero というプログラムを使いました。

ラズパイ工作の楽しさは、こういった先人たちの知恵と遺産を活用できることにあります。GPIO Zeroには、非常にたくさんの基本的なライブラリが入っているので、ラズパイを使う場合は、まずインストールしておきたいライブラリの1つです。

インストールの方法は、ここに書いてありますが、ここでも紹介しますね。

sudo apt update
sudo apt install python3-gpiozero

距離センサーの仕組みは、片方のスピーカーから超音波を出して、それが何かにぶつかって跳ね返ってきた音波をもう片方のスピーカーから検知し、超音波の往復にかかった時間から距離を割り出しています。従って、気温や気圧などの環境に影響されるため、正確さには欠けますが、何よりセンサーが安いので、まずこれを使っちゃいますよね。

さて、ライブラリのベーシックレシピの中にサンプルプログラムと、センサーの物理的な接続方法が書いてあるので、それを参考に接続します。

HC-SR04は5vのvccが必要です。

Trigerは、ラズパイからそのまま信号を送って大丈夫です。

Echoは、5vの信号です。これをそのままラズパイに入力するとラズパイを壊す危険があるので、ラズパイのロジック電圧である3.3vに下げなければいけないのです。5v出力を3.3vと1.7vに分けて、3.3v分をラズパイのGPIOへ、残りの1.6vの方はGNDへ流してやります。具体的には、抵抗値が1:2になる二つの抵抗を用意して、参考記事のように接続します。

sozorablog
【初心者向け】ラズベリーパイで超音波センサーHC-SR04を動かしてみよう | sozorablog Raspberry Piと超音波距離センサーHC-SR04を使って距離を計測する方法について解説します。 以下がHC-SR04です。 秋月電子通商では300円で購入できます。 超音波が物体に当...

私は、手元にあった1kΩと2kΩを使い、次の写真のように接続しました。

ミニブレッドボードに挿した2つの抵抗

ミニブレッドボードはかなりごちゃごちゃしていますが、次のように使っています。

  1. GND
  2. Vcc用5v(レギュレーターから受けて、ラズパイの5vピンへ)
  3. 7.2v(バッテリー直で、モータードライバーへ渡している)
  4. HC-SR04 Echoから
  5. HC-SR04 Echoを分圧してラズパイへ
  6. GND(分圧の残り受け用。1. のGNDからジャンパーで。)
  7. SDA(今後他にもIC2通信をする予定なので、ブレッドボード経由でPCA9685へ)
  8. SCL(同上)

それでは、サンプルプログラムをまずそのまま走らせてみます。(トリガーがGPIO23で、エコーがGPIO24です。)

from gpiozero import DistanceSensor
from time import sleep

sensor = DistanceSensor(23, 24)

while True:
    print('Distance to nearest object is', sensor.distance, 'm')
    sleep(1)
距離センサーのテスト

少数以下が細かすぎw

ところで、form A import B っていう構文は、AっていうライブラリのBっていうクラスをインポートするっていう意味なんです。

ただ単に import A とすれば、Aのライブラリを全てimportするので楽なのですが、その場合Aライブラリの全てのクラスをimportするので、クラスのインスタンスを作る際に、そのクラスがどのライブラリにあるのかを指定しなければいけないのです。

importを単純に書く場合、上記サンプルプログラムはこうなります。

import gpiozero
import time

sensor = gpiozero.DistanceSensor(23, 24) #ここで、gpiozero. をつけてライブラリを指定。

while True:
    print('Distance to nearest object is', sensor.distance, 'm')
    time.sleep(1) #ここでも、time. をつけてライブラリを指定。

ただ、こうするとメモリーを余計に使うので、from A import B の方がシンプルなんでしょうね。

では、次はこれを使って、自動ブレーキを実装したいと思います。

Python RaspberryPi センサー
gpiozero HC-SR04 ミニブレッドボード
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 移動するだけのTANK
  • 自動ブレーキの搭載

この記事を書いた人

northarantのアバター northarant

1968年生まれ。職業は高校数学の教員。自分では変わり者だと思っています。常により良い未来を目指して、時に楽しく、時に苦しみながら、人生を歩いています。

関連記事

  • INA219を使った電圧と電流の監視
    2023年3月4日
  • PWM制御を用いたLEDの輝度調整
    2023年2月27日
  • Picamera2を使った写真の撮影
    2023年2月26日
  • OSのクリーンインストール
    2023年2月19日
  • 自動ブレーキの搭載
    2023年2月18日
  • 移動するだけのTANK
    2023年2月12日
  • モータードラーバーL9110S
    2023年2月9日
  • PCA9685を使ったLEDの点灯
    2023年2月8日

コメント

コメントする コメントをキャンセル

カテゴリー

  • Drone
  • Minecraft
  • music
  • Python
  • RaspberryPi
  • Twenty Twenty-Tree
  • これすごい
  • 生成AI
  • 随想

アーカイブ

  • 2025年6月
  • 2025年5月
  • 2024年12月
  • 2024年11月
  • 2024年9月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年3月
  • 2023年2月
  • 2023年1月

© northarantの研究室.

目次