본문 바로가기

Others

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

캔위성 경연대회를 다녀와서 - 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줄로 낙하산과 캔위성을 연결하였습니다. 이를 위해 다음 사진과 같은 아크릴판을 제작하였습니다.

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

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

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