개발/Python

[Raspberry Pi3] 라즈베리파이3 RS232 시리얼 통신 루프백테스트

가비코코보리 2021. 11. 17. 17:13

1. serial , pyserial 설치 

$sudo pip3 install pyserial
$sudo: pip3: 명령이 없습니다

$sudo apt-get install python3-pip

$pip list
Package       Version
------------- ---------
certifi       2020.6.20
chardet       4.0.0
colorzero     1.1
distro        1.5.0
gpiozero      1.6.2
idna          2.10
pip           20.3.4
python-apt    2.2.1
requests      2.25.1
RPi.GPIO      0.7.0
setuptools    52.0.0
six           1.16.0
spidev        3.5
ssh-import-id 5.10
urllib3       1.26.5
wheel         0.34.2

$sudo pip3 install pyserial

$pip uninstall serial
$pip install pyserial

 

2. 터미널에서 pyhton 실행방법

python
Python 3.9.2 (default, Mar 12 2021, 04:06:34)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> #입력하면된다.
>>> a = 3
>>> a
3
>>> exit() #나가기
$ls /dev/tt*
/dev/tty    /dev/tty14  /dev/tty20  /dev/tty27  /dev/tty33  /dev/tty4   /dev/tty46  /dev/tty52  /dev/tty59  /dev/tty8
/dev/tty0   /dev/tty15  /dev/tty21  /dev/tty28  /dev/tty34  /dev/tty40  /dev/tty47  /dev/tty53  /dev/tty6   /dev/tty9
/dev/tty1   /dev/tty16  /dev/tty22  /dev/tty29  /dev/tty35  /dev/tty41  /dev/tty48  /dev/tty54  /dev/tty60  /dev/ttyAMA0
/dev/tty10  /dev/tty17  /dev/tty23  /dev/tty3   /dev/tty36  /dev/tty42  /dev/tty49  /dev/tty55  /dev/tty61  /dev/ttyS0
/dev/tty11  /dev/tty18  /dev/tty24  /dev/tty30  /dev/tty37  /dev/tty43  /dev/tty5   /dev/tty56  /dev/tty62  /dev/ttyUSB0
/dev/tty12  /dev/tty19  /dev/tty25  /dev/tty31  /dev/tty38  /dev/tty44  /dev/tty50  /dev/tty57  /dev/tty63  /dev/ttyprintk
/dev/tty13  /dev/tty2   /dev/tty26  /dev/tty32  /dev/tty39  /dev/tty45  /dev/tty51  /dev/tty58  /dev/tty7

* 블루투스 끄기 

$sudo nano /boot/config.txt

************해당 메세지 추가************** 
**************맨마지막에 추가*************
#bt disabled
dtoverlay=pi3-disable-bt
******************************************

$dmesg | grep Bluetooth
$dmesg | grep ttyAMA0

시리얼 포트에 rx,tx연결 후 아래 코드 실행 

import serial
import threading
import time

ser  = serial.Serial(   port='/dev/ttyUSB0', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE,
                        stopbits=serial.STOPBITS_ONE, timeout=3)
sendData = 'STX;3B30;3B31;3B30;3B31;3B30;3B30;3B30;3B310D0A'
print('S = ' + sendData)

ser.write(sendData.encode())

while res.read() :
        print('R = ', ser.readline())

ser.close()

결과 

시리얼 포트는 전송시 바이트형이어야한다. 

S = STX;3B30;3B31;3B30;3B31;3B30;3B30;3B30;3B310D0A
R =  b'STX;3B30;3B31;3B30;3B31;3B30;3B30;3B30;3B310D0A'

 

참고자료

https://blog.naver.com/hahav000/221322904700

**루프백테스트

https://post.naver.com/viewer/postView.nhn?volumeNo=31037503&memberNo=2534901 

 

Raspberry Pi + Python + SerialPort

[BY 코딩과놀기] 앞으로 라즈베리파이의 다양한 장치들을 테스트해보고 실제로 어떻게 동작하는지를 ...

m.post.naver.com

**시리얼포트 접속 테스트

https://newtype.pe.kr/446

 

Serial-port 관련 자료 정리

centos 에서 Serial-Port를 이용한 파일전송 모듈을 개발하면서 정리한 자료 입니다.   시리얼 포트 상태 확인 장치 확인 $ cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:0000..

newtype.pe.kr

 

**시리얼포트 Doc

https://pyserial.readthedocs.io/en/latest/pyserial_api.html#classes