[라즈베리파이] UART 비동기 시리얼 통신 해보기 - 1 (루프백)IoT/Raspberry Pi2022. 1. 18. 22:29
Table of Contents
UART (Universal Asynchronous Receiver/Transmitter)
- 데이터가 비트 단위로 직렬로 전송되는 직렬 통신 프로토콜이다.
- 비동기 직렬 통신은 바이트 지향 전송에 널리 사용된다.
- 비동기 직렬 통신에서는 한 번에 한 바이트의 데이터가 전송된다.
- 1:1 통신이다.
Tx, Rx
라즈베리파이3의 경우 블루투스 포트가 UART포트를 사용한다. 이 부분 처리가 필요함.
Tx 보내는 신호
Rx 받는 신호
UART 맵핑 확인
ls -l /dev
시리얼 속도 확인
sudo stty -F [시리얼]
# 사용법
sudo stty -F /dev/ttyAMA0
시리얼 속도 변경
이건 직접 해본 결과 잘 안되는 것 같았다.
sudo stty -F [시리얼] [속도]
# 사용법
sudo stty -F /dev/ttyAMA0 9600
루프백 예제 ( C )
자기 자신에게 Tx,Rx 회로 설정 후 실행하면 본인에게 아스키 코드가 돌아온다.
#include <stdio.h>
#include <string.h>
#include <wiringPi.h> // delay()
#include <wiringSerial.h>
#define BAUD 9600
int main(void) {
int fd;
unsigned char asc, rec;
// 시리얼 오픈
if((fd = serialOpen("/dev/ttyS0", BAUD)) < 0) {
printf("Device file open error!! use sudo ...\n");
return 1;
}
printf("[UART testing....... loopback]\n");
asc = 65; // 보낼 아스키 코드
while(1)
{
printf("Transmitting ... %d ", asc);
// 시리얼에 아스키코드를 보낸다.
serialPutchar(fd, asc);
// 딜레이
delay(10);
// 만약 Rx에 신호가 있다면 실행
if(serialDataAvail(fd))
{
// 보낸 아스키코드를 받아 rec에 넣는다.
rec = serialGetchar(fd);
// 숫자로 출력, 문자로 출력
printf("===> Received : %d %c\n", rec, rec);
// 버퍼한번 비워준다.
serialFlush(fd);
}
// 딜레이
delay(300);
asc++;
}
return 0;
}
주의점
- 라즈베리파이3 에서는 메인시리얼(ttyAMA0)이 블루투스로 사용되기 때문에 블루투스를 끄는 작업이 필요하다고 하지만. 내가 했을때는 ttyS0으로 작동해도 이상없었다. 그래도 혹시 모르니 글은 남겨 놓는다.
- 통신시 쓰레기값이나 통신 불량이 난다면 전압부터 확인해야한다. 전압이 약할 시 그런 문제가 났다.
- 그 다음 문제는 접지다. 접지 불량때 쓰레기값이 전달된다.
- 전압과 접지가 해결됐을때 다음 문제를 생각해보자.
참고문헌
라즈베리 파이 3(Raspberry Pi3) UART(시리얼) 사용하기
라즈베리파이3에서는 블루투스가 내장되어 있다. 그런데 UART포트를 블루투스에서 사용한다고 있다고 ...
blog.naver.com
Raspberry Pi UART Communication using Python and C | Raspberry Pi
Raspberry Pi has In-built UART which can be used for serial communication with other devices like computer, GSM, GPS modules, etc.
www.electronicwings.com
반응형
'IoT > Raspberry Pi' 카테고리의 다른 글
[라즈베리파이] UART 비동기 시리얼 통신 해보기 - 3 (양방향 통신) (0) | 2022.01.18 |
---|---|
[라즈베리파이] UART 비동기 시리얼 통신 해보기 - 2 (단방향 통신) (0) | 2022.01.18 |
[Raspberry Pi] 라즈베리파이 파이어폭스 설치하기 (0) | 2020.12.24 |
[Raspberry Pi] 원격 데스크탑 연결하기 (0) | 2020.12.24 |
[Raspberry Pi] 한글 폰트 설치하기 , 한글 깨짐 해결 (0) | 2020.12.16 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!