- Arduino RC Boat에 필요한 구성 요소
- 433MHz RF 송신기 및 수신기 모듈
- 433MHZ RF 송신기
- Arduino RC 보트 송신기의 블록 다이어그램
- Arduino RC Remote (송신기)의 회로도
- RC BOAT 송신기 회로 구축
- Arduino RC 보트 송신기 인클로저 구축
- 433Mhz 수신기 모듈
- Arduino RC 보트 수신기의 블록 다이어그램
- Arduino RC 보트 수신기의 회로도
- Arduino RC Boat의 수신기 회로 구축
- RC-BOAT 구축
- Arduino Air Boat 용 모터 및 프로펠러
- Arduino RC Boat의 작동
- RC 보트의 Arduino 프로그래밍
이 프로젝트에서는 433MHz RF 무선 모듈을 사용하여 무선으로 제어 할 수 있는 원격 제어 Arduino Air-Boat 를 구축 할 것 입니다. 우리는 자체 433MHz 송신기와 수신기 모듈을 만들어 집에서 만든 리모콘을 사용하여이 보트를 제어 할 것입니다. 원격 제어 장치 또는 두 장치 간의 통신의 경우 IR, Bluetooth, 인터넷, RF 등과 같은 많은 옵션이 있습니다. IR 통신과 비교할 때 무선 통신은 더 넓은 범위와 같은 장점이 있지만 그렇지 않습니다. 송신기와 수신기 사이에 가시선 연결이 필요합니다. 또한 이러한 모듈은 두 가지 통신 방식을 수행 할 수 있습니다. 즉, 동시에 송수신 할 수 있습니다. 따라서이 433MHz RF 모듈을 사용하여 Arduino RC Boat를 만들어 보겠습니다. 이 튜토리얼에서.
우리는 이전에이 433Mhz RF 모듈을 사용하여이 RF 제어 로봇과 같은 로봇을 제어하거나 RF를 사용하여 가전 제품을 제어하는 홈 자동화 애플리케이션을 위해 많은 원격 제어 프로젝트를 구축했습니다. RF 모듈을 사용하는 것 외에도 이전에 Bluetooth 제어 라즈베리 파이 자동차와 DTMF 휴대폰으로 제어되는 Arduino 로봇을 구축했습니다. 관심이 있다면 이러한 프로젝트를 확인할 수도 있습니다.
Arduino RC Boat에 필요한 구성 요소
- 433MHz 송신기 및 수신기
- Arduino (모든 Arduino, promini를 사용하는 크기를 줄이기 위해)
- HT12E 및 HT12D
- 푸시 버튼-4Nos
- 저항기-1mega ohm, 47k ohm
- L293d 모터 드라이버
- 9V 배터리 (7.4V 배터리를 사용하고 있습니다)-2Nos
- 7805 레귤레이터 -2Nos
- DC 모터-2Nos
- 모터 리프 또는 프로펠러 (수제 프로펠러를 사용하고 있습니다)-2Nos
- .1uf 커패시터-2Nos
- 일반적인 PCB
433MHz RF 송신기 및 수신기 모듈
이러한 유형의 RF 모듈은 제조업체들 사이에서 매우 인기가 있습니다. 비용이 저렴하고 연결이 간단하기 때문입니다. 이 모듈은 모든 형태의 단거리 통신 프로젝트에 가장 적합합니다. 이러한 모듈은 ASK (Amplitude Shift Keying) 유형 RF 모듈이며, ASK (Amplitude-Shift Keying) 는 디지털 데이터를 반송파 진폭의 변화로 나타내는 진폭 변조의 한 형태입니다. ASK 시스템에서 이진 심볼 1은 T 초의 비트 기간 동안 고정 진폭 반송파와 고정 주파수를 전송하여 표시됩니다. 신호 값이 1이면 반송파 신호가 전송됩니다. 그렇지 않으면 0의 신호 값이 전송됩니다. 이는 일반적으로 로직 "제로"를 전송할 때 전력을 소비하지 않음을 의미합니다. 이 낮은 전력 소비는 배터리로 작동하는 프로젝트에서 매우 유용합니다.
433MHZ RF 송신기
이 유형의 모듈은 초소형이며 3 핀 VCC, 접지 및 데이터와 함께 제공됩니다. 일부 다른 모듈에는 추가 안테나 핀이 함께 제공됩니다. 송신기 모듈의 작동 전압은 3V-12V이며이 모듈에는 조정 가능한 구성 요소가 없습니다. 이 모듈의 주요 장점 중 하나는 낮은 전류 소비이며 비트 0을 전송하려면 거의 제로 전류가 필요합니다.
Arduino RC 보트 송신기의 블록 다이어그램
위의 블록 다이어그램에는 4 개의 푸시 버튼 (Control Buttons)이 있으며,이 푸시 버튼은 보트의 방향을 제어하기위한 것입니다. 앞으로, 뒤로, 왼쪽, 오른쪽으로 4 개가 있습니다. 푸시 버튼에서 보트를 제어하기위한 로직을 얻지 만 인코더에 직접 연결할 수 없기 때문에 Arduino를 사용했습니다. 여기에서 아두 이노를 사용한 이유는 단순히 푸시 버튼만으로는 달성 할 수없는 앞뒤 움직임을 위해 인코더의 두 개의 병렬 데이터 입력을 동시에 끌어 내야하기 때문이라고 생각할 수 있습니다. 그런 다음 인코더는 들어오는 병렬 데이터를 직렬 출력으로 인코딩합니다. 그런 다음 RF 송신기를 사용하여 직렬 데이터를 전송할 수 있습니다.
Arduino RC Remote (송신기)의 회로도
위의 회로에서 아두 이노 (D6-D9)의 4 개의 디지털 핀에 연결된 4 개의 모든 푸시 버튼 중 한쪽과 접지에 연결된 4 개의 다른 쪽을 볼 수 있습니다. 즉, 버튼을 누르면 해당 디지털 핀의 로직이 낮아집니다. HT12E 인코더 의 4 개의 병렬 입력은 Arduino의 다른 4 개의 디지털 핀 (D2-D5)에 연결됩니다. 따라서 Arduino의 도움으로 인코더의 입력을 결정할 수 있습니다.
엔코더에 대해 얘기 하면 HT12E 는 12 비트 엔코더이자 병렬 입력-직렬 출력 엔코더 입니다. 12 비트 중 8 비트는 여러 수신기를 제어하는 데 사용할 수있는 주소 비트입니다. 핀 A0-A7은 주소 입력 핀입니다. 이 프로젝트에서는 하나의 수신기 만 제어하므로 주소 변경을 원하지 않으므로 모든 주소 핀을 접지에 연결했습니다. 하나의 송신기로 다른 수신기를 제어하려면 여기에서 딥 스위치를 사용할 수 있습니다. AD8-AD11은 제어 비트 입력입니다. 이 입력은 HT12D 디코더의 D0-D3 출력을 제어합니다. 통신을 위해 발진기를 연결해야하고 발진기 주파수는 3KHz 여야합니다.5V 작동. 그러면 저항 값은 5V에 대해 1.1MΩ이됩니다. 그런 다음 HT12E의 출력을 송신기 모듈에 연결했습니다. 이미 언급했듯이 Arduino 및 rf 송신기 모듈,이 두 장치는 모두 5V 고전압에서 작동하므로이를 방지하기 위해 전압 조정기 인 7805를 추가했습니다. 이제 (Vcc) 6-12 볼트 모든 유형의 배터리를 입력에 연결할 수 있습니다.
RC BOAT 송신기 회로 구축
공통 PCB에 모든 구성 요소를 납땜했습니다. RF 프로젝트를 진행 중이므로 다양한 유형의 간섭이 발생할 가능성이 많으므로 모든 구성 요소를 가능한 한 가깝게 연결하십시오. Arduino 및 송신기 모듈에는 암 핀 헤더를 사용하는 것이 좋습니다. 또한 여분의 와이어를 사용하는 대신 구리 패드의 모든 것을 납땜하십시오. 마지막으로 전체 범위를 늘리는 데 도움이되는 작은 와이어를 송신기 모듈에 연결합니다. Arduino와 송신기 모듈을 연결하기 전에 lm7805 출력의 전압을 다시 확인하십시오.
위의 이미지는 완성 된 RC 보트 송신기 회로의 평면도를 보여 주며 완성 된 RC 보트 송신기 회로의 아래쪽 뷰는 아래에 나와 있습니다.
Arduino RC 보트 송신기 인클로저 구축
리모콘에는 괜찮은 몸이 필요합니다. 이 단계는 여러분의 아이디어에 관한 것입니다. 여러분의 아이디어로 원격 본체를 만들 수 있습니다. 나는 이것을 어떻게 만들 었는지 설명하고있다. 원격 본체를 만들기 위해 4mm MDF 시트를 선택하고 합판, 폼 시트 또는 판지를 선택할 수도 있습니다. 그런 다음 길이 10cm, 너비 5cm의 두 조각을 자릅니다. 그런 다음 버튼의 위치를 표시했습니다. 왼쪽에는 방향 버튼을, 오른쪽에는 앞으로, 뒤로 버튼을 배치했습니다. 시트의 다른쪽에는 푸시 버튼을 주 전송 회로에 연결했습니다. 일반 푸시 버튼에는 각 측면에 2 개의 핀인 4 개의 핀이 있습니다. 한 핀을 Arduino에 연결하고 다른 핀을 접지에 연결합니다. 혼동되는 경우 멀티 미터로 확인하거나 데이터 시트를 확인하십시오.
이 모든 것을 연결 한 후 두 개의 MDF 보드 사이에 제어 회로를 놓고 긴 볼트로 조입니다 (원하는 경우 아래 이미지 참조). 다시 한번 좋은 몸을 만드는 것은 당신의 아이디어에 관한 것입니다.
433Mhz 수신기 모듈
이 수신기는 또한 매우 작고 4 핀 VCC, 접지와 함께 제공되며 두 개의 중간 핀은 데이터 출력입니다. 이 모듈의 작동 전압은 5v입니다. 송신기 모듈과 마찬가지로 저전력 모듈이기도합니다. 일부 모듈에는 추가 안테나 핀이 있지만 제 경우에는 존재하지 않습니다.
Arduino RC 보트 수신기의 블록 다이어그램
위의 블록 다이어그램은 RF 수신기 회로의 작동을 설명합니다. 먼저 RF 수신기 모듈을 사용하여 전송 된 신호를 수신 할 수 있습니다. 이 수신기의 출력은 직렬 데이터입니다. 그러나 우리는이 직렬 데이터로 아무것도 제어 할 수 없으므로 출력을 디코더에 연결했습니다. 디코더는 직렬 데이터를 원래의 병렬 데이터로 디코딩합니다. 이 섹션에서는 마이크로 컨트롤러가 필요하지 않으며 출력을 모터 드라이버에 직접 연결할 수 있습니다.
Arduino RC 보트 수신기의 회로도
HT12D는 A는 12 비트 디코더 직렬 입력 - 병렬 출력 디코더. HT12D의 입력 핀은 직렬 출력이있는 수신기에 연결됩니다. 12 비트 중 8 비트 (A0-A7)는 주소 비트이며 HT12D는 현재 주소와 일치하는 경우에만 입력을 디코딩합니다. D8-D11은 출력 비트입니다. 이 회로를 송신기 회로에 맞추기 위해 모든 주소 핀을 접지에 연결했습니다. 모듈에서 나오는 데이터는 직렬 유형이며 디코더는이 직렬 데이터를 원래의 병렬 데이터로 디코딩하고 D8-D11을 통해 나옵니다. 발진 주파수를 맞추려면 33-56k 저항을 발진기 핀에 연결해야합니다. 17 번 핀의 LED는 유효한 전송을 나타내며 수신기가 송신기에 연결된 후에 만 켜집니다. 수신기의 전압 입력도 6-12V입니다.
모터를 제어하기 위해 L293D IC를 사용했고, 크기와 무게를 줄이기 위해이 IC를 선택했습니다.이 IC는 두 모터를 양방향으로 제어하는 데 가장 적합합니다. L293D에는 16 개의 핀이 있으며 아래 다이어그램은 핀 배치를 보여줍니다.
1, 9 핀은 활성화 핀이며,이를 5V에 연결하여 모터 1A, 2A, 3A 및 4A를 제어 핀으로 활성화합니다. 핀 1A가 낮아지고 2A가 높아지면 모터가 오른쪽으로, 1A가 낮아지고 2A가 높아지면 모터가 왼쪽으로 돌아갑니다. 그래서 우리는이 핀들을 디코더의 출력 ps에 연결했습니다. 1Y, 2Y, 3Y 및 4Y는 모터 연결 핀입니다. Vcc2는 모터 구동 전압 핀이며, 고전압 모터를 사용하는 경우이 핀을 해당 전압 소스에 연결합니다.
Arduino RC Boat의 수신기 회로 구축
수신기 회로를 구축하기 전에 몇 가지 중요한 사항을 기억해야합니다. 중요한 것은 서킷을 만든 후 보트에 고정해야하기 때문에 크기와 무게입니다. 따라서 무게가 증가하면 부력과 움직임에 영향을 미칩니다.
송신기 회로와 마찬가지로 작은 공통 PCB의 모든 구성 요소를 납땜하고 최소한의 전선을 사용하십시오. 5V 모터를 사용하고 있기 때문에 모터 드라이버의 핀 8을 5v에 연결했습니다.
RC-BOAT 구축
나는 보트 본체를 만들기 위해 다른 재료를 시도했습니다. 그리고 Thermocol 시트로 더 나은 결과를 얻었습니다. 그래서 나는 thermocol로 몸을 만들기로 결정했습니다. 먼저 3cm 두께의 Thermocol 조각을 가져다가 수신기 회로를 위에 놓은 다음 Thermocol으로 보트의 모양을 표시하고 자릅니다. 그래서 이것이 제가 배를 만드는 방법입니다. 여러분의 아이디어에 따라 만들 수 있습니다.
Arduino Air Boat 용 모터 및 프로펠러
다시 한번 무게가 중요합니다. 따라서 올바른 모터를 선택하는 것이 중요합니다. 저는 작고 무게가없는 5volt, n20 유형의 일반 DC 모터를 선택합니다. RF 간섭 을 방지하려면 0.1uf 커패시터를 모터 입력에 병렬로 연결해야합니다.
프로펠러의 경우 플라스틱 시트를 사용하여 프로펠러를 만들었습니다. 상점에서 프로펠러를 구입하거나 직접 만들 수 있습니다. 둘 다 잘 작동합니다. 프로펠러를 만들기 위해 먼저 작은 플라스틱 시트를 가져 와서 두 개의 작은 조각을 잘라낸 다음 촛불을 사용하여 조각을 구부립니다. 마지막으로 모터 중앙에 작은 구멍을 뚫고 모터에 고정했습니다.
Arduino RC Boat의 작동
이 보트에는 두 개의 모터가 있습니다. 모터가 시계 방향으로도 움직이면 (프로펠러의 위치도 달라짐) 프로펠러는 앞쪽에서 공기를 빨아 들여 뒤쪽으로 배출합니다. 그것은 앞으로 끌기를 생성합니다.
전진: 좌우 모터가 모두 시계 방향으로 회전하면 전진합니다.
후진 이동: 좌우 모터가 모두 반 시계 방향으로 회전하면 (즉, 프로펠러가 후면에서 공기를 흡입하여 전면으로 배출) 후진 이동
왼쪽 이동: 오른쪽 모터 만 회전하면 보트 인 오른쪽에서 드래그 만하면 보트가 왼쪽으로 이동합니다.
오른쪽 이동: 왼쪽 모터 만 회전하면 왼쪽에서 드래그 만되어 오른쪽으로 이동합니다.
모터 드라이버의 입력을 디코더 (D8-D11)의 4 개 출력 비트에 연결했습니다. AD8-AD11을 리모컨의 버튼 인 접지에 연결하여이 4 개의 출력을 제어 할 수 있습니다. 예를 들어 AD8을 접지에 연결하면 D8이 활성화됩니다. 그래서 우리는이 4 개의 출력을 사용하여 두 방향으로 두 모터를 제어 할 수 있습니다. 그러나 우리는 단 하나의 버튼으로 두 개의 모터를 제어 할 수 없습니다 (앞뒤로 움직일 때 필요합니다). 그래서 Arduino를 사용했습니다. Arduino의 도움으로 입력 데이터 핀을 원하는대로 선택할 수 있습니다.
RC 보트의 Arduino 프로그래밍
이 보트의 프로그래밍은 매우 간단합니다. 왜냐하면 우리는 단지 로직 전환만을 원하기 때문입니다. 그리고 기본적인 Arduino 기능으로 모든 것을 달성 할 수 있습니다. 이 프로젝트의 전체 프로그램은이 페이지 하단에서 찾을 수 있습니다. 프로그램에 대한 설명은 다음과 같습니다.
4 개의 입력 버튼과 디코더 입력 핀에 대한 정수를 정의하여 프로그램을 시작합니다.
int f_button = 9; int b_button = 8; int l_button = 7; int r_button = 6; int m1 = 2; int m2 = 3; int m3 = 4; int m4 = 5;
설정 섹션에서 핀 모드를 정의했습니다. 즉, 버튼은 디지털 핀에 연결되어 있으므로이 핀은 입력으로 정의해야하며 디코더의 입력에 대한 출력을 가져와야하므로 해당 핀을 출력으로 정의해야합니다.
pinMode (f_button, INPUT_PULLUP); pinMode (b_button, INPUT_PULLUP); pinMode (l_button, INPUT_PULLUP); pinMode (r_button, INPUT_PULLUP); pinMode (m1, OUTPUT); pinMode (m2, OUTPUT); pinMode (m3, OUTPUT); pinMode (m4, OUTPUT);
다음으로 메인 루프 기능에서는 Arduino 의 디지털 읽기 기능을 사용하여 버튼 상태를 읽습니다. 핀 상태가 낮아지면 해당 핀이 눌 렸음을 의미하며 다음과 같은 조건을 실행합니다.
if (digitalRead (f_button) == LOW)
즉, 앞으로 버튼을 눌렀 음을 의미합니다.
{ digitalWrite (m1, LOW); digitalWrite (m3, LOW); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
이것은 인코더의 m1 및 m2를 풀다운하여 수신기 측의 두 모터를 모두 활성화합니다. 마찬가지로 뒤로 이동하는 경우
{ digitalWrite (m1, HIGH); digitalWrite (m3, HIGH); digitalWrite (m2, LOW); digitalWrite (m4, LOW); }
왼쪽 이동용
{ digitalWrite (m1, LOW); digitalWrite (m3, HIGH); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
올바른 움직임을 위해
{ digitalWrite (m1, HIGH); digitalWrite (m3, LOW); digitalWrite (m2, HIGH); digitalWrite (m4, HIGH); }
코드를 컴파일 한 후 Arduino 보드에 업로드합니다.
문제 해결: 보트를 수면에 올려 놓고 모터와 프로펠러의 극성을 바꾸지 않으면 올바르게 움직이는 지 확인하십시오. 또한 무게의 균형을 잡으십시오.
프로젝트의 전체 작업은이 페이지 하단에 링크 된 비디오에서 찾을 수 있습니다. 질문이 있으시면 댓글 섹션에 남겨주세요.