프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

조이스틱 센서 쉴드, nRF24L01를 사용하여 RC카 조종하기

2016-09-08 15:47:15

개요

 

코코아팹의 잇 제품들만 모아모아 만든 이번 프로젝트는 조이스틱 센서 쉴드와 새로 나온 RC카 키트를 사용하려 합니다.

핸드폰으로 하는것보다 확실히 RC카의 움직임이 부드러워 정교한 조종이 가능합니다.

 

 

RC카로 대결한다면 핸드폰으로 조종하는 RC카를 2대 1로 이길 자신이 생기네요

확실히 조이스틱이 들어가다보니 조종하는 재미가 다릅니다.

자 그럼 이 재미있는 프로젝트를 만들어 볼까요?

 

 

 

 

관련 튜토리얼

 

조이스틱 센서 쉴드 소개 : http://kocoafab.cc/tutorial/view/610

 

RC카 키트 1 : http://kocoafab.cc/tutorial/view/647

 

RC카 키트 2 :  http://kocoafab.cc/tutorial/view/648

 

nRF24L01 : http://kocoafab.cc/tutorial/view/578

 

 

 

부품 목록

 

NO 부품명 수량 상세설명
1 RC카 키트 1 오렌지보드 포함
2 오렌지보드 2 RC카 키트의 오렌지보드 포함
3 조이스틱 센서 쉴드 1  
4 nRF24L01 2  

 

오렌지보드는 총 단품팩 1개 + RC카 키트 속 오렌지 보드 = 2개의 오렌지 보드가 필요합니다.

 

 

 

 

 

하드웨어 메이킹

 

브레드보드 레이아웃

 

[조이스틱 센서 쉴드_ 조종기]

 

 

 

 

[Dip switch_설정]

 

 

 

 

 

[RC카]

 

 

 

회로도(스케메틱)

 

[조이스틱 센서 쉴드_ 조종기]

 

 

 

[RC카]

 

최근에 프리징 프로젝트를 올려주셔서 추가해서 사용하기 너무 좋네요~~~~^^

Fritzing 사용하기 - 소개 및 설치  http://kocoafab.cc/tutorial/view/652

Fritzing 사용하기 - 회로 그려보기 http://kocoafab.cc/tutorial/view/655​

 

 

 

위의 그림처럼 하셨나요???

조이스틱 쉴드 잘 끼워주세요~^^ 꼭 매뉴얼 참조하시기 바랍니다.

처음에 잘못 끼워서 망가트릴뻔했네요 

 

다 하셨으면 소스를 업로드 하겠습니다.

 

 

 

 

소프트웨어 코딩

 

 

 

TX_조이스틱 센서 쉴드 코드

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
 
#define CE_PIN 3
#define CSN_PIN 2


unsigned int joystick[3]={0,};


const uint64_t pipe = 0xE8E8F0F0E1LL;


//입출력핀 선언
unsigned char inputPin[5] = {A2, A3, A4, A5, 8};

RF24 radio(CE_PIN, CSN_PIN);


void setup(void)
{
  Serial.begin(9600);   //통신속도
  radio.begin();        //통신시작
  radio.setPALevel(RF24_PA_MIN); // LOW, MAX
  radio.openWritingPipe(pipe);
   //핀모드 입출력 설정
  for(char i = 0; i < 5; i++){
   pinMode(inputPin[i], INPUT); 
  }
  
 // for(int i = 0; i < 1; i++){
//   pinMode(outputPin[i], OUTPUT); 
 // }  
}


void loop(void)
{
 // radio.stopListening();
  //데이터저장

  
  //RED Button
  if(digitalRead(8) == LOW)
    joystick[2] = 0;
  else
    joystick[2] = 1;
    
  //x축 데이터 저장
  joystick[0] = analogRead(A0);

  //y축 데이터 저장
  joystick[1] = analogRead(A1);

  
  //시작 주소와 데이터 사이즈 전달
  for(int i= 0; i<3;i++){
    Serial.print("data");
    Serial.print(i);
    Serial.print(" : ");
    Serial.println(joystick[i]);
  }
  Serial.println("Send");  
  joystick[3]++;
  radio.write( joystick, sizeof(joystick) );
 // Serial.println("complete");
 //delay(1000);
}

 

 

 

 

RX_RC카 코드

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
 
#define CE_PIN 3
#define CSN_PIN 2


unsigned int joystick[3]={0,};


const uint64_t pipe = 0xE8E8F0F0E1LL;


//입출력핀 선언
unsigned char inputPin[5] = {A2, A3, A4, A5, 8};

RF24 radio(CE_PIN, CSN_PIN);


void setup(void)
{
  Serial.begin(9600);   //통신속도
  radio.begin();        //통신시작
  radio.setPALevel(RF24_PA_MIN); // LOW, MAX
  radio.openWritingPipe(pipe);
   //핀모드 입출력 설정
  for(char i = 0; i < 5; i++){
   pinMode(inputPin[i], INPUT); 
  }
  
 // for(int i = 0; i < 1; i++){
//   pinMode(outputPin[i], OUTPUT); 
 // }  
}


void loop(void)
{
 // radio.stopListening();
  //데이터저장

  
  //RED Button
  if(digitalRead(8) == LOW)
    joystick[2] = 0;
  else
    joystick[2] = 1;
    
  //x축 데이터 저장
  joystick[0] = analogRead(A0);

  //y축 데이터 저장
  joystick[1] = analogRead(A1);

  
  //시작 주소와 데이터 사이즈 전달
  for(int i= 0; i<3;i++){
    Serial.print("data");
    Serial.print(i);
    Serial.print(" : ");
    Serial.println(joystick[i]);
  }
  Serial.println("Send");  
  joystick[3]++;
  radio.write( joystick, sizeof(joystick) );
 // Serial.println("complete");
 //delay(1000);
}

 

 

소스도 잘 구분하여 업로드해야겠죠?

반대로 넣으시면 작동이 되지않습니다.

 

 

 

동영상

 

 

 

이번 프로젝트는 굳이 RC카 키트를 사용하지않으시더라도 nRF24L01 모듈을 사용해서 조이스틱을 무선으로 사용할 수 있는 방법을 알려드리는 거라보시면 되겠네요

조이스틱 쉴드를 오렌지 보드가 아닌 BLE나 WIFI보드를 이용하신다면 모듈을 굳이 사용 안하시고 더 간단히 사용하실 수 있으실 거라 생각합니다.

 

이러한 응용 프로젝트는 꼭 링크해드린 기초 튜토리얼을 읽어보시고 하시면 더욱 쉽고 이해하시기 편하실 겁니다.

이번에는 RC카로 보여드렸지만 RC배? 또는 드론을 조종하는 것도 재미있을것같네요~~~^^ 

 

다음은 더 유용한 컨텐츠로 찾아뵐게요~~~~ 

 

 

 

염소할배

profile

이진규 2016-09-12 01:45:44

안녕하세요 염소할배님 궁금한게 있어서 그런데 혹시 메일주소나 연락처 알 수 있을까요?

profile

염소할배 2016-09-12 09:44:04

안녕하세요
개인적으로 답변을 드리기에는 어려움이 있어 이점 양해 부탁드리며 질문사항은 커뮤니티에 올려주시면 빠른 시간 내에 답변드리도록하겠습니다.^^
프로젝트에 대한 관심 감사합니다.

profile

임명기 2016-09-28 19:02:51

좋은글이네요 잘봤습니다

profile

임명기 2016-09-28 19:02:53

좋은글이네요 잘봤습니다

profile

김기현 2016-10-10 17:05:26

자료 감사합니다.

profile

김기현 2016-10-10 17:05:28

자료 감사합니다.

profile

정상훈 2016-10-11 14:03:54

자료 감사합니다

profile

정상훈 2016-10-11 14:03:56

자료 감사합니다

profile

나원호 2016-10-18 16:41:56

감사합니다

profile

나원호 2016-10-18 16:41:58

감사합니다

profile

노랑병아리 2016-10-26 17:07:15

우와~~ 회전도 잘되고 판매하셔도 되겠는데요! 짱짱

profile

기봉조 2016-11-03 01:24:31

감사합니다

profile

윤지환 2016-11-06 18:47:35

감사합니다

profile

최용혁 2017-05-28 20:50:32

안드로이드로 rc카 무선조종 어플 소스가 궁금합니다.

profile

하늘 2018-01-22 10:11:15

멋지네요.

profile

rlaqhqls 2021-04-01 08:15:00

멋있는데
앞에 달려있는 초음파 센서는 없어도 되지 않나요?