미래창조과학부가 주관하고 KAIST 인공위성연구센터가 주관하는 2015 캔위성 경연대회에서 올해도 동아리 학생들이 입상을 하였습니다. 작년보다 성적이 좋아서 기분이 참 좋네요. 올해는 우수상입니다. 카이스트 총장상을 수상했고 3학년 박상빈 학생과, 2학년 한승희, 김상연 학생이 그 주인공입니다.

캔위성 경연대회는 어찌보면 동아리의 성격과 참 잘 맞는 대회입니다. 다만 제안서의 통과라는 큰 장벽이 도사리고 있지만 사실 그렇지 않은 대회가 어디 있겠습니까. 매해 조금씩 성장하는 모습을 볼 수 있다는 것 그것 자체가 지도교사의 행복인것 같습니다. 바쁜 와중에도 학업과 대회를 같이 준비하느라 힘들었을 수상자들에게 진심으로 축하를 드리며 그 노력이 보다 큰 꿈을 이루는 출발점이 되리라고 생각합니다


감히 내년에는 최우수상을 기대해봅니다. 자세한 사항은 미래부 보도 자료로 대체합니다.









Posted by 수아기 트랙백 0 : 댓글 0

댓글을 달아 주세요

캔위성 경연대회를 다녀와서 - 1(제작한 캔위성에 대하여)

글쓴이 : 한승희

 

카이스트 인공위성연구센터가 주관하고 한국항공우주연구원이 후원하는 캔위성 대회에 참가하였습니다. 그 경험에 대해 간단히 후기를 써보고자 하는데요, 그에 앞서 저희 캔위성에 대해 설명해드리고자 합니다.

 

저희 팀의 이름은 DCS(Drone CanSat)인데요, 캔위성 위에 보조로 드론을 활용하여 추가적인 기능을 수행하고자 하였기 때문에 위와 같은 팀명을 붙이게 되었습니다. 처음에 농담처럼 한 캔위성에 드론을 붙이겠다라는 말이 계획서로써 통과하고, 발표 심사도 통과해 결국 제작하게 되었고 직접 경연대회에 참가하여 발사까지 하게 될 줄은 몰랐습니다.

저희 캔위성에 대해 간단히 소개해 보겠습니다.

아래 보시는 그림은 저희 캔위성의 개략도인데요, 저희 캔위성은 그림과 같이 기본 캔위성부, 응용부, 드론부의 3단으로 구성되어 있습니다.

먼저 기본 캔위성 키트입니다.

기본 캔위성 키트는 기본적으로 블루투스 통신을 통해 GPS, IMU, 카메라 데이터와 CDS 센서의 조도 데이터를 받을 수 있게 되어 있습니다. , 3층 보드를 확장하여 원하는 기능을 구현할 수 있는데요, 저희는 이 층을 아두이노를 활용해 구성해 보았습니다.

위 사진은 저희가 구성한 3층 보드의 모습입니다. 가운데에 보이는 아두이노 mini는 캔위성 자체의 배터리를 활용해 동작하여 DHT11센서 (하늘색 센서)gy-86 센서(파란색 센서)의 기온, 습도, 기압 데이터를 수집해 SD카드에 저장할 수 있도록 하였습니다. 아래는 저희가 짠 아두이노의 코드입니다,

//---------------------------------------------------------------------------

#include <SD.h>

File myFile; // SD card

 

#include <DHT11.h>

DHT11 dht11(2); // DHT11

 

#include <Wire.h>

#include <MS561101BA.h>

MS561101BA baro = MS561101BA();// gy-86

 

void setup()

{

Wire.begin();

Serial.begin(9600);

Serial.print("Initializing SD card...");

pinMode(10, OUTPUT);

if (!SD.begin(4)) {

Serial.println(" initialization failed!");

return;

}

Serial.println(" initialization done.");

delay(1000);

baro.init(MS561101BA_ADDR_CSB_LOW);

}

 

void loop()

{

int err;

float temp, humi;

float temperature = NULL, pression = NULL;

myFile = SD.open("test.txt", FILE_WRITE);

// if the file opened okay, write to it:

if (myFile) {

if((err=dht11.read(humi, temp))==0)

{

myFile.print(temp);

myFile.write(",");

myFile.print(humi);

myFile.write(",");

while(temperature == NULL) {

temperature = baro.getTemperature(MS561101BA_OSR_4096);

}

myFile.print(temperature);

myFile.write(",");

while(pression == NULL) {

pression = baro.getPressure(MS561101BA_OSR_4096);

}

myFile.println(pression);

 

}

// close the file:

myFile.close();

} else {

// if the file didn't open, print an error:

Serial.println("error opening test.txt");

}

 

delay(DHT11_RETRY_DELAY);

}

---------------------------------------------------------------------------//

텍스트 파일로서 데이터가 저장되는 것을 아래 사진과 같이 확인할 수 있었습니다.

다음은 응용부입니다.

응용부 설명에 앞서 저희가 부품들을 제작한 방법에 대해 먼저 말씀드려야 할텐데요, 저희는 3D 모델링 후 이를 3D프린터로 출력하는 방식을 통해 부품들을 제작하였습니다. 이 방법을 채택했던 덕분에 원래 계획했던 대로 조립이 가능했다고 생각합니다. 다음 그림은 모델링 사집과 출력한 모델 모습입니다.

다시 응용부 설명으로 넘어와 보겠습니다.

응용부에는 위쪽 드론부의 드론을 제어해주기 위한 드론보드와 이를 구동시키기 위한 배터리가 들어있습니다. 배터리는 리튭폴리머 배터리 1200mAh 2개를 병렬로 연결해 2400mAh를 확보하였는데요, 이를 통해 30분 이상의 드론 동작 시간을 확보할 수 있었습니다. 드론 보드는 기존 드론의 역할에서 리모컨 조종의 역할을 제외하고 드론 본체의 IMU센서의 데이터를 바탕으로 혼자 pid제어를 통해 자세제어를 할 수 있도록 코드를 수정하여 사용하였습니다.드론의 모터 핀들은 드론부와 효율적으로 연결될 수 있도록 핀헤더를 활용해 연결할 수 있도록 하였고, 드론 보드를 켜고 끌 수 있는 스위치와 전원 표시 LED도 달았습니다. 아래는 완성된 응용부의 모습입니다.

 

다음은 드론부인데요,

드론부에는 이름에서 볼 수 있듯이 드론이 달려 있습니다.

몸통과 날개 4, 부가적 부품들로 구성되어 있는데요, 날개 4개에는 각각 모터 1개와 프로펠라가 장착되어 있고 이 날개들은 몸통의 4부분에 장착되게 됩니다.

캔위성은 얇은 로켓에 넣어져 쏘아지기 때문에 어떻게 큰 드론이 넣어지나 생각하시겠지만 날개는 접이식으로 설계되었습니다. 로켓에 담길 때는 아래 그림과 같이 접혔다가 용수철의 탄성력을 받아 다시 펴지게 되는 원리입니다.

 

다음 사진은 완성 사진입니다.

 

마지막으로 낙하산부인데요, 저희는 공중에서 캔위성의 회전을 막기 위해 4줄로 낙하산과 캔위성을 연결하였습니다. 이를 위해 다음 사진과 같은 아크릴판을 제작하였습니다.

이제 모든 부분의 제작이 끝났는데요, 전체 조립된 모습은 다음과 같습니다.

이상이 저희가 제작한 캔위성에 대한 간단한 설명이었습니다.

다음 글에서는 경연대회 후기에 대해 적어보도록 하겠습니다.

Posted by 김상연 트랙백 0 : 댓글 1

댓글을 달아 주세요

  1. addr | edit/del | reply 수아기 2015.08.17 10:14 신고

    좋은 결과가 있기를 기대하면서 다음 편 이야기도 기다려지네요.^^

작성자 : 황교석 / 권민혁 

2015년 경기북과학고등학교 과학 동아리 학술 대회를 맞이하여 저희 동아리 SADA에서는 두 명씩 팀을 이루어 프로젝트를 진행하였습니다. 어떤 프로젝트를 진행할지 많이 고민하기도 하였는데, 원래 계획하였던 아두이노를 활용한 LED 테트리스의 구현에 차질이 생겨 “RFID를 활용한 가위바위보 게임프로젝트를 진행하게 되었습니다. 다소 간단하고 쉬운 부분도 없지 않지만 이번 프로젝트를 바탕으로 조만간 아두이노를 활용한 LED 테트리스프로젝트에 도전해보겠습니다!

 

그럼 지금부터 “RFID를 활용한 가위바위보 게임프로젝트를 소개하도록 하겠습니다.

 

이번 프로젝트의 큰 흐름은 다음과 같습니다.

 

1. RFID를 이용하여 아두이노와 연결한 RFID 판독기가 RFID 태그 또는 카드를 잘 인식하는지 확인하기!

2. RFID를 이용한 가위바위보의 알고리즘을 생각하고 그것을 프로그래밍으로 구현하기!

3. LCD 모니터를 활용하여 가위바위보 결과를 출력하기!

4. 이후 다양한 가위바위보 미션들을 추가하며 즐겁게 즐기기!

 

이 세 가지의 과정에 따라 이번 프로젝트는 진행이 되었습니다.

 

프로젝트를 시작하기에 앞서 이번 프로젝트에 필용한 준비물들을 한번 알아보겠습니다.

 

준비물 : 아두이노 우노, 브래드 보드, RFID 태그(3), RFID 카드(3), RFID 판독기(RFID-RC522), LCD, 케이블, 외부전원

 

 





 

201311월 게시되었던 “RFID를 이용한 효율적인 출석체크 시스템 만들기에서 사용한 RFID 판독기와 카드, 태그와 이번 프로젝트에서 사용한 RFID 세트는 다소 차이가 있으니 잘 구분하여 사용해주기 바랍니다.

 

RFID에 대한 설명은 http://makethat.tistory.com/29 에 잘 나와 있으니 이 글을 참고하셔도 좋을 것 같습니다!

 

그럼 먼저, RFID 판독기가 RFID 카드와 태그를 인식할 수 있도록 구현해보도록 하겠습니다. 하드웨어를 구성하기 위해 브레드보드, RFID 판독기와 LCD, 아두이노 우노, 외부전원을 준비해 다음의 회로를 참고하며 하드웨어를 구성하였습니다.


하드웨어를 구성할 때에는 RFID3.3V에 꽂는 것을 주의해 주시기 바랍니다.

다음의 회로에서는 LCD 백라이트를 더 밝게 하기 위하여 외부전원을 LCD에 연결하였다는 점도 숙지해주시기 바랍니다.

 

회로도에 따라 하드웨워를 모두 구성하였으면 카드와 태그를 인식하여 각각의 고유 핀번호를 알아내야 합니다.




 

각각의 핀번호를 알아낸 것을 기록을 하였으면, 다음으로는 가위바위보의 알고리즘을 생각하여 프로그래밍을 진행하여야 합니다.

 

저희가 고안한 가위바위보 알고리즘은 다음과 같습니다!



그림을 참고하여 설명하염 보면 배열을 만들어서 가위 바위 보에 각각 숫자를 넣은 다음에 그것들의 차를 계산해서 승 패를 가리는 알고리즘을 생각해보았습니다.

 

알고리즘을 세우는 이 단계에서는 프로그래밍을 하는 여러분들의 다양한 아이디어들이 나올 수 있다고 생각되니, 자신만의 알고리즘을 세우는 것도 좋을 것 같습니다.

 

계획한 알고리즘에 따라 프로그래밍을 진행할 차례입니다. 지금까지 갈고 닦아온 자신의 코딩실력을 어김없이 보여주세요!

 

본 프로젝트에서 짠 코드는 밑에 참조하였습니다.

프로그래밍을 할 때에는 결과를 LCD를 통해 출력하는 부분까지 고려를 하여 진행하여야 합니다.

 



 

다음 사진처럼 LCD 모니터에 결과가 잘 출력되는지를 확인을 하였으면, 게임의 결과에 따라 다양한 벌칙이나 미션들을 진행함을 통해 게임을 즐겨주세요!!

 



 

혹시 소스코드가 궁금하신 분은 올려드리도록 하겠습니다. (AddicoreRFID Library가 필요합니다.) Addicore RFID quickstart의 예제를 가져와서 가위바위보 알고리즘과 LCD 화면 출력 코드를 넣었습니다.

 

출처 : 아두이노 UNO : arduino.cc

RFID : addicore.com

Battery : 구글 검색 battman.co.kr

LCD : 구글 검색 miniinthebox.com

가위바위보 손그림 : 구글 검색 kensaku.tistory.com


<code>

#include <AddicoreRFID.h>

#include <SPI.h>

#define uchar unsigned char

#define uint unsigned int

#include <LiquidCrystal.h>

 

uchar serNumA[5];

uchar fifobytes;

uchar fifoValue;

 

AddicoreRFID myRFID;

 

const int chipSelectPin = 10;

const int NRSTPD = 5;

 

#define MAX_LEN 16

 

LiquidCrystal lcd(3,4,6,7,8,9);

 

int A[2] = {6,12};

 

void setup() {

lcd.begin(16, 2);

Serial.begin(9600);

SPI.begin();

pinMode(chipSelectPin,OUTPUT);

digitalWrite(chipSelectPin, LOW);

pinMode(NRSTPD,OUTPUT);

digitalWrite(NRSTPD, HIGH);

lcd.clear();

myRFID.AddicoreRFID_Init();

}

 

void loop() {

int count = 0;

uchar i, tmp, checksum1;

uchar status;

uchar str[MAX_LEN];

uchar RC_size;

uchar blockAddr;

String mynum = "";

 

str[1] = 0x4400;

status = myRFID.AddicoreRFID_Request(PICC_REQIDL, str);

if (status == MI_OK) {

Serial.println("RFID tag detected");

Serial.print(str[0],BIN);

Serial.print(" , ");

Serial.print(str[1],BIN);

Serial.println(" ");

}

status = myRFID.AddicoreRFID_Anticoll(str);

if (status == MI_OK) {

checksum1 = str[0] ^ str[1] ^ str[2] ^ str[3];

Serial.println("The tag's number is : ");

Serial.print(str[0]);

Serial.print(" , ");

Serial.print(str[1],BIN);

Serial.print(" , ");

Serial.print(str[2],BIN);

Serial.print(" , ");

Serial.print(str[3],BIN);

Serial.print(" , ");

Serial.print(str[4],BIN);

Serial.print(" , ");

Serial.println(checksum1,BIN);

if(str[0]==35) A[0] = 1;

if(str[0]==83) A[0] = 2;

if(str[0]==164) A[0] = 3;

if(str[0]==149) A[1] = 1;

if(str[0]==180) A[1] = 2;

if(str[0]==84) A[1] = 3;

Serial.println(A[0]);

Serial.println(A[1]);

delay(1000);

}

if((A[1]-A[0])==1) {

lcd.print("card Win");

count = 1;

}

if((A[1]-A[0])==-1){

lcd.print("tag Win");

count = 1;

}

if((A[1]-A[0])==2){

lcd.print("tag Win");

count = 1;

}

if((A[1]-A[0])==-2){

lcd.print("card Win");

count = 1;

}

if((A[1]-A[0])==0){

lcd.print("draw");

count = 1;

}

if(count ==1){

while(1);

}

delay(1000);

myRFID.AddicoreRFID_Halt();

}

 


Posted by 황교석 트랙백 0 : 댓글 0

댓글을 달아 주세요

작성자 : 정진우, 정찬우

안녕하세요? 지난번 개봉기에 이어  제작기를 쓰겠습니다.

개봉기에 사용한 모델은 Blue-Kit이었지만 이번 제작기에 사용하는 Gold-Kit입니다. 체험단에서 받은 제품은 Blue 모델이였지만 부품이 하나 안와서 같이 구매한 Gold버젼으로 작업 내용을 올립니다. 


다른 아크릴 판과 베터리박스도 조립합니다,(건전지 꼭 넣으세요)


아크릴판에 붙어있는 종이는 원래 벗겨야하는데 이미 조립해서 그냥 계속 만들었어요


근데 상관없어요.



그다음 두 개를 붙입니다.


모터를 연결하겠습니다. 모터를 뺄 때 아래에서 눌러서 빼는게 편합니다. 너무세게 누르면 튀어나가니 조심하세요.


그다음 이렇게 조립하세요.


이제 바퀴를 붙이는데


이 대가리 없는 나사는 크기가 작아서 잃어버리지 않게 조심하세요.

 이 나사를 모터에 꽂기 전에 원형판에 끼워야 나중에 편합니다.

모터의 평평한 부분에 나사가 닿게 하세요.


두 모터에 바퀴를 연결하고 다른 모서리에도 바퀴를 달아줍니다.


플라스틱인 줄 알았는데 고무인 케터필러. 40개가 들어있다고 20개씩하면 그냥 빠져요. 18개 쓰세요.



처음부분에 조립한 베터리박스와 베이스보드에 초음파센서를 달아줍니다.(무슨 거북이 같네요)


본체와 바퀴를 조립하고 전선을 연결하면 끝!



아직 코드를 안 넣어서 주행영상은 나중에 올리겠습니다.

설명서를 보시면서 하면 큰 어려움 없이 완성하실 수 있습니다.

"본 제품은 아이씨뱅큐 무상체험단 18기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

Posted by 원두커피믹스 트랙백 0 : 댓글 0

댓글을 달아 주세요

1, 2학년 동아리 학생들이 팀을 이루어 모두 참가하였고 최종 예선에는 2팀이 참가했지만, 아쉽게도 1팀만 입상하였습니다. 내년에는  최우수상을 꼭 수상하기를 기원합니다.^^

캔위성 대회 및 수상 관련 자료는 아래의 미래창조과학부의 보도자료로 대체합니다.











Posted by 수아기 트랙백 0 : 댓글 0

댓글을 달아 주세요

작성자: 1학년 이승주

안녕하세요? Makeblock Starter Robot Kit V 2.0의 체험단으로 선정된 경기북과학고등학교 동아리 SADA입니다!

그럼 개봉기를 시작하겠습니다!!


학교에서 해외 이공계 체험을 갔다가 돌아오니 동아리실에 이런 설레이는 상자 하나가 도착했네요..

Makeblock 이라고 선명하게 새겨진 상자! Blue Kit 답게 상자도 파랑색으로 왔습니다~

위의 사진에서는 상자가 생각보다 작아보이지만 생각보다 큽니다.


이렇게 말이죠. 100원짜리랑 비교해봤을 때 이정도 크기를 가지고 있네요.

생각보다 큰 상자에 기대감이 더욱 커지는 군요! 내용물은 어떨지...ㅎ


상자 옆면에는 사진과 같이 바코드 하나가 붙어 있습니다. 이 상자는 90004번 이네요.. 그만사라는건 아니겠죠?ㅋㅋ


드디어 상자를 열어보았습니다! 박스 맨 위에는 설명서가 동봉되어 있습니다.


설명서 첫 장에는 부품들의 목록이 있습니다. 부품들이 상당히 많네요! 곧 조립 할 수 있을거라는 생각에 손이 근질근질 하군요 ㅎㅎ


드디어 모습을 드러내는 부품들!! 100원짜리와 비교해 봤을 때 로봇 바퀴가 꽤 크네요..

근사한 로봇이 될 것 같습니다!



상자는 2단으로 되어 있습니다. 위쪽에는 보드 등 전자 기기들이 대부분이고, 밑 쪽에는 몸체에 관련된 부품이 대부분 입니다!



부품을 다 꺼낸 후의 모습입니다. 이 많은 부품들을 이제 부품 목록과 비교해서 살펴봐야죠..?


아뿔사! 이 아크릴 판이 2개가 와야하는데 1개 밖에 안왔네요.. 소중히 다뤄야 할 것 같습니다ㅎㅎ


Starter Kit 라고해서 작은 로봇일 줄 알았는데 생각보다 크기도 크고 세련미(?)가 돋보이는 부품들이었습니다. 어서 개봉기를 마치고 조립해서 완성된 모습을 보고싶네요ㅎㅎ


그럼 이상으로 Makeblock Starter Robot Kit V 2.0의 개봉기를 마치겠습니다! 다음은 조립 혹은 미션 수행으로 찾아뵙겠습니다~


"본 제품은 아이씨뱅큐 무상체험단 18기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."



Posted by Lee승주 트랙백 0 : 댓글 0

댓글을 달아 주세요

Codebender(코드 밴더)

2014.09.30 00:16 from Others
 웹에서 다양한 언어를 사용하고 컴파일 하고 하는 Web IDE는 이미 충분히 많다. 국내에서도 서비스를 시작한 곳도 있고 오늘 소개할 곳은 아두이노 코드를 직접 작성하고 컴파일 하고 아두이노에 업로드할 수 있는 Codebender라는 것이다. 이 사이트가 사라지지 않는한 예제를 이런 식으로 배포하는 것도 커다란 장점으로 작용할 것이다. 물론 http://123d.circuits.io/ 처럼 브레드 보드나 시뮬레이션을 제공하지는 않지만 나름 만족스러운 결과를 보여준다. 무엇보다도 다양한 라이브러리를 자체적으로 지원해주고 더욱 재미있는 것은 크롬의 플러그인을 설치하면 시리얼 포트를 통해 바로 업로드가 가능하다는 점이다. 물론 아두이노 IDE도 매력적이지만 이것도 나쁘지 않은 느낌을 준다. 사이트는 https://codebender.cc/    가입 후 자신의 코드를 작성하고 쉽게 그 결과를 공유할 수 있다. 아래그림은 iframe으로 삽입한 것이며, 자체적인 url을 공유할 수 도 있다. 무엇보다도 코드를 보여주기가 싶고 실행까지 할 수 있으니 나름 매력적으로 다가온다.^^ 
관심있는 분들은 한번 써보기를.




 


Posted by 수아기 트랙백 0 : 댓글 0

댓글을 달아 주세요

2014학년도의 1학기가 마무리 되고, 그간 동아리에서 산출된 여러가지 결과물을 가지고 과학 동아리 활동 발표 대회에 참여하였고 그 최종 결과는... 경기도 은상을 수상하였습니다.^^ 비록 전국대회에는 나가지는 못했지만 고생한 모든 구성원들에게 감사의 마음을 전합니다.





Posted by Lee승주 트랙백 0 : 댓글 2

댓글을 달아 주세요

  1. addr | edit/del | reply 전호진 2014.11.05 22:32

    정말 축하드려요!!
    저희 동아리가 이렇게 발전해가는 모습이 정말 보기 좋군요!

    • addr | edit/del 수아기 2014.11.06 14:24 신고

      호진이가 많이 도와주어서 가능한 일이였겠지. 너희의 노력이 동아리의 발전을 가져오니 지금 보다 더 신경써주면 고맙겠구나.

글쓴이: 정찬우

캔위성 후기

 

카이스트 인공위성연구센터가 주최하고 한국항공우주연구원이 후원하는 캔위성 대회에 참가하였다. 대회 전날에 카이스트에서 제공한 고흥 시내의 한 모텔 같은 호텔에서 숙박하며 캔위성을 점검하는 시간을 가졌다.

(모텔 같다...)


그리고 소소한 기념품으로 사진에 있는 캔위성 대회 로고가 박힌 티셔츠수건쿨팩을^^



숙소에 도착한 뒤 저녁식사

메뉴는 돼지고기 주물럭,

선배님.. 감수성 넘치게 드시고 계신다.


대회 당일에 지평선이 보일 정도로 넓은 논들 한복판에 있는 고흥항공센터에서 공들여 준비한 캔위성을 로켓에 실었다.


카운트다운을 하고 로켓이 쏘아졌다.


귀가 아플 정도로 굉음을 내며 위로 솟았고 몇 초 안되어 보이지도 않았다.

시야에 먼저 들어온 것은 낙하산을 매달고 내려오는 분리된 로켓이었다.

낙하산 크기만도 꽤 됐던 캔위성은 눈을 가늘게 뜨지 않으면 보이지 않을 정도로 높이 있었다.

 

몇 분이 지나 내려오는 캔위성을 바라 볼 때 그저 멀리서 멍하니 있었다.

거의 다 내려오는 캔위성이 보면서 드는 생각은 저걸 회수를 어떻게 하지?’였다.

처음에는 강 쪽으로 날아가지 않아 잠깐 안심했지만 시간이 지날수록 더 멀어져가는 위성을 보면서 허탈한 감정까지 들었다.

수십 분을 돌아다닌 끝에 캔위성을 찾았지만 바로 회수하지 못했다.

거의 논 한가운데에 떨어져 발만 동동 굴리다가 결국엔 지도교사인 박종화 쌤이 논으로 들어가 꺼내오셨다.

다른 캔위성도(우리 동아리에서 2팀 참가바로 옆 논에 떨어져 있어 바로 꺼내올 수 있었다.

 

너무 찾기만 했나 보다... 사진을 못 찍었네...

 

맨 처음 발사해서 다 회수하고 난 뒤에도 한참을 기다려야 했다.

스마트폰을 붙잡고 시간을 죽여도 시간이 남을 정도로 지루하게 보냈다.

 

모든 일정이 끝나고

집으로 돌아가려는데 서울로 가는 표가 전부 매진되서 순천으로 돌아서 가야 했다.

 

집으로 가는 길... 감수성 넘치는 선배님은 뻗으셨다.


여러가지 기상 악조건으로 만족스러운 결과는 못 얻었지만

 

정말 좋은 경험이었다.



Posted by 김경만 트랙백 0 : 댓글 0

댓글을 달아 주세요

 Android ADT나 Eclipse와 같은 Android Application 개발용 IDE를 설치하고 나서는 가장 먼저 개발한 앱을 디버깅할 수 있는 환경을 구축해야 합니다. AVD를 이용해 데스크탑에서 가상으로 안드로이드 시스템을 돌릴 수도 있고, 실제 안드로이드 디바이스와 연결하여 디버깅하는 것도 가능합니다. 이 두가지의 방법 모두 장단점이 있으며, 실제 디바이스에서의 구동이 에뮬레이터에 비해 속도가 빠릅니다. 이 글에서는 두 방법 모두 소개하도록 하겠습니다.


1) AVD(Android Virtual Device)를 이용해 데스크탑 환경에서 안드로이드 에뮬레이터 구동


AVD를 이용하면 해상도, 안드로이드 펌웨어 버전, 메모리 용량, 주변 기기

유무 등을 자신이 원하는 대로 설정할 수 있습니다. 모든 종류의 실제 디바이스에서 테스트를 해보는 것이 가장 확실한 방법이지만, 그럴 수가 없는 경우에는 AVD를 이용하여 여러 옵션의 기기에서 가상으로 어플리케이션을 테스트해 볼 수 있습니다. 물론 가상머신 위에서 안드로이드 OS를 돌리는 것이기 때문에 속도 면에서는 실제 기기에 비해 상당히 느립니다.

ADT든 Eclipse든, 상위 탭을 보면 이렇게 생긴 아이콘이 있습니다. 혹은 메뉴의 Windows 탭에서 Android Virtual Device Manager를 클릭해도 관련 화면으로 진입할 수 있습니다. 

이렇게 띄워진 화면에서 선택되어있는 Android Virtual Devices 탭을 보면 오른쪽에 New... 버튼이 있습니다. 

버튼을 누르면 이렇게 새로운 창이 하나 더 뜨게 됩니다. 이곳에서 AVD의 이름, 프리셋, 안드로이드 버전, 카메라 유무, RAM 크기, 내장메모리 크기 등의 여러 옵션을 설정할 수 있습니다. 

또한 아까의 화면에서 두 번째 탭인 Device Definitions를 선택하면 직접 기기 프리셋을 만들고 저장하여 사용할 수 있습니다. 자신만의 설정을 계속 사용하고 싶을 때 유용히 쓸 수 있는 기능입니다. 기본적으로는 구글의 레퍼런스 제품들의 설정이 들어가 있습니다.

다시 첫 번째 탭으로 돌아와서, 자신이 생성한 Virtual Device를 Run하면 이제 안드로이드 OS를 시뮬레이팅할 수 있게 됩니다. Launch Options에서는 실제 기기 해상도를 몇 %비율로 모니터에 표시할 것인지 설정할 수 있습니다. 모니터 해상도보다 기기의 해상도가 높으면 화면이 모니터 밖으로 삐져나갈 수 있기 때문에 주의해야 합니다. 


Launch 후에는 Android가 부팅될 때까지 상당히 오랜 시간을 기다려야 합니다. (이 때문에 AVD를 이용하여 테스트할 경우에는 한번 AVD를 켜놓고 끄지 않는 것을 추천합니다.)


부팅이 완료되고 나서는 Android 기본 테마의 홈 화면을 볼 수 있습니다. 이것으로 AVD를 사용할 수 있게 되었습니다.

실제 개발중에 AVD에서 앱을 구동하고 싶으면 Ctrl+F11을 누르면 앱 컴파일과 함께 AVD에서 자동으로 실행됩니다.


2) 실제 디바이스를 연결하여 앱 테스트

물론 실제 Android 디바이스를 연결하여 앱을 실행할 수 있습니다. AVD에 비해 훨씬 빠른 속도와 실제 기기에서 앱이 어떻게 돌아가는지 볼 수 있는 것이 장점입니다. 


먼저 연결할 디바이스의 제조사 USB 드라이버를 설치해야 합니다.


드라이버가 설치된 이후에는 디바이스의 설정에서 개발자 옵션 - USB 디버깅 모드를 체크하여 활성화합니다.


이후 컴퓨터에 디바이스를 연결하고 Eclipse를 구동시킵니다. 

그리고 코드 화면에서 Ctrl+F11을 누르면 디바이스 선택 창이 나오는데, 여기서 Choose a running Android device를 선택하면 실제 디바이스에서 안드로이드 앱이 구동됩니다.

 

'Android > Android App 개발' 카테고리의 다른 글

Android App 개발 기초 (2) - App 실행하기  (1) 2014.04.10
Android App 개발 기초(1) - Eclipse  (0) 2013.12.29
Posted by 비회원 트랙백 0 : 댓글 1

댓글을 달아 주세요

  1. addr | edit/del | reply PinkWink 2014.05.12 08:19 신고

    오호 잼미있는 이야기네요 ㅎ 나중에 저녁쯤에 전화를 드리겠습니다