UNIT 13 라즈베리파이블루투스 광운대학교로봇 SW 교육원 최상훈
Bluetooth Module 2 Bluetooth Slave UART Board UART 인터페이스용블루투스모듈 slave/device mode
라즈베리파이 GPIO 3 < 라즈베리파이 B+ 의 P1 헤더핀 GPIO 배치도 >
wiringpi 라이브러리 4 라즈베리파이 GPIO 라이브러리 GPIO Interface library for the Raspberry Pi http://wiringpi.com/
실습 1 : wiringpi 라이브러리설치 (1/3) 5 라즈베리파이업데이트및업그레이드 $ sudo apt-get update $ sudo apt-get upgrade wiringppi 라이브러리다운로드 $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringpi wiringppi 라이브러리빌드및설치 $ cd wiringpi $./build
실습 1 : wiringpi 라이브러리설치 (2/3) 6 설치확인 $ gpio -v
실습 1 : wiringpi 라이브러리설치 (3/3) 7 GPIO 핀정보확인 $ gpio readall
3v3 Ground 실습 2 : Bluetooth 모듈설정 (1/12) 8 wiringpi 라이브리러를이용핚시리얼통신 구성 Bluetooth Slave UART Board TX RX
실습 2 : Bluetooth 모듈설정 (2/12) 9 /boot/cmdline.txt 파일수정 console, kgdboc 의 ttyama0 부분삭제 변경전 dwc_otg.lpm_enable=0 console=ttyama0,115200 kgdboc=ttyama0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait 변경후 dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait $ sudo vim /boot/cmdline.txt
실습 2 : Bluetooth 모듈설정 (3/12) 10 /etc/inittab 파일수정 변경전 T0:23:respawn:/sbin/getty -L ttyama0 115200 vt100 변경후 #T0:23:respawn:/sbin/getty -L ttyama0 115200 vt100 $ sudo vim /etc/inittab
실습 2 : Bluetooth 모듈설정 (4/12) 11 재부팅 sudo reboot SSH 재접속 minicom 설치 $ sudo apt-get install minicom Bluetooth 접속 $ minicom -b 9600 -o -D /dev/ttyama0
실습 2 : Bluetooth 모듈설정 (5/12) 12 minicom 실행화면 $ minicom -b 9600 -o -D /dev/ttyama0
실습 2 : Bluetooth 모듈설정 (6/12) 13 테스트 AT 키보드입력후 OK 확인
실습 2 : Bluetooth 모듈설정 (7/12) 14 명령어종류 Command AT AT+VERSION Description Bluetooth module 테스트 모듈버젼확인 AT+NAME 이름 Bluetooth ID( 이름 ) 설정 ( 최대 20 자 ) AT+PINnnnn AT+BAUDn 핀번호 (nnnn) 설정 baud rate(n) 설정 2: 2400bps 3: 4800bps 4: 9600bps 5: 19200bps 6: 38400bps 7: 57600bps 8: 115200bps 기본설정상태 Baud rate: 9600 PIN: 1234
실습 2 : Bluetooth 모듈설정 (8/12) 15 명령어입력방법 클립보드를이용해붙여넣음 Ctrl + c Shift + Insert 또는마우스우클릭 예 ) 1. AT+VERSION 클립보드에복사 (Ctrl+c) 2. 터미널창에서 Shift + Insert 또는마우스우클릭
실습 2 : Bluetooth 모듈설정 (9/12) 16 이름변경 AT+NAMEshchoi-bt baud rate 변경 - AT+BAUD8 - minicom 재접속필요
실습 2 : Bluetooth 모듈설정 (10/12) 17 minicom 종료 Ctrl + a 입력 z 입력
실습 2 : Bluetooth 모듈설정 (11/12) 18 q 입력 Yes 확인후 Enter
실습 2 : Bluetooth 모듈설정 (12/12) 19 minicom 실행 $ minicom -b 115200 -o -D /dev/ttyama0 Pin 번호변경 AT+PIN5216 minicom 종료
실습 3 : Bluetooth 페어링 (1/2) 20 안드로이드 bluetooth 기기등록
실습 3 : Bluetooth 페어링 (2/2) 21 안드로이드 bluetooth 터미널앱설치 blueterm 설치 연결 ( 페어링 )
실습 4 : Bluetooth 통신 (1/4) 22 안드로이드에서 RaspberryPi 로데이터전송 uartex1.c #include <stdio.h> #include <string.h> #include <errno.h> #include <wiringpi.h> #include <wiringserial.h> #define EXIT_SUCC 0 #define EXIT_FAIL 1 int main() { int fd; int data; setbuf(stdout, NULL); if(wiringpisetupgpio() == -1){ fprintf(stdout, "Unable to start wiringpi : %s\n", strerror(errno)); return EXIT_FAIL; } // 시리얼통신초기화및속도설정 if((fd = serialopen("/dev/ttyama0", 115200)) < 0) { fprintf(stderr, "Unable to open serial device : %s\n", strerror(errno)); return EXIT_FAIL; }
실습 4 : Bluetooth 통신 (2/4) 23 printf("\nraspberry Pi UART daemon start\n"); serialputs(fd, "Here I'm the Raspberry Pi.\r\n"); serialputs(fd, "Write a message.\r\n"); // to serial // to serial } while(1){ data = serialgetchar(fd); printf("%c",data); } return EXIT_SUCC; // from serial 컴파일 $ gcc -Wall -W -lwiringpi uartex1.c -o uartex1 실행 $ sudo./uartex1
실습 4 : Bluetooth 통신 (3/4) 24 < Raspberry Pi >
실습 4 : Bluetooth 통신 (4/4) 25 통신테스트 안드로이드 터미널에텍스트입력 RaspberryPi 터미널창확인 < Raspberry Pi >
실습 5 : Bluetooth 통신 (1/4) 26 RaspberryPi 에서안드로이드로데이터전송 uartex2.c #include <stdio.h> #include <string.h> #include <errno.h> #include <wiringpi.h> #include <wiringserial.h> #define EXIT_SUCC 0 #define EXIT_FAIL 1 int main() { int fd; int data; setbuf(stdout, NULL); setbuf(stdin, NULL); if(wiringpisetupgpio() == -1){ fprintf(stdout, "Unable to start wiringpi : %s\n", strerror(errno)); return EXIT_FAIL; } // 시리얼통신초기화및속도설정 if((fd = serialopen("/dev/ttyama0", 115200)) < 0) { fprintf(stderr, "Unable to open serial device : %s\n", strerror(errno)); return EXIT_FAIL; }
실습 5 : Bluetooth 통신 (2/4) 27 printf("\nraspberry Pi UART daemon start\n"); serialputs(fd, "Here I'm the Raspberry Pi.\r\n"); serialputs(fd, "Write a message.\r\n"); // to serial // to serial } while(1){ if((data = fgetc(stdin)) == EOF){ printf("eof\n"); break; } if(data == '\n'){ serialputchar(fd, '\r'); } serialputchar(fd, data); } return EXIT_SUCC; // to serial // to serial 컴파일 $ gcc -Wall -W -lwiringpi uartex2.c -o uartex2 실행 $ sudo./uartex2
실습 5 : Bluetooth 통신 (3/4) 28 < Raspberry Pi >
실습 5 : Bluetooth 통신 (4/4) 29 통신테스트 RaspberryPi 터미널에텍스트입력 안드로이드터미널창확인 < Raspberry Pi >
미션 1 : LED 제어 30 Bluetooth 통신을통핚 Raspberry Pi GPIO 제어하기 메뉴출력
미션 1 : LED 제어 31 Raspberry Pi GPIO 제어 GPIO 에연결된 LED 를 ON
미션 1 : LED 제어 32 Raspberry Pi GPIO 제어 GPIO 에연결된 LED 를 OFF
미션 2 : Swtich 모니터링 33 Raspberry Pi GPIO 제어 GPIO 에연결된 Swtich 상태모니터링
미션 2 : Swtich 모니터링 34 Raspberry Pi GPIO 제어 GPIO 에연결된 Swtich 상태모니터링
미션 2 : Swtich 모니터링 35 Raspberry Pi GPIO 제어 GPIO 에연결된 Swtich 상태모니터링