드론을이용한코딩실습 [ 드론을이용한앱인벤터코딩실습 ] 2017/09/09 이병오 snowfog@gmail.com
프로필 16 11 ~ 현재 : 드론학교이사 15 06 ~ 16 11 : 프리랜서 14 04 ~ 15 05 : 하이브테크이사 05 02 ~ 13 06 : 하이브테크대표 03 09 ~ 05 01 : 파수닷컴근무 03 02 ~ 03 08 : 사이텍소프트근무 01 07 ~ 02 11 : 이시큐리티근무 99 04 ~ 01 04 : 소프트프로텍근무
프로필 06 07 : 드라이버개발자를위한윈도우파일시스템 저술 03 03 ~ 16 11 : KOSR(www.kosr.org) 운영자
프로필 다수의 Windows 보안드라이버개발 보안 USB을위한매체제어드라이버 데이터복호화를위한 File System Filter Driver 보안인증을위한 File System Filter Driver NDIS 및 PCI 드라이버 안드로이드앱및게임개발 사회인야구톡 버스터라이더 철도청중계기관리앱 가상키보드
목차 앱인벤터개발환경구축 앱인벤터살펴보기 드론통신앱제작
앱인벤터개발환경구축 앱인벤터란개발환경구축 Tool Java Download 및설치 Chrome Brower Download 및설치 앱인벤터로그인 언어변경
앱인벤터 (App Inventor) 안드로이드앱개발도구및언어 구글과 MIT 가공동개발 MIT 에서웹서비스로제공 드래그 - 앤 - 드롭방식의블록코딩언어 프로그래밍및앱제작가능 심플한그래픽인터페이스제공 코딩교육용언어로많이사용 웹사이트에접속하여실행하는웹서비스 구글계정필요
앱인벤터 (App Inventor) App Inventor Servers
앱인벤터개발환경구축 앱인벤터란개발환경구축 Tool Java Download 및설치 Chrome Brower Download 및설치 앱인벤터로그인 언어변경
앱인벤터개발환경구축 자바 JDK(Java Development Kit) 설치 https://www.java.com/ko/ Chrome Brower 설치 https://www.google.com/chrome/browser/desktop/in dex.html App Inventor 사이트접속 http://appinventor.mit.edu/explore/index-2.html# http://ai2.appinventor.mit.edu/
앱인벤터개발환경구축 앱인벤터란개발환경구축 Tool Java Download 및설치 Chrome Brower Download 및설치 앱인벤터로그인 언어변경
Java Download
Java Download
Java 설치
Java 설치
Java 설치경로확인
앱인벤터개발환경구축 앱인벤터란개발환경구축 Tool Java Download 및설치 Chrome Brower Download 및설치 앱인벤터로그인 언어변경
Chrome Browser Download
Chrome Browser Download
구글계정만들기
구글로그인하기
앱인벤터개발환경구축 앱인벤터란개발환경구축 Tool Java Download 및설치 Chrome Brower Download 및설치 앱인벤터로그인 언어변경
앱인벤터로그인 MIT 사이트 http://appinventor.mit.edu/explore/index-2.html#
앱인벤터로그인
앱인벤터로그인
앱인벤터로그인
앱인벤터로그인
앱인벤터개발환경구축 앱인벤터란개발환경구축 Tool Java Download 및설치 Chrome Brower Download 및설치 앱인벤터로그인 언어변경
앱인벤터언어변경
앱인벤터언어변경
앱인벤터살펴보기 HelloWorld 프로젝트생성화면구성타이틀변경컴포넌트추가장비연결앱설치
HelloWorld 프로젝트생성 Start new project 메뉴선택
HelloWorld 프로젝트생성 Project Name : HelloWorld
HelloWorld 프로젝트생성
앱인벤터살펴보기 HelloWorld 프로젝트생성화면구성타이틀변경컴포넌트추가장비연결앱설치
앱인벤터화면구성 디자이너 (Designer) 스크린에보여지거나숨겨진컴포넌트들의조합 앱의사용자인터페이스디자인 블록에디터 (Blocks Editor) 컴포넌트들의블록을결합하여앱기능을프로그래밍하는곳
앱인벤터화면구성 - Designer 팔레트 (Palette) : 앱제작에필요한컴포넌트집합. 컴포넌트 (Components) : 뷰어에추가한컴포넌트리스트디자이너버튼 (Designer Button) : 디자이너화면전환버튼 뷰어 (Viewer) : 앱실행시표시되는화면 미디어 (Media) : 앱에서사용할오디오, 이미지파일등이등록된리스트 속성 (Properties) : 선택한컴포넌트의상세속성변경
앱인벤터화면구성 - Blocks Editor 블록 (Blocks) : 내장된블록과팔레트에서추가한컴포넌트의블록포함 블록버튼 (Blocks Button) : 블록에디터화면전환버튼 블록 (Block) : 블록과블록을연결하여앱기능설정 미디어 (Media) : 앱에서사용할오디오, 이미지파일등이등록된리스트 뷰어 (Viewer) : 블록영역에서드래그한블록들로프로그래밍할수있는영역
앱인벤터살펴보기 HelloWorld 프로젝트생성화면구성타이틀변경컴포넌트추가장비연결앱설치
Screen ==> HelloWorld 타이틀변경하기
타이틀변경하기
앱인벤터살펴보기 HelloWorld 프로젝트생성화면구성타이틀변경컴포넌트추가장비연결에뮬레이터연결앱설치
Label 컴포넌트추가 컴포넌트추가
Label Text 변경 컴포넌트추가
앱인벤터살펴보기 HelloWorld 프로젝트생성화면구성타이틀변경컴포넌트추가장비연결앱설치
장비와연결 AI Companion MIT AI2 Companion 설치 안드로이드폰구글플레이에서검색하여설치
장비와연결 - AI Companion MIT AI2 Companion 앱실행
장비와연결 - AI Companion Connect -> AI Companion 선택
장비와연결 - AI Companion Connect -> AI Companion 선택
장비와연결 - AI Companion MIT AI2 Companion 앱 6 자리코드입력 Scan QR code 로 QR 코드스캔
장비와연결 - AI Companion MIT AI2 Companion 앱 6 자리코드입력 Scan QR code 로 QR 코드스캔
앱인벤터살펴보기 HelloWorld 프로젝트생성화면구성타이틀변경컴포넌트추가장비연결앱설치
앱설치 Build ==> App(provide QR code for.apk) 실행
앱빌드 앱설치
QR 코드생성 앱설치
앱설치 MIT App 어플리케이션실행 Scan QR code 클랙
보안인증 앱설치
보안인증 앱설치
설치 앱설치
드론통신예제 (Kitrone) 프로젝트생성 BLE(Bluetooth Low Energy) 지원화면구성하기통신프로토콜이해하기블록코딩하기
Projects -> Start new project 프로젝트생성
Project name : KitroneEx 프로젝트생성
드론통신예제 (Kitrone) 프로젝트생성 BLE(Bluetooth Low Energy) 지원화면구성하기통신프로토콜이해하기블록코딩하기
BLE(Bluetooth Low Energy) 지원 BluetoothLE.aix 파일다운 (http://appinventor.mit.edu/extensions)
BLE(Bluetooth Low Energy) 지원 BluetoothLE.aix Import
BLE(Bluetooth Low Energy) 지원 BluetoothLE.aix Import
BLE(Bluetooth Low Energy) 지원 BluetoothLE.aix Import
BLE(Bluetooth Low Energy) 지원 BluetoothLE.aix Import
드론통신예제 (Kitrone) 프로젝트생성 BLE(Bluetooth Low Energy) 지원화면구성하기통신프로토콜이해하기블록코딩하기
Layout 추가 화면구성
컴포넌트추가 화면구성
BLE 추가 화면구성
Clock 추가 화면구성
드론통신예제 (Kitrone) 프로젝트생성 BLE(Bluetooth Low Energy) 지원화면구성하기통신프로토콜이해하기블록코딩하기
통신프로토콜 MSP (Multiwii Serial Protocol) Multiwii 에서사용되는시리얼통신프로토콜 (http://www.multiwii.com/wiki/index.php?title=multiwii_serial_protocol) App -> Drone preamble direction size command data CRC 0 1 2 3 4 5+Data Size 5+Data Size + 1 $ (33) M (77) < (66) Data Size MSP Command Max 64bytes checksum Drone -> App preamble direction size command data CRC 0 1 2 3 4 5+Data Size 5+Data Size + 1 $ M! Or > Data Size MSP Command Max 64bytes checksum
통신프로토콜 주요프로토콜 명령어 MSP_SET_RAW_RC_TINY MSP_ARM MSP_DISARM MSP_TRIM_UP MSP_TRIM_DOWN MSP_TRIM_LEFT MSP_TRIM_RIGHT 기능 기체움직임조정 (Roll/Yaw/Throttle 및 AUX 정보 ) 기체동작시작 기체동작종료 기체수평조정 기체수평조정 기체수평조정 기체수평조정 Index 0 0 ~ 250 Roll 값 1 0 ~ 250 Pitch 값 2 0 ~ 250 Yaw 값 3 0 ~ 250 Throttle 값 4 0 ~ 255 Aux 값
MSP Command #define MSP_IDENT 100 //out message multitype + multiwii version + protocol version + capability variable #define MSP_STATUS 101 //out message cycletime & errors_count & sensor present & box activation & current setting number #define MSP_RAW_IMU 102 //out message 9 DOF #define MSP_SERVO 103 //out message 8 servos #define MSP_MOTOR 104 //out message 8 motors #define MSP_RC 105 //out message 8 rc chan and more #define MSP_RAW_GPS 106 //out message fix, numsat, lat, lon, alt, speed, ground course #define MSP_COMP_GPS 107 //out message distance home, direction home #define MSP_ATTITUDE 108 //out message 2 angles 1 heading #define MSP_ALTITUDE 109 //out message altitude, variometer #define MSP_ANALOG 110 //out message vbat, powermetersum, rssi if available on RX #define MSP_RC_TUNING 111 //out message rc rate, rc expo, rollpitch rate, yaw rate, dyn throttle PID #define MSP_PID 112 //out message P I D coeff (9 are used currently) #define MSP_BOX 113 //out message BOX setup (number is dependant of your setup)
MSP Command #define MSP_MISC 114 //out message powermeter trig #define MSP_MOTOR_PINS 115 //out message which pins are in use for motors & servos, for GUI #define MSP_BOXNAMES 116 //out message the aux switch names #define MSP_PIDNAMES 117 //out message the PID names #define MSP_WP 118 //out message get a WP, WP# is in the payload, returns (WP#, lat, lon, alt, flags) WP#0-home, WP#16-poshold #define MSP_BOXIDS 119 //out message get the permanent IDs associated to BOXes #if defined(hex_nano) #define MSP_SET_RAW_RC_TINY 150 //in message 4 rc chan #define MSP_ARM 151 #define MSP_DISARM 152 #define MSP_TRIM_UP 153 #define MSP_TRIM_DOWN 154 #define MSP_TRIM_LEFT 155 #define MSP_TRIM_RIGHT 156 #endif
MSP Command #define MSP_SET_RAW_RC 200 //in message 8 rc chan #define MSP_SET_RAW_GPS 201 //in message fix, numsat, lat, lon, alt, speed #define MSP_SET_PID 202 //in message P I D coeff (9 are used currently) #define MSP_SET_BOX 203 //in message BOX setup (number is dependant of your setup) #define MSP_SET_RC_TUNING 204 //in message rc rate, rc expo, rollpitch rate, yaw rate, dyn throttle PID #define MSP_ACC_CALIBRATION 205 //in message no param #define MSP_MAG_CALIBRATION 206 //in message no param #define MSP_SET_MISC 207 //in message powermeter trig + 8 free for future use #define MSP_RESET_CONF 208 //in message no param #define MSP_SET_WP 209 //in message sets a given WP (WP#,lat, lon, alt, flags) #define MSP_SELECT_SETTING 210 //in message Select Setting Number (0-2) #define MSP_SET_HEAD 211 //in message define a new heading hold direction #define MSP_BIND 240 //in message no param #define MSP_EEPROM_WRITE 250 //in message no param #define MSP_DEBUGMSG 253 //out message debug string buffer #define MSP_DEBUG 254 //out message debug1,debug2,debug3,debug4
드론통신예제 (Kitrone) 프로젝트생성 BLE(Bluetooth Low Energy) 지원화면구성하기통신프로토콜이해하기블록코딩하기
블록프로그래밍 사용프로토콜 MSP_ACC_CALIBRATION : 205 MSP_ARM : 151 MSP_DISARM : 152 MSP_SET_RAW_RC_TINY : 150 UUID Service UUID : 0000ffe0-0000-1000-8000-00805f9b34fb Characteristic UUID : 0000ffe1-0000-1000-8000- 00805f9b34fb
장비검색 Scan 블록프로그래밍
블록프로그래밍 장비선택 - Available Device
연결해제 - Disconnect 블록프로그래밍
블록프로그래밍 가속도 / 자이로센서초기화 ACC Calibration
시동걸기 - Arm 블록프로그래밍
시동끄기 - Disarm 블록프로그래밍
모터돌리기 - Throttle 블록프로그래밍
모터돌리기 - Throttle 블록프로그래밍
모터돌리기 - Throttle 블록프로그래밍
모터돌리기 - Throttle 블록프로그래밍
모터돌리기 - Throttle 블록프로그래밍
패킷구성 - Throttle 블록프로그래밍
패킷초기화 - Throttle 블록프로그래밍
모터돌리기 - Throttle 블록프로그래밍
Q & A
감사합니다