산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY 주차 레이더 센서: 아두이노 우노 & HC-SR04 초음파 센서 3개

부품 및 소모품

부품명수량
아두이노 우노1
초음파 센서 HC-SR04 (일반)3
미니 배터리 디스플레이 (TM1651 칩 기반)2

프로젝트 소개

HC-SR04 초음파 센서 3개(좌/중/우)와 미니 배터리 디스플레이 2개로 만드는 DIY 주차 레이더 센서입니다. 배터리 디스플레이는 원래 배터리 잔량 표시용이지만, 여기서는 각 센서와 장애물 간 거리를 표시하는 용도로 활용합니다. 최대 거리 임계값을 코드에서 설정해, 그 이상이면 '충분한 공간'으로 간주해 디스플레이 최대 밝기로 표시하고, 미만이면 거리에 비례해 디스플레이 레벨이 변합니다.

부품 사진

점퍼 와이어와 브레드보드 추가 필요. 배터리 디스플레이는 TM1651 칩 기반.

작동 원리

3개 초음파 모듈: 오른쪽(R), 중앙(M), 왼쪽(L). 2개 디스플레이: 오른쪽, 왼쪽.

예: 오른쪽과 중앙에 장애물이 있으면 더 가까운 쪽을 해당 디스플레이에 표시. 중앙이 가장 가까우면 양쪽 디스플레이 모두 중앙 거리 반영. 오른쪽이 가장 가까우면 오른쪽 디스플레이는 낮게(가까움), 왼쪽은 높게(멂) 표시.

코드에서 설정 가능한 최대 거리(기본 20cm) 이상이면 안전 → 디스플레이 레벨 7(최대). 미만이면 0-20cm 거리를 0-7 레벨로 매핑해 표시.

시나리오 예시

여러 장애물 조합에 따른 디스플레이 동작 예시는 원본 프로젝트 이미지 참조. 마지막 케이스는 중앙+오른쪽(오른쪽 더 가까움), 왼쪽+오른쪽(오른쪽 더 가까움), 전방위(오른쪽 가장 가까움) 등에서 발생.

개선 아이디어

코드

Parking_sensor_v1.ino (아두이노)
/* HC-SR04 x3, TM1651 배터리 디스플레이 x2용 주차 센서 코드
   최대 거리 이상이면 안전 표시, 미만이면 거리에 비례해 레벨 변경
   자세한 건 www.SurtrTech.com 참조 */

#include <TM1651.h>

#define CLK 3    // 오른쪽 디스플레이
#define DIO 2
#define CLK2 5   // 왼쪽 디스플레이
#define DIO2 4

#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) {
    short LevelR = map(R, 0, Maxdistance, 0, 7);
    DisplayR.displayLevel(LevelR);
  }
  if (R >= Maxdistance) DisplayR.displayLevel(7);
  
  if (L > 0 && L < Maxdistance) {
    short LevelL = map(L, 0, Maxdistance, 0, 7);
    DisplayL.displayLevel(LevelL);
  }
  if (L >= Maxdistance) DisplayL.displayLevel(7);
  
  delay(50);
}

int CDistance(int trig, int echo) {
  digitalWrite(trig, LOW); delayMicroseconds(2);
  digitalWrite(trig, HIGH); delayMicroseconds(10);
  digitalWrite(trig, LOW);
  duration = pulseIn(echo, HIGH);
  distance = duration * (0.034 / 2);
  return distance;
}
TM1651 배터리 디스플레이 라이브러리

GitHub 라이브러리 - 작업이 훨씬 수월해집니다.

회로도

회로도 이미지는 원본 프로젝트 페이지에서 확인 가능.

제조공정

  1. 레이더 센서 작동 원리와 현대적 응용 분야
  2. 주차 센서 작동 원리 및 주요 응용 분야
  3. 산소(O2) 센서 이해하기: 역할, 위치, 고장 징후
  4. Mouser Electronics, Sensors Expo 2019에서 첨단 센서 기술 선보여
  5. 암바렐라, 오큘리 3억 750만 달러 인수로 레이더 및 센서 융합 역량 확대
  6. 라즈베리 파이에서 PIR 모션 센서로 LED 제어하기
  7. 스마트 관수용 저가 라즈베리 파이 토양 수분 센서 만들기
  8. MCP9808, InfluxDB, Grafana로 라즈베리 파이 홈 온도 모니터 구축하기
  9. Acconeer A111 펄스 레이더를 라즈베리 파이에 통합하기: 실전 가이드
  10. 감정 센서 & EEG: 실시간 감정 감지를 위한 저비용 하드웨어