3. 블루투스 시리얼 통신

라즈베리파이에서 시리얼 통신을 사용하기 위해서는 OS상에서 통신 기능을 활성화시켜야 한다.

  1. VNC를 사용한 확인
    라즈베리 아이콘 -> Preference -> Raspberry Pi Configuration

    [Interfaces]

이후 재부팅

  1. putty 터미널을 사용한 확인

3-1. 시리얼 포트 확인

0

3-1-1. 스마트폰과의 통신을 위한 어플리케이션 설치

1. 안드로이드

image.png

채팅을 입력하는 것 처럼 입력 문자열을 라즈베리파이로 보낼 수 있다
또한 m1 ~ m7 단축 버튼을 사용할 수 있다

2. 아이폰

3-2. 시리얼 통신 (데이터 받기)

AttributeError: partially initialized module 'serial' has no attribute 'Serial' (most likely due to a circular import)

한 글자씩 받기 (ser.py)

한 line 씩 받기 (ser2.py)

해당 시리얼 통신으로 스마트폰 - 라즈베리파이가 연결되었으며 이를 putty를 통해 개발자의 pc 모니터로 확인할 수 있다.

3-3. 시리얼 통신 (데이터 보내기)

시리얼 통신 코드의 작성 (ser3.py)

3-4. 시리얼 통신 (응용)

통신 받은 data에서 문자열 확인하기 (ser4.py)

3-5. 쓰레드 활용하기

쓰레드 : 프로그램을 실행하는 일꾼을 추가하여 둘 이상의 코드를 동시에 실행시키는 기능

달리기로 예를 들어보자

쓰레드가 필요 할 만한 코드 (thr1.py)

쓰레드를 사용한 코드 (thr2.py)

작업관리자 - 프로세스 목록 : 단독으로 실행되는 하나의 일

- 멀티 프로세스 : 홍길동 분신 같은거 
- 하나의 CPU에 다양한 프로세스 사용하기

멀티 쓰레드 : 하나의 프로세스를 나누어서 데이터 영역을 공유하면서 프로세스를 운영함.

프로세스 큰 개념 -> 쓰레드 작은 개념.

3-6. 블루투스 시리얼 통신을 이용한 무선 조종 구현하기

1단계. 틀 만들기 (car1.py)

2단계. 기능 구현 (car2.py)

스위치를 이용한 비상 정지 기능 (car3.py)

3-7. RC카에 다양한 기능 추가하기

이동방향 LED로 표시하기 (carAdd1.py)

경적기능 추가 (carAdd2.py)

3-8. 라즈베리파이 부팅 시, 자동 코드 실행

putty 터미널

1. sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

2. open된 nano 에디터의 이미 작성되어 있는 텍스트의 마지막 줄에 lxterminal -e sudo python3 /home/pi/경로/파일명.py 입력
- 해당 코드 입력 후 ctrl+o -> enter 로 저장
- 저장 후에 ctrl+x 나가기
- 저장하고 싶지 않다면 ctrl+o 입력 전에 ctrl+x로 나가기. (이 때 한 차례 저장을 할 것인지 물어보는데 이 때 n을 입력)

3. 재부팅 sudo reboot

4. 재부팅 후 VNC로 원격 GUI를 확인해 보면 별다른 조작 없이도 프로그램이 실행되어 있는 것을 확인 할 수 있다