工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー

部品と材料

部品名数量備考
Arduino UNO1
超音波センサー HC-SR04(汎用)1実際は3個使用(左・中・右)
ミニバッテリーディスプレイ(TM1651チップベース)2本来はバッテリー残量表示用だが、ここでは距離表示に流用

プロジェクト概要

HC-SR04超音波センサー3個(左・中・右)とミニバッテリーディスプレイ2個(左・右)で駐車支援レーダーを自作します。最大距離(デフォルト20cm)を超えると「安全=満タン表示」、それ未満では距離に比例してレベル表示が下がります。中央センサーは両側ディスプレイに影響し、左右センサーはそれぞれ自側のみに影響します。複数障害物がある場合は「最も近いもの」を優先表示します。

Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー

使用パーツ

Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー

ジャンパーワイヤーとブレッドボードを追加で用意してください。バッテリーディスプレイはTM1651チップ搭載品です。

動作ロジック

具体例

右側と中央に障害物があり、右がより近い場合 → 右ディスプレイは右距離に応じた低レベル、左ディスプレイは中央距離に応じたレベル。右側のみ障害物 → 右ディスプレイのみ低レベル。すべて安全距離 → 両方レベル7。

Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー
Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー
Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー
Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー

改善案

コード

Parking_sensor_v1.ino (Arduino)
/* HC-SR04 x3、TM1651バッテリーディスプレイ x2 で動作する駐車センサー
 * 最大距離以上なら安全表示、未満なら距離に比例してレベル表示
 * 詳細は www.SurtrTech.com 参照
 */
#include <TM1651.h>

#define CLK 3      // 右ディスプレイ CLK
#define DIO 2      // 右ディスプレイ DIO
#define CLK2 5     // 左ディスプレイ CLK
#define DIO2 4     // 左ディスプレイ DIO

#define trigPin 6  // 中央センサー
#define echoPin 7
#define trigPinR 8 // 右センサー
#define echoPinR 9
#define trigPinL 10 // 左センサー
#define echoPinL 11

#define Maxdistance 20 // 最大距離 20cm

long duration;
int distance;

TM1651 DisplayR(CLK, DIO);
TM1651 DisplayL(CLK2, DIO2);

void setup() {
  pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
  pinMode(trigPinR, OUTPUT); pinMode(echoPinR, INPUT);
  pinMode(trigPinL, OUTPUT); pinMode(echoPinL, INPUT);
  DisplayR.init(); DisplayR.set(BRIGHTEST);
  DisplayL.init(); DisplayL.set(BRIGHTEST);
}

void loop() {
  int distanceM = CDistance(trigPin, echoPin);
  int distanceR = CDistance(trigPinR, echoPinR);
  int distanceL = CDistance(trigPinL, echoPinL);

  int R = min(distanceM, distanceR);
  int L = min(distanceM, distanceL);

  if (R > 0 && R < Maxdistance) {
    byte LevelR = map(R, 0, Maxdistance, 0, 7);
    DisplayR.displayLevel(LevelR);
  }
  if (R >= Maxdistance) DisplayR.displayLevel(7);

  if (L > 0 && L < Maxdistance) {
    byte LevelL = map(L, 0, Maxdistance, 0, 7);
    DisplayL.displayLevel(LevelL);
  }
  if (L >= Maxdistance) DisplayL.displayLevel(7);

  delay(50);
}

int CDistance(int a, int b) {
  digitalWrite(a, LOW); delayMicroseconds(2);
  digitalWrite(a, HIGH); delayMicroseconds(10);
  digitalWrite(a, LOW);
  duration = pulseIn(b, HIGH);
  distance = duration * (0.034 / 2);
  return distance;
}
TM1651バッテリーディスプレイライブラリ

GitHub - fuel_display を使用すると制御が容易です。

回路図

Arduino UNOとHC-SR04で作るDIY駐車レーダーセンサー

製造プロセス

  1. Raspberry PiでPIRモーションセンサーとLEDを制御
  2. Raspberry Piで低コスト土壌水分センサーを構築 - スマート灌漑に活用
  3. Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
  4. Acconeer A111パルスレーダーをRaspberry Piと統合:実践ガイド
  5. エモーションセンサー&EEG:リアルタイム感情検知のための低コストハードウェア
  6. Firebase経由で2台のArduino間を温湿度データで連携するIoTチュートリアル
  7. 酸素(O2)センサーを理解する:役割、配置、故障の兆候
  8. Mouser Electronics、Sensors Expo 2019で先進センサ技術を展示
  9. レーダーセンサーの仕組みと現代的応用
  10. 駐車センサーの仕組みと主要アプリケーション
  11. Ambarella、Oculiiを3.075億ドルで買収〜レーダー認識とセンサー融合で自動車AIを拡張