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

마인드 컨트롤 드론

구성품 및 소모품

Arduino MKR1000
× 1
마이크로 레이싱 드론
× 1
커패시터 100μF
× 4
저항 221옴
× 4
점퍼 와이어(일반)
× 12
브레드보드(일반)
× 1
Mindwave Neurosky
× 1

필요한 도구 및 기계

납땜 인두(일반)
Digilent 드라이버

앱 및 온라인 서비스

처리 3
Arduino IDE

이 프로젝트 정보

배경

무엇이든 할 수 있는 작은 비행 기계인 드론이 매력적이라고 ​​생각합니다. 멋진 기술로 프로젝트를 할 기회가 생겼을 때, 마음으로 드론을 조종하면서 소년의 꿈을 실현하기로 결심했습니다.

연구에서 나는 이 프로젝트를 위해 드론 컨트롤러를 쉽게 해킹하는 방법을 다루는 튜토리얼을 찾지 못했습니다. 사용 가능한 대부분의 튜토리얼은 Arduino를 사용하여 자신만의 드론을 만드는 방법이나 전송 프로토콜을 해킹하는 방법에 관한 것입니다.

이 튜토리얼은 PCB를 디지털 방식으로 제어하기 위해 해킹하는 가장 기본적인 개념을 다룹니다. 이 튜토리얼의 목표는 드론으로 직접 실험하고 재미있는 것을 만들 수 있는 기본 개념을 배우는 것입니다.

공지사항

잠재적으로 드론이나 컨트롤러를 죽이고 사용할 수 없게 만들 수 있습니다.

이 프로젝트에서는 드론을 이착륙만 조종하는 방법은 다루지 않습니다.

MindWave / EEG 센서가 반드시 필요한 것은 아니며 원하는 모든 입력을 사용할 수 있습니다. 하지만 마음으로 드론을 조종하는 것은 정말 대단합니다!

비디오 튜토리얼

필요한 기술

이 튜토리얼은 납땜 및 납땜 제거에 대한 경험이 있다고 가정합니다.

부품 목록

<울>
  • 드론 + 컨트롤러
  • <울>
  • 납땜 스테이션 + 액세서리(편조 구리선, 땜납 제거 펌프, 도움의 손길, 솔리드 코어 와이어, 주석)
  • <울>
  • 멀티미터
  • <울>
  • MindWave 센서
  • <울>
  • 아두이노 MKR1000
  • <울>
  • 브레드보드
  • <울>
  • 4x 100uF 커패시터
  • <울>
  • 4x 220Ω 저항기
  • <울>
  • 12x 점퍼 와이어
  • <울>
  • 6개의 악어 클립 와이어(옵션)
  • 또한 아직 저항값을 모르는 저항 4개가 필요합니다.

    1단계:드론 PCB

    원하는 거의 모든 드론을 사용할 수 있습니다. 대부분의 컨트롤러는 2축 조이스틱으로 작동합니다. 우회할 조이스틱입니다.

    먼저 컨트롤러의 케이스를 엽니다. 이 컨트롤러는 약 3.3v인 2개의 1.5v 배터리를 사용합니다. 이 값은 아두이노 MKR1000의 출력과 동일합니다.

    원하는 다른 Arduino를 사용할 수 있지만 PCB가 처리할 수 있는 더 많은 전압을 주면 회로 기판이 파손될 수 있습니다. (나는 경험에서 말한다. )

    일단 전원이 공급되면 조이스틱의 중간, 고전압 및 저전압이 무엇인지 멀티미터로 측정하십시오. 나중에 사용할 수 있도록 기록해 두십시오.

    PCB에서 조이스틱 구성요소의 땜납을 제거합니다.

    실제로 이러한 조이스틱 구성 요소는 전위차계일 뿐입니다. 전위차계는 아날로그 가변 저항기입니다. 멀티미터로 최대 저항을 측정할 수 있습니다. 멀티미터를 + 및 -에 연결하여 저항을 읽습니다.

    솔더(이 경우 10Ω 저항) 조이스틱의 + 및 - 구멍에 4개의 저항을 연결하여 회로를 완성합니다.

    또한 솔리드 코어 와이어를 PCB의 +(이 보드의 B+) 및 -(이 보드의 B-) 포트에 납땜합니다. 그리고 조이스틱의 신호 포트에 솔리드 코어 와이어를 납땜합니다.

    이제 다음 단계를 위해 컨트롤러를 준비했습니다.

    2단계:디지털에서 아날로그로

    Arduino와 함께 AnalogWrite를 사용하면 출력은 PWM(펄스 폭 변조) 신호가 됩니다. 승리는 결정된 빈도에서 자체 값을 HIGH 및 LOW로 돌립니다.

    우리가 준비한 PCB는 PWM을 좋아하지 않으며 안정적인 전압을 기대하고 있습니다.

    아날로그 값을 생성하기 위해 DAC 칩이나 RF 래더 필터와 같은 다양한 디지털-아날로그 변환기를 사용할 수 있습니다.

    그렇기 때문에 이 프로젝트를 가능한 한 간단하게 유지하고 싶습니다. 원하는 출력을 제공하는 로우 패스 필터를 사용하는 방법을 배우겠습니다.

    저역 통과 필터를 생성하려면 커패시터와 저항이 필요합니다.

    저역 통과 필터의 특징 중 하나는 아날로그 전압이 점차적으로 변한다는 것입니다(시간이 걸립니다). 이 회로는 원하는 결과를 제공하고 적은 양의 부품을 사용하기 때문에 가장 잘 작동합니다.

    3단계:Arduino 회로

    회로의 주요 부분은 최근에 만든 저역 통과 필터입니다. 4개를 연속으로 만들고 4개의 컨트롤러 입력 모두에 대해 아날로그 전압을 갖습니다.

    컨트롤러 PCB의 올바른 입력에 올바른 출력을 연결합니다. Arduino Sketch를 업로드하기 전에 올바르게 가져왔는지 확인하십시오.

    표준 드론 레이아웃은 다음과 같습니다.

    <울>
  • Throttle => 컨트롤러 왼쪽의 위/아래
  • <울>
  • Yaw => 컨트롤러 왼쪽의 왼쪽/오른쪽
  • <울>
  • 피치 => 컨트롤러 오른쪽 위/아래
  • <울>
  • 롤 => 컨트롤러 오른쪽의 왼쪽/오른쪽
  • 모든 것이 연결되면 스케치를 Arduino MKR1000에 업로드할 수 있습니다. 이 튜토리얼의 하단에서 스케치를 찾을 수 있습니다.

    Arduino는 배터리를 교체하고 바이패스된 조이스틱에 신호(전압)를 보낼 수 있습니다. 이 순간에 PWM으로 드론을 제어하는 ​​실험을 통해 자신만의 프로그램을 구축할 수 있습니다.

    이제 Processing과 MindWave 센서를 사용하여 드론을 이륙하는 방법을 보여드리겠습니다.

    4단계:마인드 컨트롤

    컴퓨터에 모든 드라이버를 설치합니다. 이 MindWave 센서는 CD와 함께 제공됩니다.

    MindWave 센서를 Bluetooth로 컴퓨터에 페어링하십시오. 버튼을 3초 동안 누르고 있으면 파란색 LED가 두 번 깜박이고 이제 검색할 수 있습니다.

    연결되면 처리를 시작합니다.

    http://jorgecardoso.eu/processing/MindSetProcessing/#download

    에서 처리를 위해 Jorge C. S Cardoso가 만든 MindSet 라이브러리를 설치합니다.

    라이브러리 폴더에 라이브러리의 압축을 풉니다. 처리 폴더에서 라이브러리 폴더를 찾을 수 있습니다.

    설정에서 com-port가 올바른지 확인하십시오. 그렇지 않으면 오류가 발생합니다. 장치 관리자에서 com-port를 찾을 수 있습니다.

    Arduino IDE의 "Port"에 있는 "Tools"에서 Arduino의 com-port를 찾을 수도 있습니다.

    ThinkGear Connector Preferences(드라이버를 설치할 때 이 프로그램을 얻음)의 "Options"에서 MindWave 센서의 com-port를 찾을 수도 있습니다.

    receiver =new Serial(this, "COM10", 115200); mindSet =새로운 MindSet(this, "COM5"); 

    프로세싱은 직렬을 통해 Arduino와 통신합니다. 처리 코드를 원하는 대로 변경할 수 있으며 스케치의 주석을 읽고 진행 상황을 이해할 수 있습니다.

    Processing 스케치를 실행하고 드론에 집중하세요. 집중도가 40%를 넘으면 드론이 이륙합니다. 집중할수록 드론이 더 공격적입니다. 정신이 흩어지고 집중을 멈추면 드론을 착륙시킬 수 있습니다.

    결론

    이 튜토리얼이 드론 컨트롤러(또는 모든 PCB)를 해킹하고 또 다른 입력을 제공하는 것이 얼마나 간단한지에 대한 통찰력을 제공하기를 바랍니다. 실험을 통해 제어할 다른 입력을 얻는 방법과 이륙 및 착지 외에 다른 움직임을 만드는 방법을 알아낼 수 있습니다.

    여러분이 어떤 멋진 작품을 만들지 기대됩니다!

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

    코드

    <울>
  • 처리 마스터
  • 드론 제어
  • 처리 마스터처리
    Bluetooth Serial을 통해 MindWave 센서에 연결하고 주의 값을 8비트 정수로 컨트롤러에 보냅니다.
    /* * Drone mind control * * 이 스케치는 Serial 값을 수신기 수신기에 보냅니다. * * 입력은 a를 통해 생성됩니다. Neurosky MindSet 모바일 헤드셋 * * 작성자:Wesley Hartogs * Communication and Multimedia Design * Avans University of Applied Sciences * * */// import Serial libaryimport processing.serial.*;// 수신기 정의 SerialSerial 수신기;// 가져오기 MindSet libaryimport pt.citar.diablu.processing.mindset.*;MindSet mindSet;// 초기 값 설정int throttle =0;int yaw =127;int pitch =127;int roll =127;void setup() { size(150, 500); // COM10 수신기에서 시리얼 통신 개시 =new Serial(this, "COM10", 115200); // MindSet 통신 시작 // MindSet은 Bluetooth 직렬 통신을 사용합니다. // 장치 관리자에서 ThinkGear 커넥터의 COM 포트를 확인합니다. mindSet =new MindSet(this, "COM5"); // 앤티앨리어싱 활성화 smooth(); // 스트로크 속성 설정 strokeWeight(5); 뇌졸중(255); 스트로크캡(사각형); // 선 색상 설정 fill(255); } // setup()void draw(){ // 검정색 배경으로 시작 background(0); // 아래에서 40% 지점까지 수평선을 그립니다. // 이 선은 최소(40%) 주의가 필요한 라인을 나타냅니다. line( 0, height*0.60, width, height*.60); // 수평 중심에서 위쪽으로 선을 그립니다. // 이 선은 주의를 나타냅니다. // 높이는 거꾸로 매핑되어 위에서 백분율을 얻습니다. // 예:40%(0.4) 주의 높이 값은 ( 100 - 40) 맨 윗줄에서 60%(0.6)( width*.5, height, width*.5, height*map( float( AttentionLevel ) / 100, 0, 1, 1, 0 ) ); // 주의 수준을 스로틀 변수로 푸시합니다. // 40 =무언가를 하는 데 필요한 최소 주의 // 100 =최대 주의 // 30 =Arduino의 경우 8비트 최소값 // 255 =Arduino의 경우 8비트 최대 값 스로틀 =int( 지도( 주의 수준, 40, 100, 30, 255 ) ); // 오류를 방지하기 위해 값을 8비트 값으로 제한 throttle =constrain( throttle, 0, 255); 피치 =제약(피치, 0, 255); 롤 =제약(롤, 0, 255); 요 =제약(요, 0, 255); // 통신이 가능한 경우 값을 Arduino 수신기로 보냅니다. if ( receiver .available()> 0) { println( "attentionLevel:"+attentionLevel+" throttle:"+throttle+" yaw:"+yaw+" pitch:"+ 피치+" 롤:"+롤 ); 수신기 .write( "스로틀:"+스로틀+" yaw:"+yaw+" pitch:"+pitch+" 롤:"+roll ); } } // draw()// 킬 스위치, 리셋하고 프로그램을 닫으려면 K를 누르십시오. keyPressed() { if (key =='k' || key ==ESC) { if ( receiver .available()> 0) { 수신기 .write("스로틀:"+0+" 요:"+127+" 피치:"+127+" 롤:"+127); 출구(); } }}// MindSet 변수 및 기능int signalStrenght =0;int AttentionLevel =0;public void AttentionEvent( int AttentionLevel_val ) { AttentionLevel =AttentionLevel_val;}// 이 기능은 MindSet과의 연결이 최적이 아닐 때 활성화됩니다.public void PoorSignalEvent( int signalNoise ) { // MindSet이 조정 중입니다. if ( signalNoise ==200 ) { println( "Mindset이 피부에 닿지 않습니다!" ); } // 신호 강도를 백분율로 매핑합니다. signalStrenght =int( map( ( 200-signalNoise ), 200, 0, 100, 0 ) ); println( "신호 강도:" + signalStrenght + "%" );}
    드론 컨트롤Arduino
    그의 스케치는 Serial 입력 값(처리에서)을 수신하고 이 값을 해킹된 컨트롤러로 보냅니다.
    /* * Drone control * * 이 스케치는 직렬 입력 값(처리에서)을 수신하고 이 값을 해킹된 컨트롤러로 보냅니다. * 이 프로그램은 Arduino MKR1000(또는 다른 3.3볼트 출력 기반 Arduino)에서만 사용하십시오. * * 회로:* - 100μF 커패시터 및 220Ω 저항이 있는 4개의 저역 통과 필터 * - 해킹된 드론 컨트롤러 * * 2018년 3월 21일 작성 * Wesley 작성 Hartogs * 커뮤니케이션 및 멀티미디어 디자인 * Avans University of Applied Sciences * * 이 스케치를 사용하는 데 따른 위험은 사용자의 책임입니다. * */// 초기 값 설정int throttle =0;int yaw =255/2; // 3.3v / 2int 피치 =255/2; // 3.3v / 2int 롤 =255/2; // 3.3v / 2int throttlePin =2; // PWMint yawPin =3; // PWMint 피치핀 =4; // PWMint 롤핀 =5; // PWMvoid setup() { // 115200 baud에서 직렬 통신 시작 Serial.begin( 115200 ); // 핀 모드 설정 pinMode( throttlePin, OUTPUT ); 핀모드( yawPin, OUTPUT ); 핀모드(피치핀, 출력); pinMode( rollPin, OUTPUT );}void loop() { // 직렬 연결이 가능한 경우 값을 가져옵니다. if ( Serial.available()> 0 ) { throttle =Serial.parseInt(); // 직렬 버퍼의 첫 번째 정수 값 저장 yaw =Serial.parseInt(); // 직렬 버퍼의 두 번째 정수 값을 저장합니다. pitch =Serial.parseInt(); // 직렬 버퍼의 세 번째 정수 값 저장 roll =Serial.parseInt(); // 직렬 버퍼에서 네 번째 정수 값 저장 } // 드론 컨트롤러에 값 쓰기 // 저역 통과 필터 또는 DAC(디지털-아날로그 변환기)를 사용하여 PWM을 아날로그 전압으로 변환 analogWrite( throttlePin, throttle ); analogWrite( yawPin, 요 ); analogWrite(피치핀, 피치); analogWrite( 롤핀, 롤 );}

    회로도

    PWM 신호를 아날로그 전압으로 변환 Arduino MK1000을 해킹된 컨트롤러에 연결하는 회로

    제조공정

    1. TinyML-Language Detector 기반 Edge Impulse 및 Arduino
    2. MPU-6050을 사용한 Arduino 자이로스코프 게임
    3. Arduino 디지털 주사위
    4. DIY 37 LED 룰렛 게임
    5. ATtiny85 미니 아케이드:뱀
    6. 휴대용 거리 감지기
    7. Arduino 가습기 제어
    8. 원격 제어 그리퍼 봇
    9. 구리로 전기도금
    10. NeoMatrix Arduino Pong