[테크월드뉴스=김경한 기자] 9월에는 핸드폰 앱(APP)을 통해 라즈베리파이 전용 AI RC카인 라즈봇(Raspbot)을 조종하는 방법에 대해 알아봤다. 이번 호에는 라즈봇의 하드웨어 및 직접적인 동작 방법을 살펴보고자 한다. 

구동 부저(Drive buzzer) 

라즈봇 내에 있는 부저를 동작 및 실행시키는 것으로 부저가 라즈봇 확장 보드의 어느 곳에 위치했는지, 다용도 입출력(General-Purpose Input/Output, 이하 GPIO) 변경은 어떻게 진행하는지에 대해 알아본다. 부저의 경우 ‘능동 부저’와 ‘수동 부저’의 두 가지 유형으로 나뉜다. 부저는 내부에 멀티 바이브레이터가 있어 외부에서 작동 전압을 제공하기만 하면 고정 주파수 사운드를 방출할 수 있다. 

수동 부저는 내부 발진 소스가 없고 드라이브 신호의 특정 주파수를 제공하기 위해 외부 드라이브 회로가 필요한 형태다. 라즈봇에는 수동 부저가 내장돼 있으므로 이를 이용해서 진행한다. 하드웨어 인터페이스 매뉴얼을 보면 부저가 라즈베리파이(Raspberry Pi)의 32번 핀에 의해 직접 구동되는 것을 확인할 수 있다[그림 1]. 

[그림 1] 
[그림 1] 

GPIO 핀맵으로 현재 라즈봇과 호환되는 라즈베리파이 4B는 2, 4, 8GB로 모두 같은 형식이다. 이 부분을 참고해 보드 코딩을 진행하며. 현재 지정된 32번 핀이 부저로 지정돼 있기 때문에 코드에서 라즈베리파이 보드의 32핀을 제어해야 한다[그림 2][그림 3].

[그림 2] 
[그림 2] 
[그림 3] 
[그림 3] 

 

■ 동작 코드

- 부저의 정상 작동 여부 체크하기

다음과 같은 경로에 예제 코드가 들어있다. 
- 경로: /home/pi/Yahboom_project/라즈봇/2.Hardware Control Course / 1.Drive buzzer / buzzer test .ipynb

1) 시간 및 RPI.GPIO 라이브러리 가져오기

2) GPIO 핀 번호 모드를 <BOARD>로, 부저 핀을 출력 모드로 설정한다. PWM 출력을 생성하고 사이클은 50이고 범위는 0~100이다. 

3) PWM의 사이클을 0~100 사이로 전환하고 이 상태에서 사이클을 유지한다.

4) 주피터 랩(Jupyter Lab) 메뉴바에서 <stop> 버튼을 클릭하면 루프(loop)를 빠져나온 후 PWM을 <stop>하고 GPIO를 <clear>한다. 

5) 코드 실행
주피터 랩상에서 인터페이스 프로그램을 실행하면 코드가 정상적으로 라즈베리파이로 정상적으로 업로드되면서 인터페이스에서 프로그램을 실행하려면 [그림 4]에 표시된 버튼을 클릭한다. 그러면 부저가 동작하게 된다

[그림 4] 
[그림 4] 

 

- 부저로 악보에 맞춰 연주하기

지금까지 부저가 정상적으로 동작하는지를 확인했으며, 이를 바탕으로 악보 라이브러리를 이용해 부저가 악보에 맞춰 연주하는걸 진행해보도록 하겠다.

다음과 같은 경로에 예제 코드가 들어있다.

- 경로: /home/pi/Yahboom_project/라즈봇/2.Hardware Control Course / 1.Drive Buzzer / Buzzer sing .ipynb

1) 시간 및 RPI.GPIO 라이브러리 가져오기

2) 주파수 목록에 따라 노래의 번호가 매겨진 악보를 비교하면서 노래의 음표 및 비트 목록을 정의한다. 

3) 초기화 기능을 실행하고. GPIO를 보드 코딩 모드로 설정한 후 부저 핀을 PWM 출력으로 설정한다. 주파수 목록에 따라 음악을 재생하는 기능 루프를 실행한다. 

4) 초기화 루프 함수를 호출해 음악을 재생한 후 사각형 정지 버튼을 클릭하면, 루프를 종료하고 GPIO를 지우며 프로그램을 실행한 후 부저 재생 음악을 들을 수 있다. 

구동 모터(Drive Motor)

라즈봇 자동차의 경우, 4개의 TT DC 기어 모터를 사용하는 형태로 TB6612 칩을 통해 구동된다. 드라이버 칩은 라즈베리파이 핀에 직접 연결되지 않으며 라즈베리파이는 IIC를 통해 STM8 MUC와 통신하고 STM8 MCU는 TB6612 칩을 구동해 모터를 구동 할 수 있다. 

 

■ 동작 코드

STM8은 라즈베리파이 보드의 SDA.1, SCL.1에 연결되는 형태로 모터 및 서보 구동 전용 라이브러리 텍스트 --YB_Pcb_Car.py를 제공되며. 모터 드라이버와 같은 디렉토리에 있다. 다음의 경로를 통해 예제코드를 확인 할 수 있다. 
- 경로: /home/pi/Yahboom_project/라즈봇/2.Hardware Control Course / 2.Drive motor

1) 시간 및 YB_Pcb_Car 라이브러리

2) 2초 동안 150의 속도로 차량 전진을 제어한다(속도 범위: 0~255).

3) 2초 동안 150의 속도로 차를 제어한다(속도 범위: 0~255).

4) 정차

5) 동작을 완료한 후엔 <car> 객체데이터를 해제해야 한다. 만약 진행이 계속될 경우엔 프로그램상에서 객체데이터가 정의돼있어 사용할 수 없게 된다. 

마치며

이번 에는 라즈베리파이 전용 AI RC카의 기본적인 운용법과 주피터 노트북에서 코딩하는 법에 대해 알아봤다. 이는 라즈베리파이상에서 코딩을 진행하는 것이 아닌 같은 Wi-Fi 환경에서 주피터 노트북으로 코딩하는 형태로, 기존의 라즈베리파이 RC카와 같이 내부에서 펌웨어 작업 후 진행하는 형태와는 차이가 있다. 이번 호에선 AI 및 무선통신을 통한 기초적인 설정법을 알 수 있었다. 다음 호에선 라즈봇 동작을 조금 더 세부적으로 다뤄 볼 예정이다. 

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지
이 기사와 관련된 기사