주의)putty 한글배포판은 글자 깨짐 현상이 있습니다.
1
$ sudo nano /boot/cmdline.txt
//putty.ko.softonic.com/ (putty download site , windows에서 다운로드 및 실행)
위에서 속도를 확인 했으면 115200의 속도를 입력해주고 Open을 클릭하면 된다.
아래와 같은 화면을 확인 할 수 있다. 아무것도 안뜨는 경우 엔터를 한번 입력해준다.
* raspberrypi login : pi , Password : 설정한 비밀번호(설정을 안했을 경우 default password : raspberry)
2) Linux
2-1) 장치 연결 확인
다음 명령어를 통해 현재 PC에 PL2303이 연결 되었는지 확인한다.
1
$ lsusb
위의 사진을 보면 PL2303 Serial Port가 연결된 것을 확인 할 수 있다.
2-2) 장치 번호 확인
다음의 명령어를 통해 현재 PC에 PL2303이 연결된 장치 번호를 확인한다.
1
$ dmesg | grep tty
위의 사진에서 맨 밑줄을 보면 마지막으로 연결된 장치가 무엇인지 어떤 장치인지 확인이 가능하다. 본인 PC에서는 pl2303이 ttyUSB0으로 잡혀있다.
2-3) putty를 이용한 Serial 통신
- sudo apt-get install putty(리눅스에서)
- sudo putty
위의 windows에서와 마찬가지로 putty에서 Serial을 선택하고 2-2)에서 확인한 Serial Port 번호(ttyUSB0)와 속도(115200)을 입력한다.
장치번호와 속도를 입력한 뒤 Open을 해주면 다음과 같은 화면을 볼 수 있다. 이번에도 마찬가지로 화면이 보이지 않으면 엔터를 한번 입력해준다.
* raspberrypi login : pi , Password : 설정한 비밀번호(설정을 안했을 경우 default password : raspberry)
4. Test
uart.c
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <wiringPi.h>
#include <wiringSerial.h>
void uart_ch(char ch);
void uart_str(char *str);
int main(void)
{
char str[100]={0,};
char str1[100]={0,};
if (wiringPiSetup () == -1)
{
fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;
return 1 ;
}
while(1)
{
scanf("%s",str1);
getchar();
sprintf(str,"%s\n\r",str1);
uart_str(str);
}
return 0 ;
}
void uart_ch(char ch)
{
int fd ;
if ((fd = serialOpen ("/dev/ttyAMA0", 115200)) < 0)
{
fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno));
return;
}
serialPutchar(fd,ch);
close(fd);
}
void uart_str(char *str)
{
while(*str) uart_ch(*str++);
}
wiringPi에서 지원하는 함수는 다음과 같다.
더욱 자세히 알고싶다면 //wiringpi.com/reference/serial-library/를 참고하면 된다.
- int serialOpen(char *device, int baud) : 시리얼오픈 함수는 시리얼 포트를 열고 초기화를 하며, 속도(baud rate)를 설정하는 함수이다. 앞의 인자값은 "/dev/ttyAMA0"로 오픈할 시리얼 포트를 지정하며, 두번째 인자는 baud의 통신 속도를 지정하면 된다. 리턴값으로는 에러가 있을 경우 -1을 넘겨준다.
- int serialGetchar(int fd) : 이 함수는 시리얼 포트에서 한 바이트를 받아서 리턴해주는 함수이다. fd는 시리얼 포트를 오픈할때 리턴 된 파일 디스크립터이다.
- void serialClose(int fd) : open했던 시리얼 포트를 닫는다
- void serialPutchar(inf fd, unsigned char c) : 이 함수는 한바이트만큼 전송한다.
- void serialPuts(int fd, char *s) : 입출력 함수중 하나로 쉽게 설명해서 fgets로 저장한 문자열을 fd로 전송하게 된다.
- void serialPrintf(int fd, char *message, ...)
- void serialFlush(int fd) : 수신된 모든 데이터를 삭제한다.
- char *fgets(char *string, sizeof(*string), File *stream) : 이 함수는 텍스트 파일에 저장된 문자를 줄 단위로 읽어들어와 반환하는 함수로서 첫번째 인자는 입력 받은 문자열을 저장할 포인터를 뜻하고, 두번째 인자는 입력 받을 문자의 수를 설정하는 것이며, 세번째 인자는 형성한 스트림의 이름을 뜻한다.