HC-05와 아두이노 간 시리얼 통신을 위해 HC-05의 TXD를 아두이노 RX에, RXD를 아두이노 TX에 연결합니다.
L298 제어를 위해 EN1, EN2 핀을 아두이노의 아무 PWM 핀에 연결하고, L298의 입력 핀 1, 2, 3, 4를 아두이노의 아무 디지털 핀에 연결합니다.
데이터 전송 흐름
위 다이어그램은 신호 전송 과정을 보여줍니다.
사용자가 Node 서버가 제공하는 웹페이지에 접속합니다. URL은 IP 주소와 포트 번호 조합(예: "192.XXX.XXX.129:8080")입니다.
웹페이지에서 버튼을 클릭하면 소켓 통신을 통해 서버가 해당 기능을 수행하도록 트리거합니다.
HC-05 모듈과 블루투스로 연결된 Node 서버가 필요한 데이터를 HC-05로 전송합니다.
HC-05가 시리얼 통신으로 아두이노 우노에 데이터를 전송합니다.
아두이노 우노가 L298 모듈을 제어합니다.
2단계: 서버 설정
서버용으로 Node.js를 설치해야 합니다. 안정 버전이면 아무거나 상관없으며, 저는 11.15 버전을 사용했습니다. 다음 패키지들을 설치해야 합니다:
node-gyp
express
node-bluetooth
socket.io
ejs
참고: 'node-gyp' 설치는 까다로울 수 있습니다. 최신 Node 버전을 지원하지 않을 수 있으니 Node 11.15 버전 설치를 권장합니다.
이제 웹페이지에서 발생하는 이벤트를 리스닝해야 합니다. 웹페이지에서 컨트롤 버튼을 클릭하면 원하는 함수가 실행되도록 서버에 메시지를 보냅니다. 서버는 해당 메시지를 수신해 원하는 기능(블루투스로 데이터 전송)을 실행합니다.
'express'와 'EJS' 같은 패키지로 서버와 웹페이지를 만드세요. 원하는 컨트롤로 웹페이지를 디자인하고, 소켓 서버를 생성해 소켓 연결을 설정하세요. 관련 문서를 참조하세요.
블루투스 설정은 이 문서를 참조하세요. 컨트롤 버튼 클릭 시마다 HC-05 모듈로 메시지가 전송됩니다.
제가 만든 간단한 웹페이지입니다:
3단계: 아두이노 코드
블루투스가 시리얼 통신으로 아두이노 우노와 통신하므로, 명령을 '문자열'로 보내고 종료 문자를 추가해 문자열 수신 완료를 알립니다.
예: 전진 명령은 "forwardT"를 전송하고, 아두이노 쪽에서 'T' 문자를 만나면 시리얼 통신이 완료된 것으로 판단합니다.
수신된 문자열 명령에 따라 L298 드라이버를 제어해 전진, 후진, 좌회전, 우회전, 속도 조절 등을 수행합니다.
아두이노 코드는 첨부 파일을 참조하세요.
4단계: 최종 결과
개선 및 향후 계획
향후 음성 명령으로 로버 제어, 장애물 회피 기능 추가를 계획 중입니다. 이동 거리, 최고 속도, 평균 속도 등 통계 기록을 데이터베이스에 저장하는 기능도 추가할 예정입니다. 온도, 조도, 습도 등 다양한 센서를 추가해 주기적으로 측정하고 DB에 저장하는 기능도 구상 중입니다.