산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Node.js 웹 페이지 제어 로봇 자동차(무선)

구성품 및 소모품

Arduino UNO
× 1
SparkFun 듀얼 H-Bridge 모터 드라이버 L298
× 1
HC-05 블루투스 모듈
× 1
점퍼 와이어(일반)
× 1
배터리, 9V
× 2
DC 모터, 12V
× 2

이 프로젝트 정보

프로젝트 아이디어

Node.js는 실시간 애플리케이션을 위한 최고의 옵션 중 하나입니다. 이전에 소켓을 사용하여 일부 실시간 앱을 작업한 적이 있으므로 동일한 개념으로 자가 학습을 위해 Node.js 서버로 일부 IoT 프로젝트를 만들기로 결정했습니다.

이 Rover는 Bluetooth를 사용하여 Node.js 서버와 통신하고 프런트 엔드에서는 소켓을 사용하여 서버에 명령을 보냅니다.

프로젝트 목표

노드 서버와 하드웨어(이 경우 Rover) 간의 무선 통신을 연구 및 구현하고 소켓을 사용하여 노드 서버에서 제공하는 모바일 웹 페이지로 Rover를 원격으로 제어합니다.

전제 조건

노드, 소켓 프로그래밍 및 L298 모터 드라이버 작동에 대한 기본 지식이 필요합니다.

요구 사항

<울>
  • 1 Arduino Uno
  • <울>
  • 1 L298 모터 드라이버
  • <울>
  • HC-05 블루투스 모듈
  • <울>
  • 점퍼 와이어
  • <울>
  • 배터리 2개 - 각각 9볼트
  • <울>
  • 2 기어 모터(6-9볼트)
  • <울>
  • 2개의 호환 가능한 휠
  • <울>
  • 섀시
  • <울>
  • 우리 서버에 Node.js가 설치된 컴퓨터.
  • 1단계 - 로버 만들기

    Rover를 만드는 것은 그렇게 복잡하지 않습니다. 온라인에서 쉽게 구할 수 있고 모든 조립 장치와 함께 제공되는 "2륜 섀시 키트"를 구입할 수 있습니다.

    Arduino Uno 및 L298 모터 드라이버는 Rover 상단에 내장되어 있으며 둘 다 2개의 9볼트 배터리로 개별적으로 구동됩니다.

    Arduino Uno는 서버와 통신할 HC-05 Bluetooth 모듈에 전원을 공급합니다.

    회로도

    위의 회로도에서 볼 수 있듯이 L298 모터 드라이버는 9V 배터리에 의해 전원이 공급되고 2개의 모터 제어 출력은 모터 A와 모터 B에 연결되며 모터에는 극성이 없으므로 터미널에 연결할 수 있지만 다음을 확인하십시오. 두 모터가 같은 방향으로 회전합니다. 5V 레귤레이터 점퍼를 제거하지 마십시오.

    참고 :12볼트 이상으로 L298에 전원을 공급하면 온보드 5V 전압 조정기가 손상됩니다.

    Arduino Uno는 또한 양극 단자가 Arduino의 Vin 핀에 연결되고 음극 단자가 공통 접지에 연결된 9V 배터리로 전원이 공급됩니다. Arduino는 차례로 Bluetooth 모듈에 전원을 공급하므로 HC-05의 Vcc 핀을 Arduino의 5V에 연결하고 GND를 접지에 연결합니다.

    HC-05와 아두이노의 시리얼 통신을 위해서는 HC-05의 TXD 핀을 아두이노의 RX 핀에 연결하고 HC-05의 RXD 핀을 아두이노의 TX 핀에 연결합니다.

    이제 L298 모듈을 제어하기 위해 EN1 및 EN2 핀을 Arduino의 PWM 핀에 연결할 수 있습니다. 그런 다음 L298의 입력 핀 -1, 2, 3, 4를 Arduino의 디지털 핀에 연결합니다.

    데이터 전송

    위의 그림과 같이 신호의 전송을 나타내는 그림입니다.

    1. 사용자는 노드 서버에서 제공하는 웹 페이지에 액세스합니다. URL은 포트 번호가 사용된 IP 주소입니다(예:"192.XXX.XXX.129:8080").

    2. 사용자가 웹 페이지에서 버튼을 클릭하면 서버가 필요한 기능을 수행하도록 트리거합니다. 이 통신은 소켓으로 인해 발생합니다.

    3. 블루투스를 통해 HC-05 모듈에 연결된 노드 서버는 필요한 데이터를 HC-05 모듈로 보냅니다.

    4. HC-05는 직렬 통신을 사용하여 데이터를 Arduino UNO로 전송합니다.

    5. Arduino UNO는 차례로 L298 모듈을 제어합니다.

    2단계 - 서버 설정

    우리 서버의 경우 Node.js를 설치해야 합니다. 안정적인 버전의 노드를 설치하십시오. 제 것은 11.15 버전입니다. 다음 패키지를 설치해야 합니다-

    <울>
  • 노드 집
  • <울>
  • 표현
  • <울>
  • 노드 블루투스
  • <울>
  • 소켓.io
  • <울>
  • 이즈
  • 참고 - "node-gyp"의 설치는 일부 최신 버전의 Node를 지원하지 않기 때문에 까다로울 수 있으므로 Node의 버전 11.15를 설치하는 것이 좋습니다.

    이제 웹 페이지에서 이벤트를 수신해야 합니다. 웹 페이지와 상호 작용하는 동안 이벤트가 트리거되는 즉시 페이지는 노드 서버에서 실행해야 하는 필수 기능을 방출합니다. 서버는 차례로 해당 메시지를 듣고 원하는 기능을 실행합니다(여기서는 블루투스로 데이터 전송).

    따라서 "express" 및 "EJS"와 같은 패키지를 사용하여 서버 및 웹 페이지를 만듭니다. 원하는 컨트롤로 웹 페이지를 디자인하고 소켓 서버를 생성하여 소켓 연결을 설정합니다. 이 문서를 참조할 수 있습니다.

    블루투스 설정에 대해서는 이 문서를 참조하십시오. 제어 버튼을 클릭할 때마다 메시지가 HC-05 모듈로 전송됩니다.

    여기 내 간단한 웹 페이지가 있습니다 --

    3단계 - Arduino 코드

    Bluetooth는 직렬 통신을 사용하여 Arduino-Uno와 통신하므로 일부 "문자열"을 명령으로 보내고 문자열을 종료하고 캡처하도록 지시하는 추가 문자를 보냅니다.

    예를 들어-:앞으로 나아가기 위해 Bluetooth는 "forwardT"를 전송하고 Arduino 끝에서는 문자 "T"를 만나자마자 직렬 통신이 완료되었음을 알 수 있습니다.

    그리고 들어오는 문자열 명령으로 L298 드라이버가 앞으로, 뒤로, 왼쪽, 오른쪽으로 이동하고 속도를 변경하는 등의 작업을 수행하도록 구성합니다.

    첨부된 아두이노 코드를 찾습니다.

    4단계 - 최종 결과

    개선 사항 및 향후 범위

    차후에는 음성 명령과 장애물 회피 기능을 이용하여 로버를 제어할 계획입니다. 나는 또한 이동 거리, 최대 속도, 평균 속도 등과 같은 통계 기록을 보관할 데이터베이스를 유지할 수 있습니다. 또한 온도, 빛 및 습도와 같은 여러 센서를 추가하고 정기적으로 추적할 것입니다. DB에 저장됩니다.

    다음 버전

    내 다음 프로젝트 "모바일을 사용하는 음성 제어 로버" 확인

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 노드 로버 Arduino 코드
  • 노드 로버 Arduino 코드Arduino
    <사전> const int en1 =9; const int en2 =3; const int inp1 =2; const int inp2 =4; const int inp3 =7; const int inp4 =8;char charRead;String inputString =""; 무효 설정 () { Serial.begin(9600); 핀모드(en1, 출력); 핀모드(en2, 출력); 핀모드(입력1, 출력); 핀모드(inp2, 출력); 핀모드(inp3, 출력); pinMode(inp4, OUTPUT);}void loop() { // 여기에 기본 코드를 넣어 반복적으로 실행합니다. if (Serial.available()) { charRead =Serial.read(); if (charRead !='T') { inputString +=charRead; } else { if (inputString =="forward") { // 앞으로 이동하려면 digitalWrite(inp1, HIGH); 디지털 쓰기(inp2, LOW); 디지털 쓰기(inp3, 높음); 디지털 쓰기(inp4, LOW); } else if (inputString =="backward") { // 뒤로 이동하려면 digitalWrite(inp1, LOW); 디지털 쓰기(inp2, 높음); 디지털 쓰기(inp3, LOW); 디지털 쓰기(inp4, 높음); } else if (inputString =="fleft") { // 왼쪽으로 이동하려면 digitalWrite(inp1, HIGH); 디지털 쓰기(inp2, LOW); 디지털 쓰기(inp3, LOW); 디지털 쓰기(inp4, LOW); } else if (inputString =="fright") { // 오른쪽으로 이동하려면 digitalWrite(inp1, LOW); 디지털 쓰기(inp2, LOW); 디지털 쓰기(inp3, 높음); 디지털 쓰기(inp4, LOW); } else if (inputString =="bleft") { // 왼쪽으로 뒤로 이동하려면 digitalWrite(inp1, LOW); 디지털 쓰기(inp2, LOW); 디지털 쓰기(inp3, LOW); 디지털 쓰기(inp4, 높음); } else if (inputString =="bright") { // 오른쪽으로 돌아가려면 digitalWrite(inp1, LOW); 디지털 쓰기(inp2, 높음); 디지털 쓰기(inp3, LOW); 디지털 쓰기(inp4, LOW); } else if (inputString =="break") { // 중지하려면 analogWrite(en1, 50); analogWrite(en2, 50); 지연(550); 디지털 쓰기(inp1, LOW); 디지털 쓰기(inp2, LOW); 디지털 쓰기(inp3, LOW); 디지털 쓰기(inp4, LOW); analogWrite(en1, 150); analogWrite(en2, 150); } else if (inputString =="maxspeed") { // 최대 속도 analogWrite(en1, 250); analogWrite(en2, 250); } else if (inputString =="medspeed") { // 중속 analogWrite(en1, 180); analogWrite(en2, 180); } else if (inputString =="lowspeed") { // 저속 analogWrite(en1, 90); analogWrite(en2, 90); } else { // digitalWrite(inp1, LOW) 중지; 디지털 쓰기(inp2, LOW); 디지털 쓰기(inp3, LOW); 디지털 쓰기(inp4, LOW); } 입력 문자열 =""; } }}

    회로도


    제조공정

    1. IR 센서를 사용하여 무선 로봇 차량 만들기
    2. 리소스가 제한된 마이크로컨트롤러를 위한 효율적인 웹 서버 기술
    3. 3달러 WiFi 장치에 보안 내장 웹 서버를 설치하는 방법
    4. 웹에서 습도/온도 가져오기
    5. 온도 제어 팬
    6. MSP430 무선 센서 노드에 대한 태양광 진입로 조명
    7. 웹 서버로서의 Raspberry Pi 4 [자신의 웹사이트 만들기]
    8. RC 자동차를 블루투스 RC 자동차로 전환
    9. 조이스틱 제어 RC 자동차
    10. Wi-Fi RC 자동차 - Qi 지원