MYSHOP

최근 본 상품

이전 제품

다음 제품

현재 위치
  1. 기계/로봇/RC

STM32 + nRF24L01 제어(소스코드 제공) 드론/쿼드콥터 DIY KIT(P5309)

(해외배송 가능상품)
공급사 바로가기
기본 정보
상품명
STM32 + nRF24L01 제어(소스코드 제공) 드론/쿼드콥터 DIY KIT(P5309)
판매가
185,000원
제조사
smartkit
원산지
CHINA
상품코드
P000EHUK
수량
수량증가수량감소
세액
18,500원
SNS 상품홍보
SNS 상품홍보

개인결제창을 통한 결제 시 네이버 마일리지 적립 및 사용이 가능합니다.

상품 옵션
옵션 선택

(최소주문수량 1개 이상 / 최대주문수량 0개 이하)

사이즈 가이드

수량을 선택해주세요.

위 옵션선택 박스를 선택하시면 아래에 상품이 추가됩니다.

상품 목록
상품명 상품수 가격
STM32 + nRF24L01 제어(소스코드 제공) 드론/쿼드콥터 DIY KIT(P5309) 수량증가 수량감소 (  0)
총 상품금액(수량) : 0 (0개)

 

상품상세정보



제품소개

STM32 기반의 4축 드론으로 STM32 풀소스 코드가 제공되어 드론의 원리및 연구 개발용으로 사용에 최적입니다.
또한 PC용 분석 프로그램(S/W)을 제공하므로 손쉬운 조정이 가능합니다. 회로도 드론 프로그램 소스 IC 데이타시트를 제공합니다.

※ 메인사진의 조정기는 별도 구매 상품입니다.(조정기내의 소스는 제공되지 않습니다 nRF24L01 프로토콜만 제공)

-주의-

HMC5883L BMP085 IC는 미장착되어 있습니다.


주요기능

  • CPU : STM32F103C8T6(32Bit ARM processor)
  • 센서 : MPU6050 Six-Axis (Gyro+Accelerometer) MEMS (PID-Control)
  • 무선제어 : nRF24L01
  • RF 통신거리 : Max. 100m
  • 범용 I/O(GPIO) : 2 포트
  • 시리얼 포트 : UART-TTL 2 포트
  • 다운로딩 : SWD 포트 또는 시리얼포트(UART-TTL)
  • 비행시간 : 650mA 배터리 사용시 8 분 (1200mA 사용가능)
  • 크기 : 160 x 160 x 65mm - *날개(블레이드)는 제외
  • 무게 : 99g
  • 추력 : 170g (Max. Lift)

프로토콜

Throttle + Shift + Front & rear + Left & Right + Shift angle compensation + Front and rear compensation + Left and right compensation + TID1 + TID2 + TID3 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + check_sum

1. Throttle : 0x00 ~ 0xff

2. Shift

1. Left turn : 0x00 ~ 0x3f
2. Right turn : 0x80 ~ 0xbf

3. Front & Rear

1. Front : 0x00 ~ 0x3f
2. Rear : 0x80 ~ 0xbf

4. Left & Right

1. Left : 0x00 ~ 0x3f
2. Right : 0x80 ~ 0xbf

5. Compensate

center of value : 0x40 (stepping plus 0x02)

6. TID : Remote Address

s/w setting

예제코드

/*********************************************

제목 : 전문가 연구 개발용 STM32 드론(쿼드콥터)
컴파링러 : MDK-ARM v4.12
ST 라이브러리 : V3.50


3축 자이로 +3축 가속도센서- MPU6050
디지탈 컴파스 센서 - HMC5883L
디지탈 압력센서 - BMP085


nRF24L01 - 통신거리 최대 100m

<전원>
3.7V/650mA 리듐폴리머 배터리 (1200mA upgrade)
**********************************************/

#include "stm32f10x.h"
#include "iic.h"
#include "timer.h"
#include "usart.h"
#include "mpu6050.h"
#include "nrf24l01.h"
#include "motor.h"
#include "imu.h"
#include "pid.h"
#include

#define COM_MODEL 0x00
#define NORMAL_MODEL 0x01
#define BUT (GPIOB->IDR & GPIO_Pin_12)
#define LED_BLINK GPIOA->ODR ^= (1 << 1)
#define TIME_OUT 1200

u8 model = NORMAL_MODEL;
u8 flg_get_senor_data;
u8 flg_recive_data;
u8 out[35] = {0x5f 0x60 0};
u8 offset_data[5];
u8 rx_data_buf[16];
s16 gx gy gz ax ay az temperature;
float set_pitch set_roll yaw yaw1 pitch roll left_yaw right_yaw;
float f_gx f_gy f_gz;
s16 temp;
u16 time_out = 0;
u8 send_fre = 0;
volatile u8 thr = 0 rud = 0 ele = 0 ail = 0;
volatile float yaw_offset = 0 pitch_offset = 0 roll_offset = 0;
s16 gx_offset = 0 gy_offset = 0 gz_offset = 0;
s32 gx_sum = 0 gy_sum = 0 gz_sum = 0;

void delay(u32 count)
{
for(; count != 0; count--);
}

void led_blink()
{
u8 j;
for(j = 0; j < 30; j++)
{
LED_BLINK;
delay(0x80000);
}
}


void receive_control_data()
{
u16 check = 0;
u8 i;
if(nrf24l01_rx_data(&rx_data_buf[0]))
{
for (i = 0; i < 15; ++i)
{
check += rx_data_buf[i];
}
if((check & 0xff) == rx_data_buf[15])
{
LED_BLINK;
time_out = 0;
thr = rx_data_buf[0];
rud = rx_data_buf[1];
ele = rx_data_buf[2];
ail = rx_data_buf[3];

yaw_offset = (rx_data_buf[4] - 0x40) * 1.0;
pitch_offset = (rx_data_buf[5] - 0x40) * 0.25;
roll_offset = (rx_data_buf[6] - 0x40) * 0.25;
}
}
else
{
if(time_out++ > TIME_OUT)
{
time_out = TIME_OUT;
thr = 0;
rud = 0;
ele = 0;
ail = 0;
}
}
}

void send_sensor_data()
{
u8 j;

LED_BLINK;

out[2] = (u8)(gx >> 8);
out[3] = (u8)(gx);
out[4] = (u8)(gy >> 8);
out[5] = (u8)(gy);
out[6] = (u8)(gz >> 8);
out[7] = (u8)(gz);
out[8] = (u8)(ax >> 8);
out[9] = (u8)(ax);
out[10] = (u8)(ay >> 8);
out[11] = (u8)(ay);
out[12] = (u8)(az >> 8);
out[13] = (u8)(az);

temp = (s16)(pitch * 100);
out[20] = (u8)(temp >> 8);
out[21] = (u8)(temp);

temp = (s16)(roll * 100);
out[22] = (u8)(temp >> 8);
out[23] = (u8)(temp);

temp = (s16)(yaw1 * 100);
out[24] = (u8)(temp >> 8);
out[25] = (u8)(temp);

for(j = 0; j < 26; j++)
{
USART_SendData(USART1 out[j]);
while (USART_GetFlagStatus(USART1 USART_FLAG_TC) == RESET);
}
}

/*************************************************
main(void)
**************************************************/
int main(void)
{
u16 k;
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA &GPIO_InitStructure); // BLUE LED

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB &GPIO_InitStructure); // BUT

GPIO_SetBits(GPIOA GPIO_Pin_1);

motor_init();

delay(800000);

timer_init();
iic_init();
mpu6050_init();
usart_init();
nrf24l01_init();
pid_config();

k = 1500;
while(k)
{
if(flg_get_senor_data)
{
flg_get_senor_data = 0;
k--;

mpu6050_get_data(&gx &gy &gz &ax &ay &az &temperature);

gx_sum += gx;
gy_sum += gy;
gz_sum += gz;

f_gx = gx * GYRO_SCALE;
f_gy = gy * GYRO_SCALE;
f_gz = gz * GYRO_SCALE;

get_euler_angle(f_gx f_gy f_gz ax ay az &pitch &roll);

if(BUT)
{
model = COM_MODEL;
led_blink();
k = 0;
}
}
}

gx_offset = gx_sum / 1500;
gy_offset= gy_sum / 1500;
gz_offset= gz_sum / 1500;

while (1)
{
if(flg_get_senor_data)
{
flg_get_senor_data = 0;

mpu6050_get_data(&gx &gy &gz &ax &ay &az &temperature);

gx -= gx_offset;
gy -= gy_offset;
gz -= gz_offset;

f_gx = gx * GYRO_SCALE;
f_gy = gy * GYRO_SCALE;
f_gz = gz * GYRO_SCALE;

get_euler_angle(f_gx f_gy f_gz ax ay az &pitch &roll);

yaw = -gz;
yaw1 = -f_gz;

if(model == NORMAL_MODEL)
{
receive_control_data();

pitch += pitch_offset;
roll -= roll_offset;
yaw += yaw_offset;

calculate(pitch roll yaw thr rud ele ail f_gx f_gy f_gz);
}
else if(model == COM_MODEL)
{
if(send_fre++ > 4)
{
send_fre = 0;
send_sensor_data();
}
}
}
} // end while
}
/************************END OF FILE************************************************************/


회로설명


사진갤러리










응용

<예제코드>



제공문서

  • 소스코드 회로도 데이타시트등은 구매시 제공




상품결제정보

* 세금계산서 발행방법은 게시판 공지사항 참조.
* 기술문의는 이메일(
master@toolparts.co.kr)로 문의.

전자부품 특성상 제품에 이상이 있거나, 상품정보와 상이한 경우 외 에 단순 고객변심으로는
교환 반품이 불가능 합니다 구매전 이점 유의해 주세요!!!

고액결제의 경우 안전을 위해 카드사에서 확인전화를 드릴 수도 있습니다. 확인과정에서 도난 카드의 사용이나 타인 명의의 주문등 정상적인 주문이 아니라고 판단될 경우 임의로 주문을 보류 또는 취소할 수 있습니다.  

무통장 입금은 상품 구매 대금은 PC뱅킹, 인터넷뱅킹, 텔레뱅킹 혹은 가까운 은행에서 직접 입금하시면 됩니다.  
주문시 입력한 입금자명과 실제입금자의 성명이 반드시 일치하여야 하며, 7일 이내로 입금을 하셔야 하며 입금되지 않은 주문은 자동취소 됩니다.

배송정보

  • 배송 방법 : 택배
  • 배송 지역 : 전국지역
  • 배송 비용 : 2,500원
  • 배송 기간 : 1일 ~ 3일
  • 배송 안내 : 산간벽지나 도서지방은 별도의 추가금액을 지불하셔야 하는 경우가 있습니다.
    주문하신 제품은 입금확인후 1~3일 내에 출고되며 (해외배송)으로 표시된 제품은
    해외배송 제품으로 배송기간이 약 10일~14일정도 소요될수 있습니다.
    구매전 해외배송 제품은 배송기간을 꼭 확인해 주세요.
    해외배송 진행하신상품은 반품 불가능 합니다.

교환 및 반품정보

교환 및 반품이 가능한 경우
- 상품을 공급 받으신 날로부터 7일이내 단, 가전제품의
  경우 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우에는 교환/반품이 불가능합니다.
- 공급받으신 상품 및 용역의 내용이 표시.광고 내용과
  다르거나 다르게 이행된 경우에는 공급받은 날로부터 3월이내, 그사실을 알게 된 날로부터 30일이내

교환 및 반품이 불가능한 경우
- 고객님의 책임 있는 사유로 상품등이 멸실 또는 훼손된 경우. 단, 상품의 내용을 확인하기 위하여
  포장 등을 훼손한 경우는 제외
- 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우
  (예 : 가전제품, 식품, 음반 등, 단 액정화면이 부착된 노트북, LCD모니터, 디지털 카메라 등의 불량화소에
  따른 반품/교환은 제조사 기준에 따릅니다.)
- 고객님의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 단, 화장품등의 경우 시용제품을
  제공한 경우에 한 합니다.
- 시간의 경과에 의하여 재판매가 곤란할 정도로 상품등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품등의 포장을 훼손한 경우
  (자세한 내용은 고객만족센터 1:1 E-MAIL상담을 이용해 주시기 바랍니다.)

※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
  (색상 교환, 사이즈 교환 등 포함)


서비스문의

상품사용후기

상품의 사용후기를 적어주세요.

게시물이 없습니다

상품문의하기 모두 보기

상품 Q&A

상품에 대해 궁금한 점을 해결해 드립니다.

게시물이 없습니다

상품문의하기 모두 보기