[ ATmega128과 블루투스로 안드로이드폰과 연결하기 ]
엄청나게 삽질을 했는데,
제대로 된 자료는 모두 뿔뿔이 흩어져 있으므로 멘붕올뻔했다.
나와같은 사람들을 보살피기 위하여
자료를 정리하여 포스트 하였다.
아무것도 모르고 잉잉하는 그대여,
포스트를 보고 조금은 힘을 내기를
우선, Rx, Tx를 이용한 RS232통신을 어느정도 알고 있기를 바란다.
엄청 쉽다. 책까지 찾아볼 필요도없고, 인터넷좀 검색해서 1~2시간정도 읽어보라!
통달한다.
자, 아래는 이제 여러분께 전승할 지식들이다.
1. ATmega128과 블루투스 모듈중 하나인 FB155BC는 서로 RS232통신을 한다.
즉, ATmega128에서 블루투스로 데이터를 보내면
블루투스 입장에서는 데이터를 받는것.
쉽게말하면 블루투스 Rx는 ATmega128의 Tx로 연결하라는 뜻이다.
2. 블루투스쪽의 Rx에는 저항을 물려줘야한다. 그저항은 아래와 같다.
※그림이 틀렸습니다. FB155BC앞의 1K옴 저항이
128 앞쪽으로 가야합니다.
꼭 1k 와 1.8k 짜리를 달 필요는 없고
두 저항의 비가 1:1.8 정도 되면 된다.
이렇게 전압이 물릴경우 블루투스로 입력되는 전압을 계산해보라!
ATmega128은 5V인데, 이 저항을 통과하면 3.2V정도가 된다.
블루투스는 3.3V에서 동작하므로, 전압이 얼추 맞게된다.
3. Max232 칩은 필요없다. 그것은 컴퓨터와 연결하기 위한것.
4. 여기까지 세팅이 완료되었으면 블루투스와 RS232통신을 하면 된다.
ATmega128 소스에서 블루투스로 ATcommand 명령어를 내리면 된다.
ATcommand에 대한 내용은 해당 제조사 홈페이지에 잘 나와있다.
첨부파일로 FB155BC에 대한 AT명령어 참고 자료를 올려놓았다.
명령어를 내릴땐 그냥 통신으로 문자열을 보내면 된다.
아래는 Slave로 동작하게 하고, PIN CODE를 1234로 설정하게 만드는 소스코드이다.
unsigned char PutChar0 (unsigned char c)
{
while (!(UCSR0A & 0x20)) ;
UDR0 = c;
return 0;
}
void atcommand (flash unsigned char *s)
{
while (*s != '') {
PutChar0(*s);
s++;
}
}
// 블루투스모듈과 연결된 UART0설정
UCSR0A=0x00;
UCSR0B=0x98;
UCSR0C=0x06;
UBRR0H=0;
UBRR0L=103; //9600
atcommand("at+btrole=s ");
delay_ms(1000);
atcommand("AT+BTKEY=1234 ");
delay_ms(1000);
atcommand("at+btopmode,1 ");
delay_ms(1000);
atcommand("at+btbuff=10 ");
delay_ms(1000);
atcommand("at+btscan ");
5. 블루투스 Ground 전압과, ATmega128의 Ground 전압을 맞춰줘야 한다.
Ground를 공유시켜야한다는 소리.
전압이 다르면 ISP를 뺏을 경우에 비 정상적으로 동작하는 것을 볼 수 있다.
이것때문에 엄청나게 멘붕했었다...
참고 : http://blog.naver.com/PostView.nhn?blogId=in_iris&logNo=120161745127
'MCU > AVR' 카테고리의 다른 글
Datasheet 레지스터 보는 방법 (0) | 2013.12.03 |
---|---|
[AVR] 인터럽트 (0) | 2013.12.03 |
[AVR] 시작하기 전에 알아야 할 것들 (0) | 2013.12.02 |
[AVR] EEPROM 이란 (0) | 2013.10.23 |
[AVR] 2. 초음파센서(SRF05)로 거리측정하기 (4) | 2013.10.23 |