개발/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
**시리얼포트 접속 테스트
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