Python 시리얼 출력(serial 통신)

Posted by jungbbong
2015. 7. 24. 13:05 프로그래밍/Python

아두이노와 라즈베리파이간 통신을 하기 위해 선택한 serial 통신


구성도


라즈베리파이에서 serial 통신으로 신호를 보낸다 

아두이노는 해당 신호를 받아서 확인 후에 일치하는 값에 불빛을 변화시킨다 ( 본프로그램에서는 7세그먼트로 구성하였으나 보통 LED로 구성한다 )


이걸사용할목적ㅋㅋ -> 매번 아침마다 귀찮게 강수확인을 하는데 귀찮게 항시 표시를 해주도록 만들기 위함

웹에서 날씨api를 받아서 강수확률 파싱하여 해당 확률을 그대로 7세그먼트에 전송하도록 할생각임


1. 아두이노 쪽 c 코드


3라인의 setup함수에서 7세그먼트의 핀설정을 완료하고

8라인의 Serial에서 bandrate설정을 해준다 9600 python코드에서 bandrate은 일치시켜주어야 한다


loop가 실제 아두이노의 main함수이기 때문에 위의 setup부분은 define 및 initialize하는 부분이다


14라인의 if문은 0~9의 문자가 들어올 경우 해당 부분을 0으로 표기해주는것으로 사용하였다

21라인의 else문에서 해당신호가없을경우 1로 표시를 해주도록 하였다.


*slop이라고 500으로 세팅한값이 있는데 delay시간을 설정한것이다. 0.5초


2.라즈베리파이 쪽 python 코드


python코드는 생각보다 단순하다


6라인에서 Pyserial 플러그인을 통하여 serial설정을 해준다음 물로 9600 아두이노와 동일하게

10라인에서 해당 아두이노가 연결된 serial위치로 1초에 한번씩 문자1을 전송해주는 구조다



아래는 해당코드를 실행하였을 경우 아두이노의 7세그먼트 변화다