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

DIY 2D 모션 레이싱 시뮬레이터

구성품 및 소모품

Arduino Nano R3
× 1
SG90 마이크로 서보 모터
× 2

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

SimTools는 Arduino를 포함한 여러 하드웨어 인터페이스를 제어할 수 있는 일반 모션 시뮬레이터 소프트웨어입니다. 이 조합은 비디오에 제시된 프로젝트에서 사용됩니다. 하드웨어 부분은 Arduino Nano 마이크로 컨트롤러와 2개의 저렴한 SG90 마이크로 서보 모터로만 구성됩니다. 아래에 제공된 코드만 업로드하면 됩니다.

SimTools 소프트웨어의 도움으로 필요한 게임 데이터는 직렬 포트를 통해 Arduino로 전송됩니다. 다음으로 Arduino는 그에 따라 시뮬레이션 플랫폼을 움직이는 서보 모터를 활성화합니다. 이것은 2축 시뮬레이터의 소규모입니다. 실제 시뮬레이터를 만들기 위해서는 모터 드라이버와 대형 서보 모터를 추가해야 합니다.

"https://www.xsimulator.net/" 페이지에는 이러한 DIY 시뮬레이터의 예와 건설 도면 및 팁이 많이 있습니다. SimTools 설정 절차는 비디오에 설명되어 있지만 https://simtools.us/wp-content/uploads/2019/06/SimToolsUserManual-v2.4.pdf

에서 PDF 사용자 설명서를 다운로드할 수도 있습니다.

SimTools는 유효한 라이센스가 등록될 때까지 "데모" 모드에서 실행됩니다. Live for Speed용 플러그인은 SimTools가 데모 모드에 있는 동안 테스트를 위해 완전히 작동합니다. (Live for Speed의 데모는 SimTools 테스트에도 작동합니다.) https://www.lfs.net/downloads

에서 자세한 정보를 찾고 Live for Speed를 다운로드할 수 있습니다.

SimTools 다운로드 링크:

https://www.xsimulator.net/community/marketplace/motion-simulation-software-simtools.63/

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

코드

<울>
  • 코드
  • 코드C/C++
    <사전>//************************************************ ***************************************************// RC Model Servo// EAOROBBIE(Robert Lindsay)의 원본 코드// aarondc에 의해 완전히 망가짐// Sim Tool Motion Software에 무료로 사용//******************** ************************************************** **********************#include //#define DEBUG 1 // 디버그 제거를 위해 이 줄을 주석 처리합니다. Serial.print linesconst int kActuatorCount =2; // 얼마나 많은 액추에이터를 처리하는지// 각 액추에이터를 식별하기 위해 Sim Tools에서 보낸 문자("이름")// NB:여기에서 문자의 순서는 나머지 상수 kPins 및 kActuatorScaleconst char kActuatorName[kActuatorCount]의 순서를 결정합니다. ={ 'R', 'L' }; const int kPins[kActuatorCount] ={4, 5}; // 액츄에이터가 연결된 핀 const int kActuatorScale[kActuatorCount][2] ={ { 0, 179 } , // 오른쪽 액츄에이터 스케일링 { 179, 0 } // 왼쪽 액츄에이터 스케일링 }; const char kEOL ='~'; // 라인 끝 - acutator 값의 구분 기호 const int kMaxCharCount =3; // 일부 보험...서보 액츄에이터세트[kActuatorCount]; // Actuatorsint의 배열입니다.actuatorPosition[kActuatorCount] ={90, 90}; // 90int로 초기화된 현재 액츄에이터 위치 currentActuator; // 직렬 포트에서 읽는 현재 액추에이터를 추적합니다. valueCharCount =0; // 얼마나 많은 값 문자를 읽었는지(kMaxCharCount보다 작아야 함!!// 상태 머신에 대한 일부 상태 설정// psReadActuator =직렬 포트의 다음 문자는 액츄에이터를 알려줍니다.// psReadValue =직렬 포트의 다음 3개 문자 값을 알려줍니다. TPortState { psReadActuator, psReadValue }; TPortState currentState =psReadActuator;void setup(){ // 액츄에이터를 핀에 연결 [i]); // 액츄에이터 위치 초기화 for (int i =0; i 0).void serialEvent() { char tmpChar; int tmpValue; while (Serial.available()) { // if 액추에이터 이름을 기다리고 있습니다. 여기에서 가져옵니다. if (currentState ==psReadActuator) { tmpChar =Serial.read(); // 설정한 액추에이터 이름 배열에서 액추에이터를 찾습니다. #ifdef DEBUG Serial.print("읽기"); Serial.println(tmpChar); #endif for (int i =0; i 9)) tmpValue =0; 액츄에이터포지션[현재액츄에이터] =액츄에이터포지션[전류액추에이터] * 10 + tmpValue; 값CharCount++; } 그렇지 않으면 휴식; } // 값 구분자를 읽었다면 액츄에이터를 업데이트하고 다음 액츄에이터 이름을 찾기 시작합니다. if (tmpValue ==kEOL || valueCharCount ==kMaxCharCount) {#ifdef DEBUG Serial.print("read in "); Serial.println(액츄에이터포지션[현재액츄에이터]); #endif // 값이 0과 179 사이가 되도록 새 위치의 크기를 조정합니다.actuatorPosition[currentActuator] =map(actuatorPosition[currentActuator], 0, 255, kActuatorScale[currentActuator][0], kActuatorScale[currentActuator][1]);# ifdef DEBUG Serial.print("크기가 "로 조정됨); Serial.println(액츄에이터포지션[현재액츄에이터]); #endif 업데이트 액츄에이터(현재 액츄에이터); 현재 상태 =psRead액추에이터; } } }}// 전달된 Actuator에 현재 Actuator 위치를 씁니다. void updateActuator(int thisActuator) {actuatorSet[thisActuator].write(actuatorPosition[thisActuator]);}

    회로도


    제조공정

    1. 라즈베리 파이용 DIY 적외선 모션 센서 시스템
    2. DIY LUMAZOID Arduino 뮤직 비주얼라이저
    3. Arduino와 스마트폰을 사용한 DIY 전압계
    4. DIY 가상 현실 스케이트보드
    5. 모션 센서 물총
    6. DIY Arduino RADIONICS 치료 기계
    7. RFID를 사용한 DIY 아이디어
    8. DIY 3축 CNC VMC
    9. DIY Arduino + GY-906 적외선 온도계
    10. 비행 시뮬레이터용 DIY 방향타 페달