[사진 1]



raspberry pi zero가 구하기도 힘들고, orange pi zero가 새로 나왔다고 해서 구매를 했는데 이제서야 왔네요.


일단 제가 생각한 orange pi zero의 장점은

  • 구하기 쉽다.  (강의해야 하는데 raspberry pi zero는 항상 재고가 없다)
  • wifi 내장으로 좀 더 쉽게 인터넷을 사용 할 수 있다.


그러나, 단점으로는

  • raspberry pi zero에 비해 자료가 부족하다.
  • 설치 과정에도 문제가 발생
    • 공식 자료 다운로드 링크가 깨짐 (2016년 12월 1일 현재)
    • 바이두 링크는 살아 있지만, 느리고 회원 가입해서 프로그램 설치해야 함
    • Armbian for orange pi zero를 사용했지만, 설치 후 wifi 접속 과정에 문제가 있어 많은 시간을 허비함
      • 구글에서 검색 된 자료에는 이전 버전에 대한 내용으로 이제는 그런 과정이 필요없으며, 제대로 되지도 않습니다.
      • nmcli dev wifi connect <ssid> password <password>
    • 발열이 심하다고 합니다.  그래서 조그마한 발열판을 붙였습니다.




설치 과정 - SD 카드 준비

  • SDFormatter 를 설치하고 TF 카드를 포멧합니다.
  • 옵션에서 Format Size Adjustment를 ON으로 변경하고 포멧을 합니다.

[그림 1]

[그림 2]





설치과정 - 부팅 및 기초 설정

[그림 3]

  • 터미널을 접속하면 아이디와 암호를 묻습니다.

    • 아이디: root

    • 암호: 1234

  • 로그인이 완료되면 바로 암호를 변경하도록 합니다.  기존 암호를 넣고 새로운 암호를 두 번 입력합니다.

  • 이어서 사용자 등록을 진행합니다.  아이디와 암호를 넣고 나머지 정보를 대충 입력합니다.

  • apt-get upgrade를 해서 최신 상태로 업데이트 합니다.

    • 저의 경우에는 에러가 납니다.

    • 다른 것을 처리하다가 다시 시도해서 성공했습니다.

[그림 4]

  • GPIO를 다루기 위해서 라이브러리를 설치합니다.

  • # git clone https://github.com/zhaolei/WiringOP 을 실행합니다.

  • 이후 [그림 5]와 같이 설치를 합니다.

[그림 5]



[그림 6]

  • WiringOP 설치가 완료되면 [그림 6]과 같이 표시 됩니다.


[그림 7]

  • [그림 7]과 [그림 8]과 같이 테스트 프로그램을 작성해봅니다.


[그림 8]



[그림 9]

  • [그림 9]처럼 컴파일이 완료되면, ./blink를 실행합니다.
    • [사진 1]과 [사진 2]처럼 LED가 깜박이게 됩니다.

[사진 2]





혹시나 WiringOP 저장소가 또 사라질 지 몰라서 현재 버전을 파일로 올려둡니다.

WiringOP-h3.zip


저작자 표시 비영리 변경 금지
신고

'프로그래밍 > Arduino & IoT' 카테고리의 다른 글

Orange Pi Zero 사용 후기  (0) 2016.12.01
미아 방지기 만들기  (0) 2016.10.06
스스로 시간을 맞춰주는 인터넷 시계  (0) 2016.10.02
중국산 Arduino YUN shield 테스트 실패  (0) 2016.10.02
NodeMCU 프로그래밍  (0) 2016.09.23
자전거 안전등 #2  (0) 2016.09.22

Posted by 류종택




오픈소스를 이용한 값싼 미아방지 장치


류도영




제작동기


이 제품을 만들게 된 이유는 동생이 낯선 사람을 잘 따르기 때문에 걱정되었기 때문이다.  더구나 예전에 이모가 기르던 고양이가 한눈 판 사이에 도망갔던 경험도 있다.



기존 제품의 문제점


부모님과 아이디어를 나누는 도중에 유사한 제품이 있다는 걸 알았다. 하지만 잘 사용되지 않는 것을 알게 되어 사람들에게 그 이유를 물어보았다. 그 결과는 다음과 같다.

  • 제품이 있는 줄 몰랐다: 3명

  • 비싸다: 8명

  • 필요 없을 것 같다: 4명

그래서 나는 누구나 쉽게 사용할 수 있는 값싼 미아 방지 제품을 만들고 싶었다. 게다가 평상시에 관심을 갖고 있던 아두이노를 응용하면 실용적인 제품을 만들 수 있다고 생각했다.



주요 부품 구성


이 제품을 만들기 위한 부품은 다음과 같다.  대량으로 만들면 더욱 가격이 싸진다.

  • 무선 송수신 모듈: 700원

  • 부저: 100원

  • 아두이노 칩: 820원 (2개 필요)

  • 기타

    • 건전지

    • 제품 박스



작품 요약 및 원리

아이에게 송신기를 부착하고 부모는 수신기를 지니고 다닌다. 아이가 일정 거리 이상 멀어지면, 신호가 약해지는 것을 감지해 알람을 울린다.  송신기에서는 일정 주파수의 전파를 발생한다. 전파는 멀어질수록 약해지므로 수신기에 신되는 전파가 일정 시간 내에 들어오지 않으면 알람을 울린다.



기대효과


값싸기 때문에 많은 사람들이 쉽게 사용할 수 있고, 사람이 많은 곳으로 나들이 갔을 때  안심할 수 있다. 애완견이나 자전거에도 활용 할 수 있다.



기타 아이디어


  • 수신기 쪽에는 알람과 함께 진동으로 알려준다.

  • 거리 제한을 사용자가 직접 제한할 수 있게 만든다.

  • 아이쪽에서도 알람이 울리도록 한다.

  • 미아 찾기 앱을 이용해 오픈 된 인터넷을 만나면 부모에게 위치를 알려준다.

  • 공공기관 등에서 미아 방지용으로 공유기를 오픈하는 것도 괜찮을 것 같다.




제작 과정 - 무선 모듈 테스트


[사진 1] 송신 모듈에서 데이터를 보내지 않을 때


[사진 2] 송신 모듈에서 데이터를 보낼 때


송신기와 수신기의 동작 원리를 알아보기 위해서 다음과 같이 실험을 했다.

  • 송신기를 부착한다

  • 송신기의 VCC는 빨간색 (+) 줄 아무 곳이나 끼운다.

  • 송신기의 GND는 파란색 (-) 줄 아무 곳이나 끼운다.

  • 수신기를 부착한다.

  • 수신기의 VCC는 빨간색 (+) 줄 아무 곳이나 끼운다.

  • 수신기의 GND는 파란색(-) 줄 아무 곳이나 끼운다.

  • 수신기의 DATA는 LED의 (+) 에 연결하다.

  • LED의 (-)는 파란색 줄 아무 곳에나 끼운다.

  • 이 상태에서 [사진 1]과 같이 LED에 불이 들어오는 지 확인한다.

  • 송신기의 DATA를 빨간색(+) 줄에 끼우면 신호가 전송된다.

  • 이때 수신기에 연결되어 있는 LED의 불이 밝아졌다가 꺼진다.  즉, 수신기가 신호를 받지 않을 때는 LED가 켜져 있고, 신호를 받고 있을 때는 LED가 꺼진다.



제작 과정 - 아두이노 연결


[사진 3] 수신기

  • 부저:  j9 (+) - j12

  • RF 433 MHz수신기

    • j20 - (-)

    • j21

    • j22

    • j23 - (+)

  • LED: a21 - (-)

  • 점퍼선

    • f21 - c21

    • b21 - a4


[사진 4] 송신기

  • 송신기

    • j20 - j11

    • j21 - (+)

    • j22 - (-)



[사진 5] 작게 만든 송신기


[사진 5]는 [사진 4]의 송신기를 작게 만든 것이다.  실제 사용은 팔찌 모양으로 만들고 싶다.




프로그램 설명 - 송신기


// 아두이노가 켜지면 한 번 실행 된다.

// 프로그램에 필요한 준비 작업을 하는 공간

void setup() {

 // 아두이노의 2번 핀을 출력 모드로 바꾼다.

 // 이제부터 아두이노 2번 핀에서는 전기를 내보 낼 수가 있다.

 pinMode(2, OUTPUT);

}


void loop() {

 // 2번 핀에 전기를 내보낸다.

 digitalWrite(2, HIGH);


 // 0.1초 동안 기다린다.

 delay(100);


 // 2번 핀의 전기를 끈다.

 digitalWrite(2, LOW);


 // 0.1초 동안 기다린다.

 delay(100);

}


이렇게하면 송신기에서 계속 신호가 나가게 된다.  나중에는 글자로 된 신호를 보내서 어떤 송신기가 신호를 보내는 지 확인 할 수 있도록 개선하려고 한다.




프로그램 설명 - 수신기


unsigned long old_tick;

unsigned long tick;


void setup() {

 // millis()는 아두이노가 켜진 이후 흐른 시간을 알려준다.

 // 현재까지의 시간을 old_tick에 넣어준다.

 old_tick = millis();

}


void loop() {

 // analogRead(0)은 아날로그 방식으로 0번 핀에서 전기를 읽어 온다.

 // 즉, 0번 핀으로 얼마나 큰 전기가 흘러 들어 오는 지 알 수 있다.

 // 0번 핀에 들어 오는 전기가 300보다 크다면, 현재까지의 시간을 old_tick에 넣어준다.

 if (analogRead(0) > 300) old_tick = millis();  


 // 현재까지의 시간을 tick에 넣어준다.

 tick = millis();


 // 1초 동안 신호가 없으면 4번 핀에 연결 된 부저로 100Hz의 알람을 울린다.

 if ((tick - old_tick) > 1000) {

   tone(4, 100);

 } else {

   noTone(4);

 }

}


부저가 울리면서 발생하는 잡음 때문에 알람이 울렸다가 끊어졌다가 반복된다.  이 부분은 사용에 문제가 없기 때문에 걱정하지 않아도 된다.


저작자 표시 비영리 변경 금지
신고

'프로그래밍 > Arduino & IoT' 카테고리의 다른 글

Orange Pi Zero 사용 후기  (0) 2016.12.01
미아 방지기 만들기  (0) 2016.10.06
스스로 시간을 맞춰주는 인터넷 시계  (0) 2016.10.02
중국산 Arduino YUN shield 테스트 실패  (0) 2016.10.02
NodeMCU 프로그래밍  (0) 2016.09.23
자전거 안전등 #2  (0) 2016.09.22

Posted by 류종택

인터넷 시간을 통해서 주기적으로 실제 시간을 업데이트해주는 시계입니다.  시간을 맞출 필요가 없이 스스로 알아서 해결합니다 ^^*


동작 사진


옆면


테스트 과정




3D 모델링 파일


부품 설치


우선 NodeMCU 보드를 400 tie 빵판 맨 위에 끼어넣습니다.  이후 부품들은 아래와 같이 연결합니다.

  • Jumper 10mm: Vcc - a1

  • Jumper  8mm: Gnd - a2

  • Jumper 10mm: j2 - Gnd

  • Jumper  8mm: j5 - Vcc

  • Jumper FM: RTC.Vcc - Vcc

  • Jumper FM: RTC.Gnd - Gnd

  • Jumper FM: RTC.CLK - a6

  • Jumper FM: RTC.DAT - a7

  • Jumper FM: RTC.RST - a8

  • Jumper FM: TM1637.Vcc - Vcc

  • Jumper FM: TM1637.Gnd - Gnd

  • Jumper FM: TM1637.CLK - a11

  • Jumper FM: TM1637.DIO - a13

RTC: Real-time Clock

TM1637: 4 digit LED tube




보드 준비 및 라이브러리 설치



소스 코드

#include 
#include 
#include 
#include 

const int MAX_CONNECT_TIME = 300;
const int QUERY_INTERVAL = 3000;

const char* ssid = "공유기 ID";
const char* password = "공유기 비번";

const char* host = "www.timeapi.org";
const int httpsPort = 80;
const String url = "/utc/now";

// TM1637 LED tube pin
const int led_clk_pin = 2;
const int led_io_pin  = 4;

// Realtime Clock pin
const int rt_ce_pin  = 14; 
const int rt_io_pin  = 12; 
const int rt_clk_pin = 13; 

TM1637Display display(led_clk_pin, led_io_pin);
DS1302 rtc(rt_ce_pin, rt_io_pin, rt_clk_pin);

void setup() {
  Serial.begin(9600);

  display.setBrightness(0x0f);

  rtc.writeProtect(false);
  rtc.halt(false);

  Serial.print("connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
}

int tick_count = 0;
bool display_dots = false;
void displayTime() 
{
  uint8_t data[] = { 0b00000000, 0b00000000, 0b00000000, 0b00000000 };

  Time t = rtc.time();

  int hr_lo = t.hr % 10;
  int hr_hi = (t.hr - hr_lo) / 10;

  if (hr_hi < 1) data[0] = display.encodeDigit(0);
  else data[0] = display.encodeDigit(hr_hi);

  if (hr_lo < 1) data[1] = display.encodeDigit(0);
  else data[1] = display.encodeDigit(hr_lo);
  
  int min_lo = t.min % 10;
  int min_hi = (t.min - min_lo) / 10;

  if (min_hi < 1) data[2] = display.encodeDigit(0);
  else data[2] = display.encodeDigit(min_hi);

  if (min_lo < 1) data[3] = display.encodeDigit(0);
  else data[3] = display.encodeDigit(min_lo);

  tick_count++;
  if (tick_count >= 5) {
      tick_count = 0;
      display_dots = ! display_dots;
      if (display_dots) data[1] = data[1] | 0b10000000;
  }
  
  display.setSegments(data);
}

int time_out = 0;
int query_count = 9999;

void loop() {
  displayTime();
  
  time_out++;
  if (WiFi.status() != WL_CONNECTED) {
    if (time_out > MAX_CONNECT_TIME) {
      time_out = 0;
      
//      Serial.print("connecting to ");
//      Serial.println(ssid);
//      WiFi.begin(ssid, password);
    }
    
    Serial.println("WiFi is not ready.");
    delay(100);
    return;
  }

  time_out = 0;

  query_count++;
  delay(100);

  if (query_count < QUERY_INTERVAL) return;

  query_count = 0;

//  Serial.println("");
//  Serial.println("WiFi connected.");
//  Serial.println("IP address: ");
//  Serial.println(WiFi.localIP());

  WiFiClient client;
//  Serial.print("connecting to ");
  Serial.println(host);
  if (!client.connect(host, httpsPort)) {
    Serial.println("connection failed.");
    delay(1000);
    return;
  }

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: BuildFailureDetectorESP8266\r\n" +
               "Connection: close\r\n\r\n");

  // Read Header
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") break;
  }
  
  // Read Body
  if (client.connected()) {
    String line = client.readStringUntil('\n');

    // Korean local time need to add 9 hours.
    String hour = line.substring(11,13);
    String minute = line.substring(14,16);
    String second = line.substring(17,19);
    
    Time t(2016, 1, 1, (hour.toInt() + 9) % 24, minute.toInt(), second.toInt(), Time::kSunday);
    rtc.time(t);
  }
}
  • NodeMCU의 경우 함수 실행에 시간이 오래 걸리면 리부팅이 계속 진행되는 현상이 있었습니다.  그 때문에 코드가 조금 복잡해졌습니다.


저작자 표시 비영리 변경 금지
신고

'프로그래밍 > Arduino & IoT' 카테고리의 다른 글

Orange Pi Zero 사용 후기  (0) 2016.12.01
미아 방지기 만들기  (0) 2016.10.06
스스로 시간을 맞춰주는 인터넷 시계  (0) 2016.10.02
중국산 Arduino YUN shield 테스트 실패  (0) 2016.10.02
NodeMCU 프로그래밍  (0) 2016.09.23
자전거 안전등 #2  (0) 2016.09.22

Posted by 류종택

아두이노 YUN 보드가 갑자기 사라지고, 쉴드 형태의 제품만 판매하고 있습니다.  알리익스프레스에서는 아직 재고를 판매하는 것 같습니다.  


얼마 전 중국산 저렴한(?) YUN 실드를 발견하고 두 개를 사서 테스트 해보았습니다.



결과적으로 테스트에 실패하였습니다.  구글을 검색해보니 저와 유사한 경우가 많은 것으로 보입니다.  LAN 상에서 테스트하면 문제가 없다는 글도 있습니다.  


"Could not connect to YunServer 146 Connection refused"


위와 같은 에러가 나면서 REST API를 사용할 수 없고, 콘솔 테스트 등도 되지 않고 있습니다.  검색에 나오는 방법대로 REST API를 인증없이 Open 상태로 설정해도 마찬가지입니다.  (정품 YUN 보드에서는 모두 테스트가 완료되었습니다)


YUIN 실드의 방화벽 설정도 수정해보았지만 역시나 실패입니다.


정품 YUN 실드의 경우에는 아직 구매 전이라 알 수없지만, 중국산 YUN 실드의 추가적인 단점이 있습니다.

  • YUN 보드는 USB를 컴퓨터에 연결하면 바로 동작하지만, 중국산 YUN 실드는 추가 전원이 없으면 파워가 부족하여 제대로 동작하지 않습니다.

  • YUN 보드는 Network port가 안잡혀도 시리얼 포트로 업로드가 가능하지만, 중국산 YUN 실드는 시리얼로는 업로드가 되지 않습니다.


위의 제품의 자료가 부족해서 더 이상 시간을 낭비하는 것이 아까워서 테스트는 중단합니다.  한 동안 묵혀두었다가 자료가 많아지면 다시 테스트를 진행해보도록 하겠습니다.  (혹시나 테스트 성공하신 분은 저에게도 좀 ^^;)

설정 및 테스트를 위한 설명은 아래 사이트를 참고하시기 바랍니다.


저작자 표시 비영리 변경 금지
신고

Posted by 류종택

NodeMCU는 와이파이 모듈이 장착된 아두이노 보드라고 생각하면 됩니다.  아래 사진과 같이 생겼습니다. ESP8266 모듈이 붙어 있는 것이 보입니다.  인터넷 관련된 프로젝트를 구상하시면 한 번 사용해보시기 바랍니다.




아두이노 IDE를 이용해서 프로그래밍을 하기 위해서 보드를 설치해야합니다.  파일 메뉴에서 환경설정을 클릭합니다.




이후 추가적인 보드 매니저 URLs에 아래와 같은 주소를 붙여 넣습니다.

  • http://arduino.esp8266.com/stable/package_esp8266com_index.json



툴 메뉴에서 보드를 클릭하고 이어서 모드 메니저를 클릭합니다.




esp라고 검색하면 아래와 같이 ESP8266 Community에서 배포하는 보드 드라이버가 보입니다.  설치를 클릭합니다.




설치가 완료되면 보드 선택창에 NodeMCU 0.9가 보입니다.   자신의 보드와 같은 모델을 선택하시면 됩니다.  이어서 연결된 포트를 선택합니다.




기본으로 제공하는 예제를 실행하기 위해서 파일 메뉴에서 예제를 클릭하시고, ESP8266에 있는 Blink 예제를 선택합니다.




스케치(프로그램)을 업로드하면 보드에 달려있는 LED가 깜박이는 것을 확인하실 수가 있습니다.









저작자 표시 비영리 변경 금지
신고

Posted by 류종택

아드님으로부터 지난 번에 만들어 준 자전거 안정등에 대한 고객 불만이 접수되어 새로 제작하였습니다.  ATTiny85를 이용해서 반짝이도록 수정하고, LED는 1W 짜리 밝게 빛나도록 하였습니다.  자동으로 켜질 필요 없이 스위치를 달아 달라고 해서 스위치도 부착하였습니다.  충전이 자유롭도록 충전 모듈도 부착하였습니다.


대략 납땜을 마치니 아래의 사진처럼 되더군요.  회로랄 것도 없습니다.  그냥 아두이노 IDE에 있는 blink 예제에서 핀번호만 바꿔서 LED에 저항없이 직접 연결하였습니다.




납땜한 뒷 면입니다.




3D 프린팅을 마치고 밑면은 잘 들어갔으나, 윗면 측정에 문제가 있어 벗어난 수치를 다시 재고, 프린팅에 들어갔습니다.  한 번에 안되네요 ㅡ.ㅡ;;




오!!  그런데로 잘 맞습니다 ^^*




이리 오너라 옆태를 보자!





아 맞다!!  연결고리는??  분명 설계할 때는 그려놨는데 ㅡ.ㅡa  결국 고리부분만 출력해서 순간접착제로 붙였습니다.  크기가 작으면 열수축이 더 심해지나 봅니다.  위로 갈수록 좁아지는 현상 때문에 칼로 일부분을 깍아야 했습니다 ^^;




자전거에 부착한 모습입니다.  0.2초 간격으로 깜박입니다.





끝!!!



저작자 표시 비영리 변경 금지
신고

Posted by 류종택


딸이 자주 가지고 노는 플래시입니다.  그런데 이넘이 배터리를 너무 많이 먹고, 밝지도 않습니다.




원흉은 바로 이넘입니다.  효율성이라고는 눈꼽만큼도 없는 전구 ㅡ.ㅡ+




휴지에 겹겹히 싸서 깨트려 줍니다.  생각보다 잘 안부셔지네요.  남은 조각들을 일일히 제거하다 보니, 그냥 알리에서 하나 사줄껄 하는 생각이 듭니다 ㅡ.ㅡa




1W 짜리 LED 전구입니다.  보통 집에 몇 백 개씩은 굴러다니지 않나요 ㅡ.ㅡa




전극을 맞춰서 납땜해주고 난 뒤 글루건으로 마감해주었습니다.




오오오!!  밝게 빛이 납니다 @.@




끝!!  ^^;;

저작자 표시 비영리 변경 금지
신고

Posted by 류종택
이전 글의 방문자가 많아서 새로 정리합니다.



1위.  아두이노 나노


장점은 크기가 작고 가격이 싸서 편리합니다.  400 tie 빵판에 꼽아서 사용하는 것이 편리해서 주로 사용하고 있습니다.




단점은 드라이버를 설치해야 하며, 맥에서는 드라이버 설치가 문제되는 경우가 생기곤 합니다.


OTG 케이블용


가장 일반적인 미니 USB용




2위.  아두이노 우노


드라이버를 설치하지 않고도 사용 할 수 있습니다.  그것 말고는 개인적으로 딱히 장점을 꼽기가 어렵습니다.  다만 우노 전용 쉴드를 사용 할 때만 사용하는 편입니다.



OTG 케이블용


클래식



3위. ESP8266 Lua 보드


무선 인터넷을 바로 사용 할 수 있는 편리함 때문에 가끔 사용합니다.  프로그래밍 하기가 조금 까다롭습니다.  아직 인터넷에 자료가 많지 않습니다.  일반적인 아두이노 프로그래밍하고 같지만 GPIO 및 보드 설정에서 살짝 시행착오를 겪었습니다.




4위.  YUN 쉴드


YUN 보드가 더 이상 안나오는 것으로 보입니다.  대신 쉴드가 있으니 참고 바랍니다.  리눅스 보드와 합쳐서 좀 더 강력한 프로그래밍을 하실 수 있습니다.  무선 인터넷도 기본으로 제공합니다.


YUN 보드 소개 동영상



기타


저는 주로 크기를 줄이기 위해서 ATTINY85와 ATMEGA328 칩을 사용하는 경우가 있습니다.  사용하는 방법은 아래와 같습니다.


용량 및 속도면에서 장점이 있는 메이플 보드도 가끔 사용합니다.  아두이노 IDE에서 사용 가능하다고 하는데, 설정하다가 지쳐서 메이플 전용 프로그램을 다운받아서 사용하고 있습니다.  (https://github.com/leaflabs/maple-ide)


요즘은 아두이노 미니 프로 등의 다른 보드는 잘 사용하지 않는 편입니다.  딱히 이유는 없고, 강의 때문에 나노 보드의 재고가 많다보니 다른 것을 사용할 필요성이 느껴지지 않기 때문입니다.

저작자 표시 비영리 변경 금지
신고

Posted by 류종택



위의 동영상은 무선을 달기 전에 테스트 해본 것 입니다.  다리 각도 등을 좀 조절해야 할 것 같지만, 잘 작동합니다.


이 로봇은 아래의 링크에서 3D 도면을 다운받아서 작업하였습니다.



일단 첫 번 째 실수는 WIFI 모듈을 2.4GHz 무선 모듈로 착각하여 무려 납땜했다가, 다리를 모두 잘라 버렸습니다 ㅡ.ㅡ





시행착오 두 번 째는 서보모터의 특성을 이해지 못하여, 4개나 망가트린 것입니다.  하나는 망가진 김에 뜯어 봤습니다.  각도는 내부에 있는 가변 저항을 통해서 읽어내는 것 같습니다.  서보 모터는 끝까지 돌려서 사용하면 망가질 수 있다고 합니다.  검색해도 잘 안나오고, 서보모터 예제에서 언급하는 것을 못 봐서 무턱대고 작업하다가 서보 모터만 망가트렸습니다.  0에서 180도 대신 5도에서 175도 정도가 안전하다고 하는데 잘 모르겠습니다.


일단 일반적인 서보 모터 제어 도중에는 이런 문제가 발생한 적은 없으나, PCA9685 서보 모터 드라이버를 사용 할 때에 각도를 0이나 180 정도에 가면 가끔 먹통이 되네요.






서보 모터 드라이버 PCA9685 입니다. 이런 것이 있는 줄도 모르고 예전에는 직접 만들어서 사용을 했는데, 아주 편합니다. 검색에서는 6V 전원을 연결해서 사용하던데, 리튬 배터리 3.7V 하나만으로도 충분합니다. 두 개를 직렬로 연결하니 서보 모터에서 열이 나더군요,





구로 유통 단지에서 구매한 볼트와 너트입니다.  무조건 천 개 단위로 판다고 하네요 ㅡ.ㅡ;;  로봇 100개 만들어서 시위하러 갈테다 ㅡ.ㅡ++


3x20, 3x25 두 가지 크기의 볼트가 필요합니다.





3D 모델링이 다소 문제가 있어 보입니다.  저는 해당 자료의 메뉴얼대로 하지 않고 순간접착제로 붙여서 사용했습니다.  사진은 서보 모터 뒤에 붙여서 사용하는 회전 축입니다.





서보 모터 암을 잡아주는 넘은 너트를 이용해서 고정하라고 하는데, 이것은 글루건으로 붙여서 사용했습니다.





테스트 하기 위해서 소형 빵판을 이용해서 연결하였습니다.





크기를 줄일 욕심으로 ATMEGA328 칩을 PCB에 납땜해서 사용하려고 했으나, 내부 오실레이터만으로는 2.4 GHz 모듈을 제대로 동작시킬 수 없다는 것을 뒤늦게 알게되었습니다 ㅠ.ㅠ   통신 오류가 엄청나게 발생해서 대부분의 데이터가 유실됩니다.


빵판에서 테스트 먼저 해볼 껄!  남땜하는 동안에도 많은 시행착오를 ㅡ.ㅡ;;





결국 아두이노 나노보드를 납땜해서 사용하기로 결정했습니다.




위에서 알려드린 사이트에서 보드와 부품을 구매하면, 이런 고생을 안하셔도 될 것 같습니다.



전체 부품은 아래에서 구매할 수 있습니다.  (15개 세트 주문하면서 정리한 문서입니다)



무선 모듈을 장착한 모습!!






무선 모듈 달고 테스트 하는 동안 새로운 문제가 발생하였습니다.  아두이노가 전력을 많이 소비하게 되면서, 금새 배터리를 소모하고 오동작을 하게 됩니다.  따라서, Step up 모듈을 달고 테스트 한 결과 안정적인 것을 발견하였습니다.


원래는 18650 9800mAh 배터리를 사용하려고 했으나, 크기가 맞지 않아서, 14500 2500mAh 배터리를 사용했는데, 예상 밖으로 모터 쪽보다 아두이노 쪽에서 먼저 건전지 출력 부족현상이 발생하네요.


추가 자료는 추후 오프라인 강의 때, 녹화해서 공유하도록 하겠습니다.





저작자 표시 비영리 변경 금지
신고

Posted by 류종택

http://it.chosun.com/m/m_article.html?no=2823853





▲행사명 : '아두이노 어린이 코딩 교육'

▲대상 : 초등학교 4, 5, 6학년 

▲일시 : 2016년 9월 24일 ~ 2016년 10월 15일(기간 중 매주 4회 13:30~16:30)

▲장소 : IT조선 연결지성센터 교육장 (서울시 중구 세종대로21길 22 태성빌딩 3층 303호)

▲주최 : IT조선, 조선비즈, 연결지성센터

▲강의개요

-1주 : 아두이노 기초(별빛램프, 빛으로 연주하는 하프 만들기)

-2주 : 아두이노와 친해지기(금속탐지기 만들기, 거짓말탐지기 만들기)

-3주 : 게임 만들기(황야의 무법자 게임 개발, 우주선 피하기 게임 개발)

-4주 : 로봇 만들기(모터 제어/무선 통신, 무선 자동차 만들기)

▲강사 : 심프(블루커뮤니케이션 소프트웨어 코딩 교육팀)

▲문의 : 02)724-6170, managerit@chosunbiz.com 

▲참가비 : 33만원(부가세 포함, 부품비 포함)

▲신청방법 : 온라인 사전 접수 (http://bit.ly/2c0Ckf8)

▲특전 : IT조선 아두이노 어린이 코딩 과정 수료증, 코딩실습 도서 '우당탕탕 IT탐정단' 제공

▲유의사항 : 접수순 30명 마감(최소 개강인원 20명) / 개별 노트북 지참 

저작자 표시 비영리 변경 금지
신고

Posted by 류종택


티스토리 툴바