最详细的Arduino四轴无人机教学

描述

Hello大家好,我是伊娃老师,今天介绍DIY大神KendinYap的无人机DIY。

Arduino

很多做飞机的都是靠K大启蒙的,我们来看他用Arduino做一个无人机。

在这里我特别佩服K大的是他直接用焊接电路的PCB板加工成无人机的机身,再直接焊接需要的电路,真可以说是一举两得,省了材料也省了重量。

Arduino

解说过程大家可以看看视频,一共15分钟,讲解遥控器跟无人机两部分。

视频中用到的工具跟材料,我都对应了某宝关键字找到了,大家觉得有帮助的话,就帮我多转发、关注吧,最下面也可以点喜欢作者支持我哟~

Arduino

Arduino

Arduino

准备工具

焊枪+焊锡

尖嘴钳

剥线钱

台锯

台钻

笔刀

平口钳夹具

热熔胶枪+胶

双面胶

螺丝刀

胶带

遥控器制作

Arduino

1 x Arduino Nano

2 x双轴按键传感器

1 x 3档摇臂开关

1 x 100uF电容

1 x NRF24L01 + PA大功率无线收发模块

1 x 7.4v 460Mah锂电池

1 x 680R电阻

若干 x 5mm KT板、PCB板、2.54插座、电子连接线

 

// 6 Channel Transmitter | 6 Kanal Verici #include #include #include const uint64_t pipeOut = 0xE9E8F0F0E1LL; //IMPORTANT: The same as in the receiver 0xE9E8F0F0E1LL | Bu adres alıcı ile aynı olmalı RF24 radio(9, 10); // select CE,CSN pin | CE ve CSN pinlerin seçimi struct Signal { byte throttle; byte pitch; byte roll; byte yaw; byte aux1; byte aux2;}; Signal data; void ResetData() { data.throttle = 12; // Motor stop | Motor Kapalı (Signal lost position | sinyal kesildiğindeki pozisyon) data.pitch = 127; // Center | Merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.roll = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.yaw = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.aux1 = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.aux2 = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon)} void setup(){ //Start everything up radio.begin(); radio.openWritingPipe(pipeOut); radio.setAutoAck(false); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_HIGH); radio.stopListening(); //start the radio comunication for Transmitter | Verici olarak sinyal iletişimi başlatılıyor ResetData(); } // Joystick center and its borders | Joystick merkez ve sınırları int mapJoystickValues(int val, int lower, int middle, int upper, bool reverse){ val = constrain(val, lower, upper); if ( val < middle ) val = map(val, lower, middle, 0, 128); else val = map(val, middle, upper, 128, 255); return ( reverse ? 255 - val : val );} void loop(){ // Control Stick Calibration | Kumanda Kol Kalibrasyonları // Setting may be required for the correct values of the control levers. | :Kontrol kolların doğru değerleri için ayar gerekebilir. data.throttle = mapJoystickValues( analogRead(A0), 12, 524, 1020, true ); // "true" or "false" for signal direction | "true" veya "false" sinyal yönünü belirler data.roll = mapJoystickValues( analogRead(A3), 12, 524, 1020, true ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.pitch = mapJoystickValues( analogRead(A2), 12, 524, 1020, false ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.yaw = mapJoystickValues( analogRead(A1), 12, 524, 1020, false ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.aux1 = mapJoystickValues( analogRead(A6), 12, 524, 1020, true ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.aux2 = mapJoystickValues( analogRead(A7), 12, 524, 1020, true ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler radio.write(&data, sizeof(Signal));}

 

接收器制作

Arduino

1 x Arduino Nano

1 x 7.4v 460Mah锂电池

1 x NRF24L01 + PA大功率无线收发模块

1 x 100uF电容

若干 x PCB板、2.54插座、2.54排针、电子连接线

 

// 6 Channel Transmitter | 6 Kanal Verici #include #include #include const uint64_t pipeOut = 0xE9E8F0F0E1LL; //IMPORTANT: The same as in the receiver 0xE9E8F0F0E1LL | Bu adres alıcı ile aynı olmalı RF24 radio(9, 10); // select CE,CSN pin | CE ve CSN pinlerin seçimi struct Signal { byte throttle; byte pitch; byte roll; byte yaw; byte aux1; byte aux2;}; Signal data; void ResetData() { data.throttle = 12; // Motor stop | Motor Kapalı (Signal lost position | sinyal kesildiğindeki pozisyon) data.pitch = 127; // Center | Merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.roll = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.yaw = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.aux1 = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon) data.aux2 = 127; // Center | merkez (Signal lost position | sinyal kesildiğindeki pozisyon)} void setup(){ //Start everything up radio.begin(); radio.openWritingPipe(pipeOut); radio.setAutoAck(false); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_HIGH); radio.stopListening(); //start the radio comunication for Transmitter | Verici olarak sinyal iletişimi başlatılıyor ResetData(); } // Joystick center and its borders | Joystick merkez ve sınırları int mapJoystickValues(int val, int lower, int middle, int upper, bool reverse){ val = constrain(val, lower, upper); if ( val < middle ) val = map(val, lower, middle, 0, 128); else val = map(val, middle, upper, 128, 255); return ( reverse ? 255 - val : val );} void loop(){ // Control Stick Calibration | Kumanda Kol Kalibrasyonları // Setting may be required for the correct values of the control levers. | :Kontrol kolların doğru değerleri için ayar gerekebilir. data.throttle = mapJoystickValues( analogRead(A0), 12, 524, 1020, true ); // "true" or "false" for signal direction | "true" veya "false" sinyal yönünü belirler data.roll = mapJoystickValues( analogRead(A3), 12, 524, 1020, true ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.pitch = mapJoystickValues( analogRead(A2), 12, 524, 1020, false ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.yaw = mapJoystickValues( analogRead(A1), 12, 524, 1020, false ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.aux1 = mapJoystickValues( analogRead(A6), 12, 524, 1020, true ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler data.aux2 = mapJoystickValues( analogRead(A7), 12, 524, 1020, true ); // "true" or "false" for servo direction | "true" veya "false" servo yönünü belirler radio.write(&data, sizeof(Signal));}

 

无人机制作

Arduino

Arduino

Arduino

1 x KK2.15飞控

4 x 1806 2380KV无刷电机

4 x 4045螺旋桨

4 x 12A电子调速器

6 x 塑料六角隔离柱

若干 x 5mm KT板、PCB板、M3螺丝、M3垫片、M3螺母、2mm电线对接头、热缩管、JST母头插座、电子连接线、T型插头

审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分