라즈베리파이는 기본적으로 UART로 콘솔에 접속하도록 되어 있다.
따라서 시리얼통신을 위해 config 파일 두개를 수정해야한다.
아래의 붉은색 부분 제거.
vi /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait ip=169.254.105.114
타 블로그에 보면 kgdboc=ttyAMA0, 115200 도 있는데 필자의 경우엔 없었다. 이 내용도 있다면 이거도 제거.
아래의 파일에서 다음 부분 주석처리. (맨 앞에 # 붙이기)
vi /etc/inittab
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
이제 어떤 모듈을 사용하여 시리얼 통신을 하겠냐에 따라 달라지겠지만,
라즈베리파이의 GPIO14(TX), GPIO15(RX)를 모듈과 연결시키면 된다.
모듈에 따라 추가적으로 연결해야 할 부분이 있겠지.
필자의 경우 블루투스모듈을 사용했는데, 전압, 그라운드, TX, RX 네 개의 GPIO를 사용했다.
모듈의 TX, RX와 라즈베리파이의 TX, RX를 교차하여 연결하여야 했다.
시리얼 통신 샘플 코드 (WiringPi 라이브러리 사용)
// gcc -o test test.c -l wiringPi #include <stdio.h> #include <errno.h> #include <wiringSerial.h> int main(void){ int fd; int data; fd = serialOpen("/dev/ttyAMA0", 115200); if(fd < 0){ fprintf(stderr, "Failed to open serial device: %s\n", strerror(errno)); } printf("\nRaspberry Pi UART Test\n"); while(1){ data = serialGetchar(fd); printf ("\nRecv Data: %c", (char)data); serialPutchar(fd, data); serialPuts(fd, "\n"); fflush(stdout); } return 0; } |
'Info' 카테고리의 다른 글
Info - 프로그래밍 참조 사이트 (0) | 2016.08.31 |
---|---|
Info - 개행문자 (0) | 2016.08.31 |
RaspberryPi - 라즈베리파이에서 블루투스 사용하기 (1) | 2016.08.31 |
RaspberryPi - 라즈베리파이에서 I2C 설정하기 (0) | 2016.08.31 |
RaspberryPi - 라즈베리파이에서 GPIO, I2C 제어하기 (WiringPi) (0) | 2016.08.31 |