全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 机器人 >

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

时间:2023-02-11 02:09

人气:

作者:admin

标签: 无人机  arduino 

导读:Hello大家好,我是伊娃老师,今天介绍DIY大神KendinYap的无人机DIY。 很多做飞机的都是靠K大启蒙的,我们来看他用Arduino做一个无人机。 在这里我特别佩服K大的是他直接用焊接电路的PCB板...

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

ff978906-a96d-11ed-a826-dac502259ad0.png

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

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

ffe2a260-a96d-11ed-a826-dac502259ad0.png

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

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

00d8c316-a96e-11ed-a826-dac502259ad0.png

011ca4e6-a96e-11ed-a826-dac502259ad0.png

015b92dc-a96e-11ed-a826-dac502259ad0.png

准备工具

焊枪+焊锡

尖嘴钳

剥线钱

台锯

台钻

笔刀

平口钳夹具

热熔胶枪+胶

双面胶

螺丝刀

胶带

遥控器制作

01b707b6-a96e-11ed-a826-dac502259ad0.png

1 xArduinoNano

2 x双轴按键传感器

1 x3档摇臂开关

1 x100uF电容

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

1 x7.4v460Mah锂电池

1 x680R电阻

若干x5mmKT板、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));}

接收器制作

02208d80-a96e-11ed-a826-dac502259ad0.png

1 xArduinoNano

1 x7.4v460Mah锂电池

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

1 x100uF电容

若干xPCB板、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));}

无人机制作

02521ef4-a96e-11ed-a826-dac502259ad0.png

02bcb58e-a96e-11ed-a826-dac502259ad0.png

0315be04-a96e-11ed-a826-dac502259ad0.png

1 xKK2.15飞控

4 x1806 2380KV无刷电机

4 x4045螺旋桨

4 x12A电子调速器

6 x塑料六角隔离柱

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

审核编辑黄宇

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信