아두이노 pro mini

일종의 키트다
.Arduino Pro Mini 5V형
.프로그래밍용 USB 시리얼 변환기
.3색 RGB LED 보드
.사운드 출력용 부저 보드
.광센서 보드
.버튼 보드
.프로토타입(임의 회로 구성용) 보드가 모두 포함되어 있다.

아래 사진과 같다.




일단 모두 하나하나 분리하고 싶지만 
아두이노안에 기본 예제가 프로그래밍 되어 있고 
센서와 아두이노가 연결되어 전원을 넣으면 기본 작동을 한다
가령 라이트센서에 손을 가져가면 RGBLED가 깜박이고,
버튼을 누르면 부저에서 소리를 낸다.
의도한바는 아니겠지만 불량인지 아닌지 확인 가능하다고도 하겠다.

기본 확인이 끝나고 나면 각 부품을 하나씩 떼어 놓고 사용할텐데
센서나 부저는 아두이노 미니 핀에 연결후
연결된 핀을 고려해 스케치하면 되지만
프로그래밍용 USB 시리얼 변환기는 정해진 핀과 연결 해야 한다.
그렇다고 어렵지 않다
처음 분리하기전에 마주보고 있었던 핀순서대로
아두이노 미니와 연결하면 된다.

소스스케치를 하기위해 아두이노 프로그램에서
tool - > board에서 Pro Mini (5V, 16MHz)보드를 선택해야 될것으로 생각되지만
소개 페이지에서는 UNO로 선택하여 업로드 하라고 한다.
실제로 UNO로 선택해야 업로드가 완료 된다.

더 자세한 내용은 아래 참고 페이지를 볼것!!!




프로그램 버전 : Arduino - 1.0

Serial LCD는 일반 LCD모듈 보다 편리하다. 
사실 아무것도 모르고 LCD모듈을 구입한다는 것이 Serial LCD를 구입했고
이것을 사용하기 위해 많은 시간을 소비해야 했다.

사진을 보면 두개중 아래 것이 Serial LCD이다.
앞면


















뒷면


화살표에 (둘중하나)전원과 RX핀 하나만 연결하면 된다.

일반 LCD 모듈을 사용하기 위해서는
아두이노의 LCD라이브러리를 활용하여
소스스케치를 작성하고
아두이노와 LCD모듈을 연결하기 위해서는 
전원을 포함하여 8개이상의 전선을 연결해야한다.

연결그림은 아래와 같다.

회로도와 그림에서

LCD의 E핀과 아두이노의 digital pin 11 연결이 누락됨.

또 LCD모듈이 백라이트를 켠다면 LED+, LED- 핀을 5V와 GND에 추가 연결해야함.






제법 연결할 선이 많다.

LCD화면에 "*"를 이동시키는 스케치다.

#include <LiquidCrystal.h>    //라이브러리 활용

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/* LCD RS pin to digital pin 12
    LCD Enable pin to digital pin 11
    LCD D4 pin to digital pin 5
    LCD D5 pin to digital pin 4
    LCD D6 pin to digital pin 3
    LCD D7 pin to digital pin 2  */

int i=0;

void setup() {
   lcd.begin(16, 2); // LCD창의 크기 선언 16행 2줄
}
void loop() {
   for(i = 0 ; i < 16 ; i++){
      lcd.print("hello, world!");
      lcd.setCursor(i,1);   //커서의 위치 지정
      lcd.print("*");     //LCD에 *표현
      delay(500);
      lcd.clear();    // LCD 깨끗이
   }
}

라이브러리에 등록된 명령으로 LCD를 표현한다.


Serial LCD사용은 매우 간단하다.
다른 Serial 통신기기를 사용하는 것과 같다.
아두이노와 선의 연결도 간단하다.
전원을 넣기 위한 VCC와 GND 그리고 data를 보내기 위한 RX
3개의 선을 연결하면 끝이다.
일반 LCD모듈을 사용하기 위해서는
LiquidCrystal 라이브러리를 이용하지만
SerialLCD는 다른 Serial 통신 장치의 사용처럼
SoftwareSerial 라이브러리를 이용하여 스케치하고
RX선을 이용하 data를 날리면 된다.
SerialLCD의 화면을 지우거나 커서의 위치를 바꾸거나 밝기를 변동하는 등의
제어를 위해서는 이 모듈의 datasheet
언급된 명령을 활용하면된다. 

소스스케치
----------------------------------------------------------------------------------------
/*다음 스케치는 A0에 센서를 연결하여 센서에 읽힌 값을 SerialLCD에 표시*/

#include <SoftwareSerial.h>  //0번과 1번은 usb로 pc와 통신하므로
                                         //0번과 1번포트 이외의 포트를 사용하기 위함.
SoftwareSerial myserial (2, 3);    //2번과 3번을 시리얼통신 TX,RX로 사용하는 myserial라 정의
int sensorPin = A0;
int sensorval = 0;
void setup()  
{
  myserial.begin(9600);    //기계적으로 사용하고자 하는 장치의 bps를 써 넣는다.
//  myserial.write(124);    //SerLCD에 기계적 제어명령을 내림을 알림
//  myserial.write(146);    //SerLCD를 밝기를 조절 128~157 -> 0~100%
/* 밝기 제어는 잘 안됌 SerLCD를 재부탱해야함. 따라서 밝기를 깜박이도록 하기는 힘듬*/
}
void loop()
{
  sensorval = analogRead(sensorPin);
  
  myserial.write(254);     //SerLCD에 제어명령을 내림을 알림
  myserial.write(128);     //SerLCD 16x2화면에 첫줄 첫번째 위치에 커서
                                  //128+(0~15) 값은 첫줄의 1~16번째 항
                                  //128+(64~9) 값은 두번째줄의 1~16번째 항
  myserial.print(sensorval);  //SerLCD에 A0에서 센싱되는 값 표시
  delay(300);
  myserial.write(254);     //SerLCD에 제어명령을 내림을 알림
  myserial.write(1);       //clear display
 
  delay(300);
}
---------------------------------------------------------------------------------------

이전글중 블루투스 장치 설정과
초음파센서 활용 글을 참고 


초음파모듈로 거리를 측정하여 
블루투스르 통해 다른블루투스 장치로 data전송하자
여기서 다른 블루투스장치는 PC다.

통신 경로는
아두이노-블루투스(RN42) <---------->블루투스-PC-com포트를 통한 시리얼 통신프로그램으로 결과 확인
pc에서는 아두이노 블루투스 장치를 추가하여 
장치관리자에서 com포트 확인하여 시리얼통신 프로그램으로 확인한다.

소스 스케치
-------------------------------------------------------------------------------------
/* 블루투스 장치를 이용한 초음파측정값 전송*/

#include <SoftwareSerial.h>   //아두이노 우노에서 시리얼 통신은 기본으로 0번과 1번을 쓴다.
                                        // 이 포트를 중복해서 사용하지 않고 다른 포트를 사용하기 위해서는
                                        // 아두이노에서 제공하는 라이브러리 SoftwareSerial을 사용하면 된다.
SoftwareSerial BTserial(2,3);  // BTserial이라는 이름의 통신장치로 2(TX), 3(RX)포트로 시리얼 통신한는 설정
int sonicPin = 8;   // 초음파센서핀
long sonicval = 0;
long cm, inch;
void setup(){
  BTserial.begin(115200);   // 통신모듈의 baudrate값을 써 통신을 시작
}
void loop(){
  pinMode(sonicPin, OUTPUT);
  digitalWrite(sonicPin,LOW);
  delayMicroseconds(2);
  digitalWrite(sonicPin,HIGH);
  delayMicroseconds(5);
  digitalWrite(sonicPin,LOW);
  pinMode(sonicPin, INPUT);

  sonicval = pulseIn(sonicPin,HIGH);    // 초음파가 반사하여 되돌아온 시간을 저장

  cm = cmtomicro(sonicval);  // cm거리계산
  inch = inchtomicro(sonicval);  //inch거리계산
  BTserial.print(cm);
  BTserial.print("cm  ");
  BTserial.print(inch);
  BTserial.println("inch");  // 블루투스를 통해 다른 장치에 출력
  delay(1000);

}
long cmtomicro(long a){
  return a/29/2;
}
long inchtomicro(long b){
  return b/74/2;
}
 ------------------------------------------------------------------------------

작동영상

'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글

아두이노 pro mini소개  (0) 2012.06.26
LCD모듈과 Serial LCD 사용  (1) 2012.06.26
초음파 센서 활용  (0) 2012.06.26
블루투스 모듈(RN-42) 설정  (2) 2012.06.26
soft potentiometer + RGBLED  (0) 2012.06.26

+ Recent posts