注釈
こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と一緒にさらに深く学びましょう。
参加する理由
専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートを受けて解決できます。
学び・共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
限定プレビュー: 新製品の発表や先行公開情報をいち早く手に入れましょう。
特別割引: 新製品に対する特別割引を楽しめます。
祝祭キャンペーンやプレゼント: プレゼントキャンペーンやシーズンプロモーションに参加できます。
👉 一緒に探求し、創造的な活動をしてみませんか?[こちら]をクリックして、今すぐ参加しましょう!
7.10 後方支援システムの構築
このプロジェクトでは、Raspberry Pi Pico 2、超音波センサー、LED、ブザーを使用して 後方支援システム を作成します。このシステムは、実際の駐車センサーがどのように動作するかを模倣し、障害物との距離を検出して、接近に応じて音と視覚的なフィードバックを提供します。このセットアップをラジコンカーに取り付けて、ガレージにバックする体験を模倣することができます。
必要なもの
このプロジェクトでは、以下の部品が必要です。
キットを購入するのが便利です。こちらのリンクからご覧いただけます:
名前 |
キット内の部品 |
リンク |
|---|---|---|
Newton Lab Kit |
450以上 |
以下のリンクから個別に購入することもできます。
番号 |
部品 |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
複数 |
||
5 |
1(S8050) |
||
6 |
2(1KΩ, 220Ω) |
||
7 |
Active ブザー |
1 |
|
8 |
1 |
||
9 |
1 |
部品の理解
超音波センサー (HC-SR04): 超音波を発信し、エコーが戻ってくるまでの時間を測定して、障害物までの距離を計測します。
ブザー: 音でフィードバックを提供し、物体が近づくほど頻繁に鳴ります。
LED: 視覚的なフィードバックを提供し、物体が近づくほど点滅が速くなります。
回路図

配線図

コード作成
次のMicroPythonスクリプトを作成します:
超音波センサーで距離を計測する。
距離に応じてブザーの音の頻度やLEDの点滅速度を調整する。
物体が近づいたり離れたりするごとに継続的なフィードバックを提供する。
注釈
7.10_reversing_aid.pyをnewton-lab-kit/micropythonから開くか、コードをThonnyにコピーして、「実行」ボタンをクリックするか、F5キーを押して実行します。正しいインタプリタが選択されていることを確認してください:MicroPython(Raspberry Pi Pico)。COMxx。
import machine
import utime
# ピンの設定
trigger = machine.Pin(17, machine.Pin.OUT)
echo = machine.Pin(16, machine.Pin.IN)
buzzer = machine.Pin(15, machine.Pin.OUT)
led = machine.Pin(14, machine.Pin.OUT)
# 距離を計測する関数
def measure_distance():
# トリガーを低に設定
trigger.low()
utime.sleep_us(2)
# トリガーに10usのパルスを送信
trigger.high()
utime.sleep_us(10)
trigger.low()
# エコーパルスの長さを測定
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = utime.ticks_diff(signalon, signaloff)
distance = (timepassed * 0.0343) / 2 # cmに変換
return distance
# ブザーとLEDを制御する関数
def alert(interval):
buzzer.high()
led.high()
utime.sleep(0.1)
buzzer.low()
led.low()
utime.sleep(interval)
# メインループ
try:
while True:
dist = measure_distance()
print("Distance: {:.2f} cm".format(dist))
if dist < 0:
print("Out of range")
utime.sleep(1)
elif dist <= 10:
alert(0.2) # 非常に近い、迅速にアラート
elif dist <= 20:
alert(0.5) # 近い、適度にアラート
elif dist <= 50:
alert(1) # あまり近くない、ゆっくりアラート
else:
alert(2) # 遠い、まれにアラート
except KeyboardInterrupt:
print("Measurement stopped by User")
コードが実行されたら、超音波センサーから異なる距離で物体を配置して、ブザーの音の頻度とLEDの点滅速度の変化を観察しましょう。 コンソールには計測された距離が表示されます。
コードの理解
距離の計測:
measure_distance()関数は、TRIGピンに10マイクロ秒のパルスを送信します。次に、ECHOピンがハイになってからローになるまでの時間を測定します。
超音波パルスが戻るまでの時間に基づいて、距離を計算します。
def measure_distance(): # トリガーを低に設定 trigger.low() utime.sleep_us(2) # トリガーに10usのパルスを送信 trigger.high() utime.sleep_us(10) trigger.low() # エコーパルスの長さを測定 while echo.value() == 0: signaloff = utime.ticks_us() while echo.value() == 1: signalon = utime.ticks_us() timepassed = utime.ticks_diff(signalon, signaloff) distance = (timepassed * 0.0343) / 2 # cmに変換 return distance
アラート関数:
alert(interval)関数は、ブザーとLEDを0.1秒間オンにして、その後オフにします。intervalパラメータは、距離に応じてアラートの間隔を調整します。
def measure_distance(): # トリガーを低に設定 trigger.low() utime.sleep_us(2) # トリガーに10usのパルスを送信 trigger.high() utime.sleep_us(10) trigger.low() # エコーパルスの長さを測定 while echo.value() == 0: signaloff = utime.ticks_us() while echo.value() == 1: signalon = utime.ticks_us() timepassed = utime.ticks_diff(signalon, signaloff) distance = (timepassed * 0.0343) / 2 # cmに変換 return distance
メインループ:
距離を継続的に計測します。
あらかじめ設定された距離の閾値に応じて、アラートの頻度を調整します。
try: while True: dist = measure_distance() print("Distance: {:.2f} cm".format(dist)) if dist < 0: print("Out of range") utime.sleep(1) elif dist <= 10: alert(0.2) # 非常に近い、迅速にアラート elif dist <= 20: alert(0.5) # 近い、適度にアラート elif dist <= 50: alert(1) # あまり近くない、ゆっくりアラート else: alert(2) # 遠い、まれにアラート except KeyboardInterrupt: print("Measurement stopped by User")
安全対策
電圧レベル:
超音波センサーのECHOピン電圧が5Vの場合は注意してください。
PicoのGPIOピンを保護するために、電圧分割器やレベルシフターを使用してください。
電源:
すべての部品の電流要件を満たせる電源を使用してください。
さらに実験する
視覚表示:
LCDやOLEDディスプレイを追加して、距離を視覚的に表示できます。
複数のセンサー:
複数の超音波センサーを使用して、より多くの方向をカバーできます。
高度なアラート:
ブザーに異なるトーンやパターンを実装して、距離ごとに異なるアラートを出すことができます。
結論
Raspberry Pi Pico 2を使用して、後方支援システムを構築しました!このプロジェクトは、センサーを使ってリアルタイムのフィードバックを提供する方法を示しており、ロボティクスやオートメーションの基本的な概念を学ぶことができます。