우주을 떠도는 탁구공들의 비행

2014년 9월 27일 JP 에어로스페이스(JP Aerospace)온 2,000개의 탁구공 실험실을 지구와 우주의 경계선으로 날려보낼 것입니다.

이 탁구공들의 이름은 퐁샛(PontSats)입니다. 전 세계의 학생들이 자신이 만든 퐁샛을 우리에게 보내면 우리는 이 탁구공들을 기상 관측용 풍선에 실어 지구로부터 약 30km 상공까지 날려보냅니다. 그 후 풍선은 분리되면 퐁샛이 들어있는 낙하산은 지구로 돌아옵니다. 착륙을 마친 탁구공들은 이 비행에서 얻은 데이터와 함께 제작자들에게 돌아가게 됩니다.

저는 항상 사람들이 퐁샛 안에 집어 넣은 것 때문에 정말 당황스러웠습니다. 사람들은 식물 씨앗처럼 간단한 프로젝트부터 상부의 대기 연구소 전체만큼 복잡한 프로젝트까지 우리에게 보내줬습니다. 제가 가장 좋아하는 퐁샛은 마시멜로입니다. 탁구공 안에 마시멜로를 넣으면, 30km 상공에서는 마쉬멜로우가 부풀어올라 공 안을 가득 채웁니다. 그리고는 그 상태로 얼어 딱딱해지지요. 이 탁구공이 학생에게 돌아갔을 때면 그 학생은 대기의 가장 위쪽을 여행한 결과물을 볼 수 있답니다.

다음 발사는 네바다 주의 블랙록 사막으로 예정되어 있습니다. 우리는 1년에 16번까지 연구 임무를 위해 발사를 합니다. 그리고 매번 퐁스탯을 위해 공간을 마련하고, 학생에게는 무료로 제공합니다. 퐁스탯을 운반하는 비행선의 이름은 하이랙(High Rack)인데, 우리 비행선 중 하나가 세계에서 가장 높은 고도까지 올라간 비행신 기록을 6.5km 갱신했습니다. 이 비행선은 발사대에서 30~300km 내 시에라 네바다 산맥 어딘가 착륙하는데, 저희는 4륜 차량으로 비행선을 수거해야 합니다.

JP 에어로스페이스는 전체가 자원봉사로 운영되는 DIY 우주 프로그램입니다. 지난 8년간 우리는 14,000개의 퐁샛을 연구 비행선에 실어 높이 날려보냈고, 최근에는 다음 9월 임무에 필요한 기금을 모으기 위해 킥스타터 캠페인도 시작했답니다.

출처 http://makezine.com/2014/04/10/pongsats/

Posted in 재미있는 프로젝트 | Tagged , |

종이로 아두이노 만들기

페이퍼듀이노(Paperduino)페이퍼듀이노 레오나르도(Paperduino Leonardo)의 뒤를 페이퍼듀이노 타이니(Paperduino Tiny)가 따라갑니다. 페이퍼듀이노 타이니는 Atiny85 마이크로 컨트롤러를 중심으로 제작된 저렴한 아두이노 호환 보드로, 아마 $4 정도면 모두 조립할 수 있을 것입니다. 아두이노랑 뭐가 다르냐고요? 이름에서 짐작할 수 있듯이 페이퍼듀이노는 종이로 만들어졌습니다.

더 많은 정보는 페이퍼듀이노 위키에서 찾을 수 있습니다. 단계별 설명과 전체 부품 목록도 있네요.

사양
아두이노 IDE 1.0 이상 지원
USB 또는 5V 외장 전원
내장 USB(시리얼 디버깅)
6개의 입출력 핀(프로그램이 USB를 통해 동적으로 통신한다면 2개의 핀은 USB 전용으로 사용해야 하며, 그게 아니라 USB를 통해 프로그래밍을 한 경우 6개 전부 사용할 수 있다)
8k 플래시 메모리(부트로더 프로그램을 제외하면 약 6K)
I2C와 SPI (USI)
PWM 핀 3개(소프트웨어 PWM으로 더 많은 수 사용 가능)
ADC 핀 4개
전원 LED 및 테스트/상태 LED(1번 핀)

(출처 Instructables)

원문링크 http://makezine.com/2014/04/04/building-an-arduino-out-of-paper/

Posted in 재미있는 프로젝트 | Tagged , |

세계 최초의 오픈 소스 노트북이 데뷔합니다

노베나 노트북

세계가 오픈 소스 노트북을 원하게 될까요? 곧 알게 될 겁니다.

bunnie Huang과 Xobs로 이루어진 하드웨어/소프트웨어 팀이 해킹이 가능한 휴대용 컴퓨터인 Novena를 크라우드펀딩 사이트인 Crowd Supply의 후원자들에게 제공한다고 합니다. 프로젝트와 관련해 bunnie가 MAKE에 남긴 글에도 많은 관심이 있었죠. 제작팀은 프로젝트에 대해 다음과 같은 이야기를 했습니다.

우리가 만든 기계는 심장이 멈출 정도의 물건은 아닙니다. 오픈 소스 프로젝트인만큼 이 장치가 주는 기쁨(그리고 실망)이 앞으로 더 좋아질 것이라는 데에 의의를 둡니다. 아마 이 노트북은 스크류드라이버와 함께 배송되는 유일한 노트북이 될 것입니다. 여러분은 배터리를 직접 설치하고, 여러분이 고른 LCD 베젤에 나사를 돌려 넣어야 합니다. 그리고 스피커는 키트 형태로 들어있으니 3D 프린터를 사용할 수 있다면 우리가 디자인한 스피커 박스를 쓸 필요는 없습니다. 직접 스피커 박스를 만들어도 됩니다.

그들은 노트북을 세 가지 버전으로 제공합니다. “올인원 데스크탑”은 $1,195에 판매하며, 좀 더 튼튼한 버전을 $1,995에, Kurt Mottweiler가 나무와 알루미늄으로 마감한 “가보(heirloom)” 모델은 $5,000에 구할 수 있습니다.

앞의 두 모델은 스크린이 위쪽을 향해 매립되어 있습니다. 이 덕분에 스크린을 닫으면 벽걸이 모니터로 쓸 수 있을 뿐만 아니라 일반 노트북의 내부는 키보드로 덮여 있기 때문에 해킹하기가 어려웠던 문제를 해결했다고 하네요.

bunnie와 Xobs는 기판만 별도로 500$에 판매하고 있습니다. 메인보드는 AQS에서 제조했다고 하네요.

가보

오늘까지 프로젝트는 $200,785를 모금했으며 목표인 $250,000 까지는 20일이 남았습니다. 네 명의 후원자가 벌써 가보 모델에 후원을 했군요.

어떤신가요. 메이커와 해커 여러분. 여러분도 하나 사서 직접 만들어 보고 싶나요?

원문링크 http://makezine.com/2014/04/02/the-worlds-first-open-source-laptop-makes-its-debut/

Posted in 재미있는 프로젝트 | Tagged , |

유용한 아두이노 함수들

아두이노

유용한 아두이노 함수 몇 가지를 여기에 소개합니다.

LED 깜박이기
LED를 요청한 빈도와 횟수만큼 깜박이는 함수입니다.


void blinkLED(byte targetPin, int numBlinks, int blinkRate) {
  for (int i=0; i < numBlinks; i++) {
    digitalWrite(targetPin, HIGH);
    delay(blinkRate);
    digitalWrite(targetPin, LOW);
    delay(blinkRate);
  }
}

숫자 깜박이기
과거 컴퓨터를 사용하기 시작한 지 얼마 안 된 시절에는 고장이 생겼을 때 사용자에게 오류가 발생했다는 것을 알릴 수 있는 유일한 수단이 불빛을 깜박이는 것밖에 없을 때도 있었습니다. 마이크로 컨트롤러 작업을 할 때에는 이 불빛이 유용할 때도 있습니다. 다음 함수는 LED를 연속적으로 깜박여서 숫자를 눈에 보이게 표현할 수 있지요.

void blinkNumber(char* numString) {
    int versLength = strlen(numString);
    delay(200);
    for (int i =0 ; i < versLength; i++) {
      int number = numString[i] -48;
      if (number == 0){
        blinkLED(LED_A,1,20);
        delay(160);
      }
      if (number > 0 && number < 10) blinkLED(LED_A,number,200);
      delay(400);
    }
}

버저 울리기
특정 주파수의 소리를 듣고 싶을 때마다 머리 아프게 수학 계산할 필요 없이 피에조 버저를 활용할 수 있게 도와주는 함수입니다. 여러분은 함수에 어떤 핀을 사용할 것인지, 어쩐 주파수의 소리를 듣고 싶은지, 그 주파수를 얼마나 길게 재생할 것인지 알려주기만 하면 된답니다.


void buzz(int targetPin, long frequency, long length) {
  long delayValue = 1000000/frequency/2;
  long numCycles = frequency * length/ 1000;
  for (long i=0; i < numCycles; i++){
    digitalWrite(targetPin,HIGH);
    delayMicroseconds(delayValue);
    digitalWrite(targetPin,LOW);
    delayMicroseconds(delayValue);
  }
}

사용 가능한 램 크기 확인하기
ATmega328의 프로그램 메모리는 32K지만 SRAM 크기는 2K밖에 되지 않습니다. 프로그램 메모리는 코드를 저장하는 공간이고 램은 코드가 사용하는 변수를 동적으로 저장하는 공간입니다. 실질적으로 사용할 수 있는 램의 용량은 2K보다 훨씬 적은데, 아두이노 라이브러리가 자체적으로 어느 정도의 메모리 공간을 차지하기 때문이지요.

설령 프로그램이 마이크로 컨트롤러의 SRAM 용량을 넘어서더라도 아두이노 개발 환경에서는 문제없이 컴파일이 가능합니다. 하지만 프로그램이 전혀 예측하지 못한 방향으로 동작하고, 코드가 이상하게 동작하거나 충돌할 수도 있습니다. 이 함수는 현재 사용 가능한 SRAM 용량을 반환할 것입니다.

int memoryTest() {
  int byteCounter = 0;
  byte *byteArray;
  while ( (byteArray = (byte*) malloc (byteCounter * sizeof(byte))) != NULL ) {
    byteCounter++;
    free(byteArray);
  }
  free(byteArray);
  return byteCounter;
}

큰 숫자 매핑하기
이 함수는 큰 양수에도 사용할 수 있는 map 함수라고 볼 수 있습니다. 음수는 사용할 수 없어요.

long mapBig(unsigned long x, unsigned long in_min, unsigned long in_max,
            unsigned long out_min, unsigned long out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

와이파이 연결하기
신형 아두이노 와이파이 실드는 아주 괜찮은 보드입니다. 그러나 여러 종류의 네트워크를 다루기는 까다로운 일이지요. 다음 코드는 SSID가 ssid 변수에 저장된 값과 같고, 암호가 pass 변수에 저장된 값과 일치하는 암호화된 WPA/WPA2 와이파이 네트워크에 접속을 시도할 것입니다. 그러나 만약 설정한 네트워크를 찾지 못하면, 공개 와아파이 네트워크를 찾기 시작하지요.


    if (WiFi.status() == WL_NO_SHIELD) {
      Serial.println("WiFi shield not present");
      while(true);
    }   

    if ( stringFromCharString(ssid) != "" ) {
       while ( status != WL_CONNECTED) {
         timesWeTriedToConnect++;
         Serial.print(F("Attempting to connect to SSID (attempt "));
         Serial.print( timesWeTriedToConnect );
         Serial.print(F(" of 5): "));
         Serial.println(ssid);
         status = WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network.
         delay(2000);
         if ( timesWeTriedToConnect >= 5 ) break;
       }
    }
    if ( status != WL_CONNECTED ) {
       Serial.print("Unable to connect to ssid '");
       Serial.print( ssid );
       Serial.println( "'");
       Serial.println("** Scanning for open networks **");
       byte numSsid = WiFi.scanNetworks();
       Serial.print("number of available networks:");
       Serial.println(numSsid);
       for (int thisNet = 0; thisNet

EEPROM에 읽고 쓰기
아두이노의 EEPROM에 숫자나 기타 데이터를 저장해 전원이 끊어졌을 때에도 데이터를 저장하는 기능이 쓸모 있을 때도 자주 있습니다. 내장 EEPROM 라이브러리를 사용하면 아주 쉽게 EEPROM에 숫자를 기록할 수 있지요.

void setNumber(unsigned long ctr) {

   Serial.print("Setting number in EEPROM to = ");
   Serial.println( ctr );
   EEPROM.write(4,(ctr & 0xFFFFFFFF) >> 24); // MSB 기록
   EEPROM.write(3,(ctr & 0xFFFFFF) >> 16); // 3rdB 기록
   EEPROM.write(2,(ctr & 0xFFFF) >> 8); // 2ndB 기록
   EEPROM.write(1,ctr & 0xFF); // LSB 기록
}

기록한 숫자는 다음 함수를 사용해 다시 읽을 수 있습니다.


unsigned long getNumber() {
   unsigned long ctr;

   //숫자 초기화
   if (EEPROM.read(5) != 1) { 

      // 저장 상태가 false일 때
      Serial.println("Initializing number in EEPROM");
      EEPROM.write(1,0); // LSB 0을 기록
      EEPROM.write(2,0); // 2ndB 0을 기록
      EEPROM.write(3,0); // 3rdB 0을 기록
      EEPROM.write(4,0); // MSB 0을 기록
      EEPROM.write(5,1); // 저장 상태를 true로 설정
   }

   //바이트를 더해 32비트 숫자를 알아낸다
   ctr = (EEPROM.read(4) << 24) + (EEPROM.read(3) << 16) + (EEPROM.read(2) << 8 )
   + (EEPROM.read(1));
   Serial.print("Getting number from EEPROM = ");
   Serial.println( ctr );
   return ctr;
}

이 게시물의 코드는 롭 팔루디(Rob Faludi)알라스데어 앨런(Alasdair Allan)이 제공한 것입니다. 두 사람의 동의를 얻어 MAKE 사이트에 게시했습니다. 원본 게시물은 2013년 5월 13일에 게시된 것입니다.

원문링크 http://makezine.com/2014/03/24/arduino-helper-functions-2/

Posted in 재미있는 프로젝트 | Tagged , |

아두이노를 사용한 크라우드펀딩 캠페인들

오픈 소스 플랫폼으로서 아두이노가 누리는 인기는 많은 애드온과 변형 기판이 만들어지는 데 큰 영향을 주었습니다. 그 중 아주 흥미로운 캠페인 몇 가지를 여기에 소개하고자 합니다. 킥스타터(Kickstarter)의 메이크 페이지에서 지나간 프로젝트와 현재 프로젝트를 더 확인해 보세요.

SKIRMOS(아두이노 레이저 태그)

오픈 소스 레이저 태그 게임. LCD 스크린이 내장된 총을 함께 제공하는데, 이 총은 총알의 움직임, 킬과 데스뿐만 아니라 게임 타이머와 목표 달성 여부까지 추적할 수 있습니다. 여기에 사운드 카드와 스피커, 그리고 빠지면 섭섭한 멋진 내장 LED까지 달려 있습니다. 이 총은 ATmega 328p를 사용하는데, 이는 아두이노에 사용된 칩과 똑같은 마이크로 컨트롤러랍니다. 멋진 가능성으로 충만하네요!

오픈 소스 에니그마(Enigma) 레플리카

오픈 에니그마 프로젝트(Open Enigma Project)의 목표는 2차 세계 대전에서 사용된 역사적인 암호 해독기의 복제품을 아두이노를 사용해 제작하는 것입니다. 이 기계는 아두이노 메가를 사용해 정보를 암호화/복호화는데, 진품이 기어와 바퀴를 사용했던 것과는 달리 소프트웨어만 사용합니다. 이 기계를 사용하면 역사에서 독일군이 사용했던 암호를 실제로 풀어볼 수도 있답니다!

SHIELD I/O(비글본용 아두이노 실드)

인디고고에서 크라우드 펀딩 캠페인을 진행하고 있는 Shield I/O는 비글본 블랙(BeagleBone Black)에 모든 표준 아두이노 실드를 끼울 수 있도록 헤더가 달린 케이프(cape: 비글본용 확장 기판)입니다. 게다가, 이 케이프는 14개의 디지털 GPIO핀을 레벨 시프터로 무장했으며 디지털 입력에 3.3V나 5V를, 아날로그 입력에 최대 5V를 공급하는 것도 가능하지요. 하드웨어를 잔뜩 살 필요 없이 비글본 블랙 프로그래밍에 도전해 볼 수 있는 좋은 기회네요!

갬부이노: 아두이노 휴대용 게임 패드

인디고고의 갬부이노(Gambuino) 캠패인은 아주 작은 LCD와 버튼이 달린 신용 카드 크기의 소형 게임 패드가 주인공인 캠페인입니다. I2C 포트를 통해 최대 128개의 갬부이노나 팅커키트(Tinkerkit)와 같은 다른 I2C모듈을 데이지 체인 방식으로 연결할 수 있습니다.

마이크로뷰: OLED 디스플레이가 달린 칩 크기의 아두이노

깜직한 마이크로뷰 64×48 OLED 모듈 안에는 아두이노가 동작하는 ATmega328p 마이크로 컨트롤러가 담겨 있습니다. 마이크로뷰를 재미있게 사용한 사례를 많이 볼 수 있었는데, 특히 소형 가전 프로젝트가 재미있더군요. 노트북의 USB 포트에 꽂아 보조 모니터로 쓸 수 있다는 점에도 큰 관심이 가네요.

새로운 정보: 마이크로뷰에 관해서는 여기에서 더 알아볼 수 있습니다.

제스처알(GestureR): 아두이노용 동작 감지 모듈

제스처알은 아두이노용 동작 감지 모듈입니다. 이 모듈은 동작(4방향), 근접 정도, 주변광을 분간합니다. 이 모듈은 I2C를 이용해 아두이노와 통신하며 프로젝트 팀이 동작 가능한 예제를 준비해 두었다고 하네요.

듀얼 아두이노 엑스플로어보드(Dual-Arduino Xploreboard)

프로포타입 기판의 종결자가 나타났습니다. 엑스플로어보드는 두 개의 아두이노 마이크로, 풀사이즈 브레드보드, LCD 디스플레이, 8개의 스위치, 피에조 부저, 빛 센서, LED 디스플레이, 논리 컨버터, 포텐시오미터, 캐패시터 등으로 구성되었습니다. 간단히 말해 보든 전자부품이 하나의 패널 안에 들어있는 셈이지요. 취미 전자공학에 처음으로 발을 들여논 사람들을 가르칠 때 사용했던 옛날식 프로토타입 기판과 비슷하네요.

원문링크 http://makezine.com/2014/03/24/arduino-inspired-crowdfunding-campaigns/

Posted in 재미있는 프로젝트 | Tagged , |