반응형

【 아두이노Nano#2 NANO 33 IoT 처음 사용 설명서 #1-2 (LSM6DS3 센서)

 

[ 센서 활용하기 ]

- LSM6DS3 :  내부에 12C로 연결,  가속도 최대 ±16g까지(중력가속도 16배까지) 측정 가능 ,   자이로 최대 ±2000dps까지 측정 가능(dps: degree per second 초당 각도의 감지 분해능)

>> LSM6DS3 상세 스펙 다운받기 (PDF)

lsm6ds3.pdf
1.42MB

- LSM6DS3를 이용하기 위해서는 라이브러리 다운로드하아야 함. 스케치 IDE의 라이브러리 관리 메뉴에서 검색 후 다운로드.

 

- 그리고, 아두이노 공식 사이트의 라이브러리를 확인하거나 ( https://www.arduino.cc/en/Reference/ArduinoLSM6DS3 )

- 또는 구글에서 LSM6D3S 검색 후 나오는 깃허브에서 다운로드(예제 파일 등 포함) 하세요.

구글 깃허브 사이트 링크

>> 깃허브에서 zip파일 형태로 다운로드하여 압축을 풀지 말고 zip 형태로 라이브러리를 추가해서 사용해 보세요. 

 다운로드한 라이브러리를 공유합니다. 

Arduino_LSM6DS3-master.zip
0.01MB

 

 

[ 가속도 센서 테스트 ]

- 라이브러리를 설치하게 되면, 아두이노 스케치 IDE에  LSM6DS3관련한 예제 파일이 자동 등록됩니다. 

 

- 예제 파일을 실행시키고 시리얼 모니터/플로터를 띄워 보면,  아래와 같은 가속도 센서로부터의
x, y, z의 센서 값이 나오게 됩니다.

[ 자이로 센서 테스트 ]

- 마찬가지로 함께 제공되는 'SimpleGyroscop' 예제를 열고 시리얼 모니터/플로터 창을 띄워 보면 아래와 같은 좌표값을 얻을 수 있어요.

 

우선, 여기까지만 포스팅하고요,   추후에 센서의 출력 값을 비주얼화 시켜서, 내용을 보강하도록 해볼게요.  

 

그럼, 오늘 하루도 안전하고 좋은 하루 보내세요~  ^^

반응형
반응형

【 아두이노Nano#1 NANO 33 IoT 처음사용 설명서

 

 아두이노에서 NANO 의 새로운 제품군이 최근 추가 되었습니다. 

먼저, 약간의 성능 향상을 한 Nano Every 와,  IoT 기능을 추가한 NANO 33 IoT 버전,  그리고 NANO 33 BLE, 

강력한 스펙의 NANO 33 BLE Sensor 보드까지 추가 되었습니다. 

 

NANO33 IoT 보드 뒷면 모습
NANO33 IoT 보드 윗면 모습

 먼저, 상세 스펙은 아래 비교 표를 참고하세요,  한 눈에 파악이 될 수 있도록 정리했습니다. ^^

(클릭, 확대해서 보세요~)

아두이노 NANO 33 제품군 상세 비교

- LSM6DS3 :  내부에 12C로 연결,  가속도 최대 ±16g까지(중력가속도 16배까지) 측정가능 ,   자이로 최대 ±2000dps까지 측정가능(dps: degree per second 초당 각도의 감지 분해능)  

- Nano 33 IoT, Nano 33 BLE,  Nano 33 BLE Sense 보드 모두 UART 통신이 가능한 시리얼이 하나더 있습니다. 

  (기존 아두이노 우노 보드의 경우 PC와 USB연결하여 데이터를 주고 받게 되면, 아두이노의 0번, 1번핀의 하드웨어 시리얼 통신은 동시에 이용이 불가능 했는데요,  Nano 33 시리즈는 이게 가능해졌다는 이야기 입니다.  그래서, 아두이노 코드에서 Serial.begin(9600);  은 기존 PC와 연결하는 USB 시리얼 통신으로 사용하고,  Serial1.begin(9600);은 Nano33의 0번핀(Tx)-1번핀(Rx) 하드웨어 시리얼핀을 통해, 다른 장치(아두이노 등의 시리얼 통신이 가능한 장치)를 연결하여 실시간 시리얼 통신이 가능해졌다는 이야기입니다.  ^^ )

 

[ 보드 특징 ]

 아두이노 나노와 사이즈 (18mm X 45 mm) 가 같으면서, IoT 및 블루투스, 각종 센서 기능이 강화된 보드입니다.

그동안 나노 보드의 불편했던 USB 커넥터가,  안드로이드 휴대폰과 같은 Micro-5Pin으로 바뀌었네요~ ^^

기존 나노보드 크기에 6축 또는 9축 가속도/자이로 센서가 탑재되었고, Sense 보드는 근접센서, RGB센서, 주변광센서, 제스처센서가 탑재되어 팔방미인으로 통할 수 있는 보드입니다.   다만, 아직 가격이 상당해서,  가성비는 좀 그렇고 호환보드가 출시 된다면 더없이 좋을 것 같네요. 

 주요 특징으로는 , 기존 NANO 보드와 NANO Every 보드까지는 5V 톨러런트(Tolerant : 회로기판 내의 3.3V 부품도 5V레귤레이터를 통해 내부적으로 문제없이 처리 또는 견딜 수 있는) 가 지원 되지만,  NANO 33 보드는 이름에서도 알 수 있듯, USB 전원을 제외하고 신호 레벨 전압을 3.3V로 주어야 손상되지 않습니다. 

 NANO 33 보드들은 모두 BLE 기능을 지원하는데요, 일반적으로 블루투스는 동작시 전력소모가 큰 단점이 있는데, 저전력으로 동작하도록 설계된 블루투스를 BLE 라고 합니다.  NANO 33 IoT는 BLE 4.2를 지원하고,  NANO 33 BLE 와 NANO 33 BLE SENSE 는 BLE 5.0을 지원합니다.  NANO 33 IoT의 경우 USB Host를 지원하며, 네오나르도와 같은 HID 장치로 사용이 가능한 것으로 나와 있네요. 

 

오늘 다룰 NANO 33 IoT의 상세 PIN 자료(PDF)

아두이노 나노33IOT 상세스펙.pdf
0.09MB

반응형

[ 보드 인식과 아두이노 스케치 IDE 사용하기 ]

 먼저 보드를 처음 연결하게 되면, 보드 드라이버가 자동으로 설치되며,  장치관리자를 열어보면, 시리얼 포트가 할당됩니다.  

- 다만, 스케치 IDE에서는 해당보드가 설치 되어 있지 않기 때문에, 메뉴에서,   툴 》  보드 》보드매니저를 열어 NANO 관련 추가 제품군을 등록해 주어야 합니다.

- 또는 보드 최초 연결시 보드 업그레이드 창이 아래 처럼 뜨네요. 

별 중요한건 아니지만 호환보드가 아닌, 정식 아두이노 보드의 특전인가? 봅니다.  ㅎ

 

- 보드 설치가 완료 되면, 아래처럼 "Arduino NANO 33 IoT" 보드를 선택하고,  포트에는 "COMxx (Arduino NANO 33 IoT)" 인식된 포트를 선택해 주세요.

 

- 그럼 이제, 기본 Blink 예제로 나노 보드의 온보드 LED를 켜보며 테스트해 볼게요.

다른 아두이노 보드와 마찬가지로, D13번 핀에 연결되어 있습니다.

- 그리고 다른 보드와 다르게 보드에 코드를 빌드업 후 정보를 상세하게 보여주네요.

 

- 그럼, 실제 LED를 달아서 테스트해보는 것으로 설명서 #1은 마치도록 할게요.  

다만, 아쉬운건 핀 번호 레이블이 보드 아래에만 적혀 있어서 장착 후에는 확인이 불편하다는 점인데요,  하지만, 다른 아두이노 기존 나노 보드와 핀 배열이 완전히 똑같기 때문에 크게 불편함 없이 사용할 수 있겠네요.

 동작이 잘 되고 있네요. 

 

 그럼, 다음에는 WiFi나 블루투스 기능을 활용해보도록 하겠습니다.

참, 보드에 안테나가 하나여서 WiFi나 블루투스를 동시에 리얼타임으로는 이용을 못해요.  이점 참고하세요. 

코드에서 조건문으로 상황에 따라 두 기능을 활용해봐야 할 것 같네요.

감사합니다. 

 

[ 아두이노 나노 33 IoT 보드 처음사용설명서 영상으로 보기 ]

 

 

 

반응형
반응형

릴리패드LilyPAD#1 웨어러블 아두이노 릴리패드 사용하기~!
   ( I'd like to introduce you to Arduino Lilipad and how to use it ! )

 최근 웨어러블 스마트장치에 많이 사용되는 릴리패드에 대해 소개하고, 활용예를 소개해드립니다. 

 

1. 릴리패드는? (What's Lilypad)

 

 릴리패드는 영어명 'Lilypad'(수련(연꽃)의 잎)을 뜻하며 보드 또한 수련잎을 형상화한 모습이며 실제 잎처럼 물에 뜰 정도로 작고 가벼운 , 그래서 웨어러블 등에 어울리는 마이크로프로세서 보드입니다. 

"릴리패드 328 main board" 버전의 경우, 아두이노 우노 버전에 들어가 있는 ATmega328 과 같은 프로세서가 들어 있습니다. 실제 기능과 스펙도 거의 우노와 같고, 다만, PC를 통한 코드전송을 위해서는 아두이노 프로미니에서 처럼 별도의 FTDI 커넥터 연결이 필요합니다.

 

 

릴리패드는 콜로라도 대학교의 '공예기술학부 & 컴퓨터 과학부'의 Leah Buechley 박사가 아두이노 우노의 오픈소스를 이용해서, 디자인한 보드입니다. 

 박사는 전자를 접목한 직물분야의 뛰어난 전문가로 활동해왔으며,  웨어러블기기에 적합한 얇고 가벼고, 디자인에 중점을 둔 보드를 개발하게 된 것이죠.  

 

 

 회로 연결에는 전기가 통하는 전도성 실( Conductive thread)을 이용합니다.

.

 그 밖에 아이들의 오감을 자극해줄 수 있는 전자책도 함께 전자 팝업북(electronic popables) 도 개발하였습니다.

 

 

 그리고 장갑에 장착하여 손동작의 자연스러움을 이용한 제어에도 많이 활용되고 있습니다.

 

 그럼, 릴리패드 제품군에 대해 소개해드리겠습니다.

릴리패드는 주로 Sparkfun 이라는 회사에서 다양한 종류의 릴리패드를 출시하였는데요, 

 위 사이트에 소개되고 판매되고 있는 것들을 정리하여 소개해드리면 아래와 같습니다.

( 본 페이지의 이미지들은 클릭하면 선명하게 확대가 가능합니다. )

 

ⓐ 릴리패드 아두이노 328 메인보드

▶ 프로세서 : ATmega 328P

 동작전압 :  2.7V~5.5V

▶ 디지털핀 : 14개의 I/O 핀 (6개의 PWM: ~3 , ~5, ~6, ~9, ~10, ~11)

아날로그핀 : 6 핀

메모리 : 16KB Flash, 1KB SRAM

기타 : FTDI 연결용 6Pin

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

▶ 프로세서 : ATmega 328P

 동작전압 :  2.7V~5.5V

▶ 디지털핀 :  5개의  I/O 핀 

 아날로그핀 : 4 핀

 메모리 : 16KB Flash, 1KB SRAM

JST커넥터 : 외부 3.7V Li-Po 베터리용 소켓(충천가능)이 있음.

 기타 :  ON/ OFF 스위치가 빌트인 되어 있음. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

[ USB 보드 ]

▶ 프로세서 : ATmega 32U4

 동작전압 :  2.7V~5.5V

▶ 디지털핀 :  5개의  I/O 핀 (PWM핀 : ~3, ~9, ~10, ~11)

 아날로그핀 : 4 핀

JST 소켓등 : - 3.7V Li-Po 베터리용 소켓이 있음

                    - ON/ OFF 스위치가 있음. 

 기타 :  PC와 통신을 위한  FTDI 모듈 필요 없음

------------------------------------------------------------------

 

[ Simple SNAP 보드 ]

▶ 프로세서 : ATmega 328

 동작전압 :  2.7V~5.5V

▶ 디지털핀 :  5개의  I/O 핀 

 아날로그핀 : 4 핀

 베터리포함 :  3.7V Li-Po 베터리가 포함되어 있는 버전.

 기타 :  PC와 통신을 위해 FTDI 모듈 필요함. 

특징 : 의류에서 사용되는 똑딱이 단추와 같은 스냅 형태로 되어 있어, 의류 세탁과정등에서 탈부착이 쉽도록 하였음.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

[ USB Plus 보드 ]

▶ 프로세서 : ATmega 32U4

 동작전압 :  2.7V~5.5V

 아날로그핀 : 7 핀

특징  :     - ON/ OFF 스위치가 있음. 

                 - RGB LED가 빌트인 되어 있음 (R-12번, G-13번, B-14번)

                 - 6개의 화이트 LED가 부착되어 있음 (15번~20번)                 

 기타 :  +, - 전원 단자가 2셋트 있음 (4Pin)

 

[ Tiny 보드 ]

▶ 프로세서 : ATtiny85

 동작전압 :  2.7V~5.5V

연결 핀 :  디지털 4 핀 (0, 1, 2, 3) ,  + ,- 전원 2핀  총 6핀으로 구성

 특징  :  디지털 핀별로 특정 기능을 하도록 미리 프로그래밍 되어 있음.

 보통은 각 핀에 LED를 연결하여 전원 연결만으로 간단히 시각적 효과를 나타내는 용도로 사용함.

 (0번 핀은 숨쉬기 형태의 LED 동작, 1번은 심장박동 형태의 LED동작, 2번은 단순 ON/OFF 반복 LED 동작  , 3번은 LED가 일정하지 않고 램덤하게 작동하도록 설정 되어 있음)

 

 

 

릴리패드328 연결(FT232RL) 처음 사용 하기~!  클릭

 

 

반응형
반응형

【 아두이노레오나르도활용#6사람이 감지되면 홍보 동영상 플레이 시키기!
   ( Movie Play! with Arduino Leonardo using Ultra Sonic Sensor! )

 아두이노 레이나르도 보드와 초음파 센서를 이용해서 모니터 앞으로 사람이 다가서면, 홍보용 동영상을 자동으로 띄워 재생 시킬 수 있는 응용품에 대해 다루고 있습니다. 

 

 - 이번 영상에서는 아두이노 레오나르도 보드와 초음파 센서를 이용해서 사람이 다가서면 PC에 있는 홍보영상이 자동으로 플레이되도록 구현해보겠습니다.

 코드가 간단하며, 아두이노 보드 종류 중에, 키보드와 같은 HID 장치로 인식이 되는 레오나르도 보드나 프로마이크로 보드를 이용하면 손쉽게 PC에 있는 영상을 단축키로 지정해서 플레이할 수 있게 됩니다.

 

【 이전 영상 보기 

【영상 강의 보기-YouTube

아래 영상 클릭 ~!

 

[ 강의 내용 요약 ]

1. 부품 준비

 

2. 회로 연결

 

3. 아두이노 코드

/*  초음파 센서로 동영상 실행시키기             */
/*  라이즈이IOT http://Rasino.tistory.com   */
#include 
int distance;
int triggerPin = 6;
int echoPin = 7;
void setup() {
  Keyboard.begin(); //키보드 컨트롤 관련 함수 선언  
  Serial.begin(9600); 
  pinMode(triggerPin, OUTPUT);  // 트리거 핀을 출력으로 설정
  pinMode(echoPin, INPUT);       // 에코 핀을 입력으로 설정
}
void loop() {
  digitalWrite(triggerPin, LOW);    // 트리거 핀 초기화
  digitalWrite(echoPin, LOW);      //  에코 핀 초기화
  delayMicroseconds(2);      // 트리거 핀으로 10 us의 펄스를 발생
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW); 
  distance = pulseIn(echoPin, HIGH)/58; //에코핀 입력의 거리값을 cm단위로 계산
  Serial.println("Distance(cm) = " + String(distance));
  delay(1000); 
  if (distance < 20) {       // 물체(사람)가 20cm 이하 되면 감지(LED경보 작동)
    Keyboard.press(KEY_LEFT_CTRL); // '왼쪽 Ctrl 키'
    delay(2);  
    Keyboard.press(KEY_LEFT_ALT);  // '왼쪽 Alt 키'
    delay(2);  
    Keyboard.press('1'); // 숫자'1' 
    delay(500);          // 시간지연을 두어 여러번 실행되는 것을 방지함
    Keyboard.releaseAll(); // 키를 계속 누르지 있지 않도록 함
    delay(10000);
  }
}

 

4. 아두이노 코드 직접 다운로드 

: 다운받은 후 압축파일을 풀고 사용하세요

UltraPlayer.zip
0.00MB

 

 

5. 동작확인

: 작동은 위 유튜브 영상을 통해서도 확인 가능합니다.

 

 

6. 상세 설명

  - 위 회로도를 보고 초음파 센서와 보드를 연결해주세요

  - 네오나르도 보드는 키보드나 마우스와 같은 HID 장치로 인식하기 때문에, 처음 PC와 연결할 때 장치 드라이버 설치가 필요합니다.

- 다음으로 플레이를 시킬 동영상을 준비합니다. 그리고 PC에 동영상 플레이어가 설치되어 있으면 됩니다. 영상에서는 다음 카카오플레이어가 설치되어 연결 되어 있습니다.

 

- 동영상을 플레이시키는 원리는 이렇습니다. 네오나르도 보드는 PC를 통해 키보드의 키입력이 가능합니다. 따라서 동영상을 단축키로 지정해서 실행 시키면 됩니다.

 

- 그럼 동영상을 단축키로 지정하기 위해 바로가기 아이콘을 바탕화면에 만들어 보겠습니다.

- 찾아 보기를 눌러 플레이시킬 동영상을 선택해줍니다.

- 이름을 적당히 정한 후 확인을 눌러 줍니다.

- 바로가기 아이콘에서 마우스 우클릭 후 속성을 클릭합니다.

- 바로가기 키 항목에서 ctrl + Alt 키를 동시에 누른 상태에서 숫자 1을 입력합니다.

- 사실 숫자 1만 입력하여도 Ctrl+Alt키는 자동 입력됩니다.

- 그럼, 단축키가 제대로 먹히는지 ctrl+Alt+1을 눌러봅니다.

 

- 동영상이 잘 실행됩니다.

- 하지만 문제는 동영상이 전체화면 모드로 실행되지 않습니다.

 - 이럴때는 플레이어 옵션에서 동영상 실행시 전체화면 모드로 실행 옵션을 찾아서 체크해주면 해결 됩니다.

 - 카카오 팟플레이어의 경우 왼쪽 상단의 설정메뉴로 들어가보면 환경설정 메뉴가 있습니다.

 

 - 환경설정으로 들어가서 재생항목에 보면, 재생시 창 크기 설정이 있고, 여기를 최대화 화면으로 설정해주면 됩니다.

 - 그럼 보드를 연결하고 코드를 업로드 해줍니다.

 

「 이 과정에서 OS버전이나 PC환경에 따라 업로드가 잘 안 되는 문제가 생길 수 있는데, 레오나르도 보드의 특성상 키보드장치로 인식이 되어 있을 때 업로드를 위한 통신이 안 되기 때문입니다. 이럴 때는 업로드 버튼을 누르자마자 보드의 리셋키를 눌러 키보드 장치 인식이 끊어진 순간 데이터를 업로드 하면 해결되는데, 타이밍을 잘 맞추어야 합니다.

현재는 업데이트 되어 자동으로 장치 인식기능을 켜고 끄면서 업로드가 자연스럽게 잘 됩니다.

만약, 그 밖의 에러가 날 경우, 통신포트가 제대로 체크되어 있는지? 네오나르도 보드로 선택이 잘 되어 있는지 한 번더 확인해보세요.」

 

 - 코드를 살펴보면, 초음파 센서로 물체와의 거리 값을 구해냅니다.

 distance = pulseIn(echoPin, HIGH)/58; //에코핀 입력의 거리값을 cm단위로 계산 

 

 - 그래서 물체가 20cm 이하로 들어오게 되면, 동영상의 바로가기 아이콘에서 지정해 놓은 단축키를 누르도록 코딩이 되어 있기 때문에 영상에서처럼 동영상이 자동으로 실행이 됩니다.

  if (distance < 20) {       // 물체(사람)가 20cm 이하 되면 감지(LED경보 작동) 
    Keyboard.press(KEY_LEFT_CTRL); // '왼쪽 Ctrl 키' 
    delay(2);   
    Keyboard.press(KEY_LEFT_ALT);  // '왼쪽 Alt 키' 
    delay(2);   
    Keyboard.press('1'); // 숫자'1'  
    delay(500);          // 시간지연을 두어 여러번 실행되는 것을 방지함 
    Keyboard.releaseAll(); // 키를 계속 누르지 있지 않도록 함 
    delay(10000); 
  } 

 

- 마지막으로 시리얼 모니터창을 열어 측정되는 거리값과 함께 영상이 잘 실행되는지 확인해보세요.

만족스럽게 실행이 잘 될 것입니다.  ^^

 

 

만약 PC를 라즈베리파이로 바꾼다면 더욱 소형화 시킨 작품을 만들 수 있겠네요.

 

 

 

오늘 학습내용은 여기까지 이며,  다음 학습영상을 기대해주세요~

감사합니다. ~~~ ^^

 

 

=== 아두이노 네오나르도 에러 잡기! ===

1. 만약 아래와 같은 HID.h  HID.cpp 에러가 난다면, HID.cpp 파일을 아래 경로에서 찾아 백업후, 삭제를 하거나 파일명을 변경해 놓는다.

 

[ 에러 증상 ]

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HID.cpp:17:10: fatal error: Platform.h: No such file or directory
 #include "Platform.h"
          ^~~~~~~~~~~~
compilation terminated.
"Keyboard.h"를 위한 복수개의 라이브러리가 발견되었습니다
 사용됨: C:\Program
"HID.h"를 위한 복수개의 라이브러리가 발견되었습니다
 사용됨: C:\Program
exit status 1
보드 Arduino Leonardo 컴파일 에러.

 

[ 에러 해결법 ]

HID.cpp 파일을 아래 경로에서 찾아 백업후, 삭제를 하거나 파일명을 변경해 놓는다.

경로 : C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino

( ※ 아두이노가 설치된 환경이 다를 수 있으므로, 'avr  이부분을 참고하여 찾거나, 찾기 명령으로 ' HID.CPP ' 파일을 찾아서 처리한다. )

 

 

반응형
반응형

【 아두이노ProMini#2 초소형 블루투스 리모컨 만들기! for RC CAR ( Arduino Pro Mini) 

 지난시간, 블루투스 조이스틱으로 제어되는 소형 미니카를 만들어 보았다. 하지만 무언가 아쉽다. 아두이노 우노로 리모컨을 만들다 보니 크기가 거의 미니카와 차이 없을 정도로 크게 느껴졌다. 그래서 이번엔 아두이노 프로미니를 이용해서 한 손에 쏙들어가서 컨트롤 할 수 있도록 작게 만들어보려한다. 앞선 실습을 진행했다면 무난하게 만들 수 있을 것이다.  
(필요한 경우, 선수학습 부분을 참고하면 문제 없을 것이다)

 Let's get it~!

 

▶ 선수학습 :

    1. [아두이노 모듈#14] 조이스틱 Joystick 사용하기 #1 ☜ (클릭)

    2. [아두이노 모듈#6] 조이스틱 미니카 만들기 (유선 미니카 기본 참조)  ☜ (클릭)

    3. [아두이노 Proj#6]  선없는 무선 미니카 만들기 (무선 미니카 참조) ☜ (클릭)

    4. [아두이노 모듈#16] 아두이노... 블루투스통신 (블루투스 설정법 참조) ☜ (클릭)

    5. [아두이노 모듈#18] 아두이노... 블루투스통신 (블루투스 제어법 참조) ☜ (클릭)

    6. [아두이노 Promini#1] 아두이노 프로미니 사용하기(프로미니 사용법 참조) ☜ (클릭)

 

▶ 실습 회로 도면 :

▶ 실습목표  :  

    1. 프로미니 보드에 대해 이해하고 기본 사용법을 익힐 수 있다.

    2. 프로미니의 UART 통신을 위한 FTDI사의 FT232RL 모듈 사용법을 익힐 수 있다.

    3. 소형베터리 사용하며 작은 프로토타입의 작품을 만들어 볼 수 있다. 

 


▶ 코딩 :

 

/*  블루투스 조이스틱 조정기 만들기        */
#include  <SofrwareSerial.h>
SoftwareSerial BTSerial(2, 3);    // BTSerial(Rx, Tx)
int BTstates=0;       // 블루투스 신호 상태 저장용 변수
const int X_AXIS =0;    //마우스 X 축 (A0)
const int Y_AXIS =1;    //마우스 Y 축 (A1) 
int xVal=0;
int yVal=0;

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

void loop() {  
  xVal=map(analogRead(X_AXIS),0,1023,100,0); //x축값 읽어 저장 
  yVal=map(analogRead(Y_AXIS),0,1023,300,200); //Y축값 읽어 저장
  
  // 모터 전진 //
  if (xVal >= 60 && yVal >= 225 && yVal <=275)  { 
    BTSerial.write('f');
    Serial.println('f');
  }
  
  // 모터 후진 //
  else if (xVal <= 40 && yVal >= 225 && yVal <=275)  { 
    BTSerial.write('b');
    Serial.println('b');
  }
  
  // 모터 좌회전 //
  else if (yVal <= 240 && xVal >= 25 && xVal <= 75)  { 
    BTSerial.write('l');
    Serial.println('l');
  }

  // 모터 우회전 //
  else if (yVal >= 260 && xVal >= 25 && xVal <= 75)  { 
    BTSerial.write('r');
    Serial.println('r');
  }

 else { 
    BTSerial.write('s');
    Serial.print('s');
  }
  delay(100); 
}

 

 

▶ 코드 다운로드 :

04_Blue_Joystick.zip
0.00MB

▶ 회로 동작 영상 :

(YouTube : 1080P 고화질로 보기)

https://youtu.be/XG2exuDnex8

 

<카카오로 보기>

 

 

 

반응형
반응형

【 아두이노ProMini#1 아두이노 프로미니 사용하기~! ( Arduino Pro Mini)

 아두이노 프로미니 보드를 사용해보자! 아두이노에는 크기 및 성능이 다양한 여러 종류의 보드가 있는데,  응용하고자 하는 목적과 활용되는 환경에 따라 선택할 수 있다.  물론, 우노를 사용할 줄 안다면 나머지 보드들도 쉽게 사용할 수 있을 것이다.

 사이즈가 작은 것을 만들고자 한다면, 아두이노 나노(Nano) 혹은  프로미니(Pro Mini)를 선택할 수 있다. 나노보드는 사이즈가 작고 우노 환경과 거의 흡사하여 어렵지 않게 바로 사용할 수 있다.  그리고 프로미니 보드는 나노보드보다 더 작은 장점이 있다. 하지만 컴퓨터와 통신할 수 있는 모듈을 별도로 사용해야 하는 번거러움이 있는데,  방법을 한 번 알고 나면 크게 어렵지 않으니, 지금부터 설명을 잘 봐주기 바란다. 

 ▶ 아두이노 프로미니 사양 :

▶ 프로미니 보드 핀 정보

▶ FT232RL 모듈 사용하기 :

 아두이노 프로미니에는 PC의 USB to TTL(Serial) 연결(통신)을 담당해주는 기능이 빠져 있다. 크기를 더욱 작게 만들기 위한 방법으로 다소 번거롭지만 실제 작품에 적용할 때는 조금이라도 더 작으면 활용하기가 좋을 것이다.   그래서 통신을 위한 모듈을 사용해야 하는데, 가장 많이 사용되는 FTDI 사(社)의 'FT232RL' 모듈에 대해 함께 다루고자 한다. 

UART(USB toTTL) 통신용 FT232RL 모듈

 우선 해당 모듈을 PC에 인식시키려면 드라이버 설치부터 진행해야 한다. 

 1. 홈페이지에 접속한다. (구글 검색: 'FT232RL driver' 등으로 검색)  

   ( 다운로드 페이지 :  https://www.ftdichip.com/Drivers/VCP.htm  )

CDM21228_Setup.zip
2.29MB

 2. 운영체제에 맞는 파일을 선택 다운로드 후 압축을 풀고 설치를 진행한다.

 3. 모듈을 PC와 연결하고 "제어판》장치관리자》포트" 부분을 확인해보면 USB Serial 포트 하나가 추가 된 것을 확인 할 수 있다. 

 4. 그럼 아두이노 프로미니와 FT232RL 모듈을 케이블로 아래그림처럼 나란히 연결한다.

최종적으로 이렇게 연결 되게 한다.  [   Pro-mini   ↔ FT232RL   PC   ]

 

 

▶ 프로미니 보드 사용하기

1. 아두이노 IDE(스케치)를 실행시키고 아래처럼 보드 정보와 포트를 선택해 준다.

2. 프로미니 보드에 샘플 코드를 업로드 해서 실행시켜 본다. 

  간단한 예제로 아두이노 보드마다 기본 삽입되어 있는 LED를 켜보도록 하자.  

프로미니 보드에 빌트인 되어 있는 LED가 코드에 따라 깜빡이는 것을 확인 할 수 있다.

 

이제 우노(Uno) 보드에서 활용했던 작품들을 프로 미니 보드로 더 작고 멋지게 만들어 보자~!  ^^

 

 

 

▶ 전과정 영상으로 확인하기

[ YouTube 고화질(1080P)로 보기 ]

https://youtu.be/LL8rIIgfaAk

[ 카카오로 보기 ]

 

반응형
반응형

【 레오나르도활용#5 조이스틱 마우스 만들기! (Leonardo

 아두이노 레오나르도(Leonardo)에 조이스틱을 이용하여 PC 마우스를 만들어 보자~!

아두이노.cc 에서 제공되는 마우스관련 함수를 이용하면 어렵지 않게 간단히 구현 할 수 있다. 

Let's get it~!

▶ 선수 학습 :

    1. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스팩& 설치-연결 참조)  ☜ (클릭)

    2. [레오나르도 활용#3] 어두워지면 PC화면 잠그기 (레오나르도 보드& 단축키사용 참조)  ☜ (클릭)

    3. [레오나르도 활용#3] 어두워지면 PC강제 종료시키기(셧다운 명령 & 윈도우 단축키사용 참조)  ☜ (클릭)

      

▶ 실습 목표 :  
 1. [ 키보드 키 값 제어 함수에 대해 이해할 수 있다. ]
 2. [ 레오나르도 보드를 이용해 PC를 제어(종료)할 수 있다. ]
 

 3. [ 레오나르도 보드와 Joystick 모듈을 이용해 PC 마우스를 만들어 볼 수 있다. ] 

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

 

▶ 프로그램 코드 및 설명 1 : 

/* 아두이노 조이스틱 마우스 만들기  */

#include  <Mouse.h>
const int LEFT_BT=4;     //마우스 좌버튼
const int MIDDLE_BT=3; //마우스 가운데 버튼
const int RIGHT_BT=2;   //마우스 우버튼
const int X_AXIS =0;     //마우스 X 축 (A0)
const int Y_AXIS =1;     //마우스 Y 축 (A1)

  
void setup ( ) {  

  Mouse.begin();    // 마우스 컨트롤 관련 함수 선언   
  pinMode(LEFT_BT, INPUT);
  pinMode(MIDDLE_BT, INPUT);
  pinMode(RIGHT_BT, INPUT);  

}

 

void loop ( )  {

  int xVal=readJoystick(X_AXIS);   //x축값 읽어 저장 
  int yVal=readJoystick(Y_AXIS);   //Y축값 읽어 저장

  Mouse.move(-xVal, yVal, 0);      //해당 좌표로 마우스 이동
  // '-' 부호를 통해 상하좌우 위치 반대로 조정 가능                              
  readButton(LEFT_BT, MOUSE_LEFT);   //좌측 버튼
  readButton(MIDDLE_BT, MOUSE_MIDDLE); //가운데 휠 버튼
  readButton(RIGHT_BT, MOUSE_RIGHT);     //우측 버튼
  delay(5);  
}

 

int readJoystick(int axis)  {
  int val=analogRead(axis);
  val=map(val, 0, 1023, -4, 4);  //입력값 맵핑(미세조정 :-3,-3 ~ -10, 10) 
  if(val <=2 && val >= -2)   // 미세한 이동 값은 반영 되지 않도록 함 
    return 0;                       
  else
    return val;                     //맵핑된 값 전달 
}

// 버튼 누름 판별하여 마우스 클릭 처리 (함수)
void readButton(int pin, char mouseCommand)  {
  // 버튼을 눌렀을 때, 
  if(digitalRead(pin)==HIGH)  {
    if(!Mouse.isPressed(mouseCommand)) {  //클릭상태가 아니라면,    
      Mouse.press(mouseCommand);          // 클릭 처리
    }
  }
  else {                // 이미 클릭 되어 있던 상태라면  
    if(Mouse.isPressed(mouseCommand)) {
      Mouse.release(mouseCommand);   //릴리즈(누르지 않음)처리
    }
  }
}

 

※ Arduino 제공 레퍼런스 참조 (마우스 관련 함수 등)

https://www.arduino.cc/reference/en/language/functions/usb/mouse/

Functions

Mouse.begin()
Mouse.click()
Mouse.end()
Mouse.move()
Mouse.press()
Mouse.release()
Mouse.isPressed()

 

▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)

03_MouseControl.zip
0.00MB

▶ 영상강좌 :  

(유튜브로 보기)

https://youtu.be/jBXkvg5PBpg

 

(전체화면 보기로 보세요)

 

 

반응형
반응형

【 레오나르도활용#4어두워 지면 PC 종료 시키기! (Leonardo

 아두이노 레오나르도(Leonardo)를 이용하여 주변이 어두워지면, PC를 자동으로 종료 시켜 보도록 하자. 원리는, 레오나르도 보드는 키보드(마우스)와 같은 장치로 인식되며, <Keyboard.h> 함수를 활용하여, 키보드 키값을 PC로 입력할 수 있다.  이에 따라 '윈도우 종료 단축키를 활용하거나, shutdown.exe 명령과 조합하면 PC를 쉽게 종료시킬 수 있다.  

본 내용에서는 윈도우 운영체제를 기준으로 하지만, 내용을 잘 참고하면, 다른 OS의 PC도 종료 가능 할 것이다. 

Let's get it~!

 

▶ 선수 학습 :

    1. [아두이노 기초#3] 포토레지스터(CDS)제어 (cds 광센서 참조)  ☜ (클릭)

    2. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스팩& 설치-연결 참조)  ☜ (클릭)

    3. [레오나르도 활용#3] 어두워지면 PC화면 잠그기 (레오나르도 보드& 단축키사용 참조)  ☜ (클릭)

      

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 광센서(cds)를 연결하여 제어할 수 있다. 
 2. [ 키보드 키 값 제어 함수에 대해 이해할 수 있다. ]
 3. [ 레오나르도 보드를 이용해 PC를 제어(종료)할 수 있다. ]
 

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

 

▶ 프로그램 코드 및 설명 1 : 

/* 어두워지면 자동 PC 종료 시전하기 */

/* 어두울 때 자동 PC 종료 시키기 */    
#include <Keyboard.h>   
const int CDS = 0; //cds 센서를 A0 포트에 연결 
const int PC_Off = 10;  
void setup ( ) {  
  Keyboard.begin(); //키보드 컨트롤 관련 함수 선언   
  Serial.begin(9600);
}
void loop ( )  {
  int Brightness = analogRead(CDS);  //조도값을 읽음 
  Serial.println(Brightness); 
  // PC_Off 값 이하가 되면 종료 배치파일(단축키) 실행 
  if(Brightness < PC_Off) {  
    Keyboard.press(KEY_LEFT_CTRL);   // '왼쪽 윈도우 키'
    Keyboard.press('x');  //소문자'x', ASCII값 (120)도 가능 
    delay(200);      // 일정시간 값이 입력 되도록 시간지연 
    Keyboard.releaseAll( );  // 키를 계속 누르지 있지 않도록 함
   delay(200);
    Keyboard.press('u');  // ‘u’ 단축키 누르기|
   delay(200);
   Keyboard.releaseAll( );
   delay(200);
    Keyboard.press('u');  // ‘u’ 단축키 한번 더 누르기|
   delay(200);
   Keyboard.releaseAll( );   delay(200);    }   
}   // ※ 단, 윈도가 업데이트 필요한 상태이면 업데이트를 완료해야 적용 됨

※ ASCII 코드 값 참고

※ Arduino 제공 레퍼런스 참조 (키보드 관련 함수 등)

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Functions

Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

 

▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)

02_PCOff.zip
0.00MB

 

▶ 단축키 실행 바로가기 파일 만들기 ( shutdown.exe )

(바로가기 파일 만들기에 관한 내용은 영상에서도 자세히 설명되어 있음)


 ① 바탕화면에서, 마우스 우큭릭 → 새로만들기 → 바로가기 클릭

 

 ② 항목 위치 입력 란에,  다음을 입력 : ' shutdown.exe -s -f -t 60 '

 → 띄어 쓰기 주의!  옵션 : -s (윈도우 종료) ,   -f (실행중프로그램도 강제종료)

-t 60 (60초 후 종료,  1시간 후 종료는 3600, 즉시 종료는 0 입력)

 

③ 바로가기 이름 제목에 PC종료(아무 이름 입력 가능) 

 

④ 바로 가기 키 부분에 마우스 커서를 클릭 해놓고 Ctrl +Alt 키를 누르면서 'x' 키를 누르면 자동으로 단축키가 입력됨

 

⑤ 바로가기 단축키는 Shift 도 가능하고, x 아닌 다른 문자 등의 조합, 2키 조합, 모두 가능, 단 윈도우 응용프로그램 등에서 사용하는 단축키와 겹칠 수 있기에 사용하지 않는 단축키로 지정하면 되고, 'x' 와 같은 알파벳은 소문자를 입력해도 자동으로 대문자로 입력이 된다.   하지만 아두이노 프로그램에서는 반드시 소문자로 입력해야 함.

⑥ 만들어진 "PC 종료" 바로가기 아이콘

이제 'Ctrl+Alt+x' 키를 실행해도, 또는 이 파일을 직접실행 더블 클릭 실행하여도 PC가 종료 될 것이며, 
아두이노와 CDS 센서를 이용하여 어두워지면 자동으로 PC를 종료시켜볼 수 있다. 

 

★ 바로가기( shutdown.exe ) 파일 활용의 장점 :

 바로가기 파일 없이, 윈도우 단축키 만으로도 종료가 가능하나, 운영체제 별로 단축키가 다르기 때문에 불편하고, shutdown.exe 바로가기를 만들면 단축키를 원하는대로 지정 고정 시킬 수 있어서 좋다.  

 

▶ 영상강좌 :  

(유튜브로 보기)

https://youtu.be/ngFxsdT-qB4

 

 

(전체화면 보기로 보세요)

 

반응형
반응형

【 레오나르도활용#3어두워 지면 PC화면 잠그기 (Leonardo

 아두이노 레오나르도(Leonardo)를 이용하여 밝기에 따라 PC화면을 잠금 모드로 전환 시켜보자 !

원리는, 레오나르도 보드는 키보드(마우스)와 같은 장치로 인식되며, <Keyboard.h> 함수를 활용하여, 키보드 키값을 PC로 입력할 수 있다.  이에 따라 '윈도우 화면 잠금' 단축키 ( '윈도우키' + 'L') 를 입력시켜 화면 잠금을 제어할 수 있는데, 광도전셀(cds) 소자를 이용해 어두울 때 화면 잠금이 되도록 구현 할 수 있다. 

  Let's get it~!

▶ 선수 학습 :
      1. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스팩& 설치-연결 참조)  ☜ (클릭)
      2. [아두이노 기초#3] 포토레지스터(CDS)제어 (cds 광센서 참조)  ☜ (클릭)

      

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 광센서(cds)를 연결하여 제어할 수 있다.
 2. [ 키보드 키 값 제어 함수에 대해 이해할 수 있다. ]
 3. [ 레오나르도 보드를 이용해 PC를 제어할 수 있다. ]
 

 

▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

▶ 프로그램 코드 및 설명 1 : 
/* 어두울 때 자동 PC 잠금모드 시키기 */

#include <Keyboard.h>   
const int CDS = 0; //cds 센서를 A0 포트에 연결
const int PC_Hold = 30;  
void setup ( ) {  
  Keyboard.begin(); //키보드 컨트롤 관련 함수 선언  
  Serial.begin(9600);
}

void loop ( )  {
  int Brightness = analogRead(CDS);  //조도값을 읽음
  Serial.println(Brightness);
  // PC_Hold 값 이하가 되면 잠금모드 키 실행
  if(Brightness < PC_Hold) { 
    Keyboard.press(KEY_LEFT_GUI);   // '왼쪽 윈도우 키'
    Keyboard.press('l');  //소문자'l', ASCII값 (108)도 가능
    delay(100);      // 일정시간 값이 입력 되도록 시간지연 
    Keyboard.releaseAll();  // 키를 계속 누르지 있지 않도록 함
  }
}

 

※ ASCII 코드 값 참고

※ Arduino 제공 레퍼런스 참조 (키보드 관련 함수 등)

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Functions

Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

 

▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)

01_PCLockScreen.zip
0.00MB

▶ 영상강좌 :  
(아래는 유튜브로 시청하기)

https://youtu.be/CrjuJH4Bx3M

 

(전체화면 보기로 보세요)

 

반응형
반응형

【 Leonardo #3 Visualize Temperature& Brightness Data on your PC with Leonardo

 Using the Arduino Leonardo board, you can store data from a temperature sensor and a light sensor (CDS) in real time on a PC. This data can be visualized through the Processing IDE.
Let's have fun!   

 

▶ Pre-learning :
      1. 【 Leonardo #1】 Let's collect Temperature & Brightness data to PC! ☜ (Click)

 

▶ The Goal  

1. Screen size (width x height pixels): 500 x 500)You can connect and operate the temperature sensor (Tmp36) and the light sensor (cds) circuit on the Leonardo board.

2. Background color and lines: background (180), stroke (0), strokeWeight (5), fill (255, 20)You can send data from the temperature sensor and the light sensor to the notepad.

3. Circle drawing uses ellipse (x, y, diam, diam) functionTransmitted data can be visualized with processing IDE coding.

 

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 온도센서(Tmp36)와 광센서(cds) 회로를 연결하고 동작시킬 수 있다.
 2. [ 온도센서와 광센서로 부터의 데이터 값을 PC메모장을 통해 전송 시킬 수 있다.]
 3. [ 전송된 데이터를 엑셀 등을 이용해서 활용해 볼 수 있다 ]
 

 4. [ 전송된 데이터를 프로세싱 IDE 코딩을 통해 보기 좋게 비주얼화 시킬 수 있다. ] 

 

▶ Connection diagram :
  ( Click image to enlarge )

▶ 실행 결과 이미지 :

온도 밝기 센싱값 출력화면

 【Arduino Coding】  : 
/* Leonardo board Transfer temperature & brightness data to PC with Leonardo board */

#include <Keyboard.h>   
const int TEMP = 0;    // A0 port
const int CDS = 1;    // A1 port  
const int LED = 12; 
const int BUTTON = 11; 
boolean lastBtn = LOW; 
boolean currentBtn = LOW; 
boolean running = false; 
int counter = 1;

void setup ( ) {  
  pinMode(LED, OUTPUT);
  Keyboard.begin();
  Serial.begin();
}

void loop ( )  {
  currentBtn = debounce (lastBtn); 
  if (lastBtn == LOW && currentBtn == HIGH) //Click the button
  { 
     running = !running;   // Change state values backwards 
   } 
  lastBtn = currentBtn; // Update button state values
  if (running) // Writing data 
  { 
     digitalWrite(LED, HIGH); 
     // The millis () function returns the data in ms.
     // So this function is used when the delay () function is not available
   if (millis()%1000 == 0) // Execute if statement every second
   { 
      int temperature = analogRead(TEMP); 
      int  brightness = analogRead(CDS);
      float mVoltage = temperature*5000.0/1024.0; //Converted to Celsius temperature 
      float TempDotC = (mVoltage - 500) / 10.0;   //Converted to Celsius temperature
      Keyboard.print(counter);  // Data numbering before each line 
      Keyboard.print(",");
      Keyboard.print(TempDotC);  // Temperature data
      Keyboard.print(",");
      Keyboard.print(brightness);   // Brightness data
      Keyboard.print("\n");
      counter++;
    }     
  } 
  else 
  { 
    digitalWrite(LED, LOW); 
  } 
}

// Generate subfunctions to prevent button bouncing
boolean debounce (boolean last) 
{ 
  boolean current = digitalRead (BUTTON); 
  if(last != current) 
  { 
    delay(5); 
    current = digitalRead(BUTTON); 
  } 
  return current;     
}

▶ Arduino Code download : 
( The code is zip compressed.)

Eng_TMP36CDStoPC_Arduino-code.zip
0.00MB

---------------------------------------------------------------------------------

 

 【Processing Coding】  : 
/* Visualizing Temperature & Brightness Data on a PC */

PImage imgCDS;
PImage imgTemp;
PFont font;
import processing.serial.*;
Serial port;
String temp ="";
String br ="";
String data="";
int index=0;

void setup () {
  size(800, 600);
  background(255);
  port =new Serial(this, "COM21", 9600);
  port.bufferUntil('.');
  font=loadFont("Arial-Black-50.vlw"); 
  textFont(font, 200);  
}
void draw() {
  background(255,255,255);
  imgTemp = loadImage("Temp1.png");
  imgCDS = loadImage("cds1.png");
  image(imgTemp, 0, 0);
  image(imgCDS, 450, 10, 250,250);    

  fill(150, 150, 10);
//  textSize(80);
  text(temp, 70, 500);
  fill(50, 0, 200);
  text(br, 450, 500);
}
void serialEvent(Serial port) {
  data=port.readStringUntil('.');
  data=data.substring(0, data.length()-1);
  index=data.indexOf(",");
  temp=data.substring(0, index);
  br=data.substring(index+1,data.length());
}

 

▶ Download Processing code :
( The code is zip compressed.)

imageTempCDS (Ras).zip
4.87MB

 

▶ Making Processing Font
(In order to use the window font on the processing output screen, it is necessary to convert the bitmap font into a usable bitmap font in the following process)

[Tools menu  》 "Create font"  》 Select font (size)  》 "Click OK"  》 Copy file name  》 "Paste into processing code]

 

▶ Video lecture :  
(Look in full screen view)

(youTube)

https://youtu.be/1E1DgOqXY2o

 

 

Troubleshooting :  
 If you get the following error when running a sketch in the Arduino IDE: 

 

If the above error appears, you need to confirm that you have selected the board as a Leonardo board from the board menu under Tools menu in the Arduino sketch. If the board selection is not selected by Leonardo, it will not be able to run even if it is compiled, and this will cause a 'Keyboard' error.

 

 

반응형