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

Arduino Yun을 사용한 초음파 지도 작성기

구성품 및 소모품

Arduino 윤
× 1
초음파 센서
× 1
서보(타워 프로 MG996R)
× 1
점퍼 와이어(일반)
× 10

앱 및 온라인 서비스

Arduino IDE
MATLAB

이 프로젝트 정보

1단계:이론

이 프로젝트에서는 초음파 거리 센서를 사용하고 있습니다. 사람이 들을 수 없는 범위의 음파를 생성하고 이 음파가 장애물에 부딪치고 되돌아오는 데 필요한 시간을 계산하여 거리를 측정합니다. 이는 박쥐나 유람선이 사용하는 원리와 유사합니다.

우리가 사용할 또 다른 구성 요소는 서보 모터입니다. 그것은 주어진 각도 위치로 매우 정확하게 회전하고 그 상태를 유지할 수 있다는 점에서 일반적인 DC 모터와 다릅니다. 서보 모터에 일정 시간 펄스가 가해지면 해당 각도 위치로 이동합니다.

이 두 구성 요소를 모두 사용하여 로봇의 180도 시야를 확보할 것입니다.

2단계:자료 수집

이 프로젝트는 다음 하드웨어를 사용합니다.

<울>
  • Arduino Uno/Yun(Arduino 풋프린트 보드는 Uno 또는 Yun 대신 사용할 수 있음)
  • Arduino 프로토타이핑 실드
  • HC-04 초음파 센서
  • 서보 모터(Tower Pro SG90은 매우 컴팩트하기 때문에 사용했습니다)
  • 소프트웨어 측면에서 우리는 다음 프로그램을 사용하고 있습니다.
  • 제어 코드를 Arduino에 업로드하여 서보를 회전시키고 초음파 센서에서 거리 데이터를 얻고 직렬 포트로 푸시하는 Arduino IDE입니다.
  • Mathworks MatLab은 직렬 라인에서 데이터를 수신하고 처리하고 그래프로 시각화합니다.
  • 3단계:기계 조립

    범용 PCB의 작은 조각을 사용하여 HC-04용 작은 헤더를 만들고 양면 테이프 조각을 사용하여 서보 혼에 부착합니다.

    이 단계는 선택 사항이지만 시스템을 더 작게 만들기 위해 양면 테이프를 사용하여 프로토보드 실드의 돌출 부분에도 서보를 부착했습니다.

    최종 결과는 Wall-E의 복부처럼 보일 것입니다.

    4단계:Arduino 코드

    Arduino 코드는 서보 모터의 움직임과 초음파 센서의 판독값이 캡처되는 시기와 빈도를 제어합니다. 또한 센서 데이터를 직렬 포트로 푸시합니다.

    <울>
  • 라이브러리 가져오기
  • 변수 및 핀을 초기화합니다.
  • 서보 개체 초기화
  • 직렬 통신 초기화
  • 3초 동안 기다리기
  • 카운터를 0으로 초기화
  • 서보를 1도 회전
  • 초음파 센서 데이터 10회 가져오기(기본값)
  • 평균 데이터
  • 직렬 포트로 평균 전송
  • 7단계로 돌아가기
  • 5단계:MatLab 코드

    MatLab 코드는 보드의 실제 제어보다 데이터를 더 많이 다루므로 모든 센서 데이터는 직렬을 통해 PC로 푸시되고 MatLab에서 읽습니다.

    이제 Arduino에서 받은 데이터는 두 가지를 알려줍니다. 서보의 회전 정도와 그 방향으로 장애물의 거리. 따라서 이 시점에서 우리가 가지고 있는 데이터는 극좌표계에 있습니다. 시각화할 때 사람의 눈에 이해가 되려면 데카르트 또는 X-Y 좌표계로 변환해야 합니다.

    따라서 MatLab 코드는 바로 이 작업을 수행합니다. COM 포트에서 직렬로 데이터를 받아 회전각도가 있는 행렬에 저장한 후 위의 공식에 따라 데카르트 좌표로 변환합니다.

    완료되면 그래프에 점을 그려서 출력을 제공합니다. 보드를 상자에 넣었더니 아래와 같은 결과가 나왔습니다.

    6단계 :결론

    시스템이 완벽하지는 않지만 작업을 완료합니다. 상자의 너비와 길이를 대략적으로 추정하여 데이터를 정확하게 보낼 수 있습니다.

    현재 내가 볼 수 있는 유일한 오류는 서보가 움직이는 동안 센서가 흔들리고 센서 자체에서 잘못된 판독값이 발생하기 때문입니다.

    이 외에도 시스템은 잘 작동하며 기본 컴퓨터 비전 프로젝트뿐만 아니라 깊이 지각 실험에도 사용할 수 있습니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • matlab_code_to_run_on_pc.m
  • Arduino 코드
  • matlab_code_to_run_on_pc.mMATLAB
    PC에서 컴파일되고 실행될 MatLab 코드
    theta =0:(pi/180):pi;s =serial('COM10');s.BaudRate=9600fopen(s)i =0;inc =1;while i<180 A =fgets(들); 숫자(i+1) =str2num(A); i =i+1;endfclose(s)j =1 동안 j<181 tab(j,1) =(j-1)*inc tab(j,2) =num(j) tab(j,3) =num( j)*cosd((j-1)*inc) tab(j,4) =num(j)*sind((j-1)*inc) j =j+1end%Figure%polar(theta,num)plot (탭(:,3),탭(:,4))
    Arduino 코드Arduino
    Arduino Yun에 업로드할 Arduino 코드
    #include #include #define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200 NewPing 소나(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 서보 마이서보; 정수 위치 =0; int it =10; 무효 setup() { myservo.attach(9); Serial.begin(9600); 지연(3000);} 무효 루프() { int i =0; 정수 t =0; 정수 =0; for (i =0, i <180, i ++) { unsigned int uS =sonar.ping(); myservo.write(i); 지연(20); (t =0; t   

    회로도

    서보 및 초음파 센서 연결용 Fritzing 파일 YunConfig.fzz

    제조공정

    1. Arduino를 사용하여 모니터 Ambilight 만들기
    2. Arduino Uno를 사용한 인간 감지 로봇 시스템
    3. ARDUINO를 사용하는 초음파 부상 기계
    4. FlickMote
    5. Arduino와 스마트폰을 사용한 DIY 전압계
    6. IoT를 사용한 심박수 모니터
    7. Raspberry Motor Shield를 사용한 Android 제어 장난감
    8. IOT - ESP8266, Arduino 및 초음파 센서를 사용하는 스마트 항아리
    9. Arduino Uno WiFi를 사용하는 WebServerBlink
    10. 라인 팔로워 로봇