1. Trang chủ
  2. » Tất cả

DIY Arduino RC Transmitter - How To Mechatronics (1).pdf

38 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 26,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong phần hướng dẫn, chúng ta sẽ học cách xây dựng bộ phát Arduino RC DIY Tôi rất thường xuyên cần điều khiển không dây cho các dự án mà tôi thực hiện, vì vậy tôi đã chế tạo bộ điều khiển vô tuyến đa[.]

Trang 1

Trong phần hướng dẫn, chúng ta sẽ học cách

xây dựng bộ phát Arduino RC DIY Tôi rất

thường xuyên cần điều khiển không dây cho

các dự án mà tôi thực hiện, vì vậy tôi đã chế

tạo bộ điều khiển vô tuyến đa chức năng này

có thể được sử dụng cho hầu hết mọi thứ

Hey I'm Dejan, a maker, a techie

Trang 2

Bạn có thể xem video sau hoặc đọc hướng

dẫn bằng văn bản bên dưới

T ổ ng quan

Bây giờ tôi có thể điều khiển không dây bất

kỳ dự án Arduino nào chỉ với một số điều

chỉnh nhỏ ở phía bộ thu Máy phát này cũng

có thể được sử dụng như bất kỳ máy phát RC

thương mại nào để điều khiển đồ chơi RC, ô

tô, máy bay không người lái, v.v Với mục đích

đó, nó chỉ cần một bộ thu Arduino đơn giản

sau đó tạo ra các tín hiệu thích hợp để điều

khiển các thiết bị RC thương mại đó

I will explain how everything works in this

video through few examples of controlling an

Arduino robot car, controlling the Arduino

Ant Robot from my previous video and

controlling a brushless DC motor using an

ESC and some servo motors

and a mechatronics engineer I love making electronics and robotics projects for you to learn and make something cool on your own Don't forget to check my 590K+ subs YouTube Channel.

Table of Contents

1 Overview

2 Arduino RC Transmitter Circuit Diagram

3 PCB Design

3 1 DIY Arduino based RC

Transmitter PCB Gerber file V1

3 2 DIY Arduino based RC

Trang 3

The radio communication of this controller is

based on the NRF24L01 transceiver module

which if used with an amplified antenna it

can have a stable range of up to 700 meters

in open space It features 14 channels, 6 of

which are analog inputs and 8 digital inputs

It has two joysticks, two potentiometers, two

toggle switches, six buttons and additionally

an internal measuring unit consisting of an

accelerometer and a gyroscope which can be

also used for controlling things with just

moving around or tilting the controller

Arduino RC Transmitter

Circuit Diagram

Transmitter PCB Gerber file V2

3 3 DIY Arduino based RC

Transmitter PCB Gerber file V3

4 Assembling the PCB

5 DIY Arduino based RC Transmitter Code

5 1 Receiver Code

6 Arduino Robot Car Wireless Control using RC Transmitter

6 1 Receiver 02

- Arduino Robot Car Example

7 Arduino Ant Robot / Hexapod control using Arduino RC Transmitter

71 Receiver 03 Ant Robot

-Example

8 ESC and Servo Control using RC Transmitter

Trang 4

To begin with, let’s take a look at the circuit

diagram The brain of this RC controller is an

Arduino Pro Mini which is powered using 2

LiPo batteries producing around 74 volts We

can connect them directly to the RAW pin of

the Pro Mini which has a voltage regulator

that reduced the voltage to 5V Note that

there are two versions of the Arduino Pro

Mini, like the one I have that operates at 5V

and the other operates at 3 3V

On the other hand, the NRF24L01 module

strictly needs 3 3V and it’s recommended to

come from a dedicated source Therefore we

need to use a 3 3V voltage regulator which is

connected to the batteries and convert the

74V to 3 3V Also we need to use a

decoupling capacitor right next to the

module in order to keep the voltage more

stable, thus the radio communication will be

more stable as well The NRF24L01 module

communicates with the Arduino using SPI

protocol, while the MPU6050 accelerometer

and gyro module uses the I2C protocol

FEATUREDPROJECTS

Trang 5

You can get the components needed for this

Arduino Tutorial from the links below:

Amazon  /  Banggood / AliExpress

Chuyển đổi Công tắc

……….…   Amazon

 /  Banggood / AliExpress

Cần điều khiển

………

Amazon / Banggood / AliExpress 

-Cần điều khiển này đi kèm với một

bảng đột phá, vì vậy bạn sẽ phải hủy

bỏ Cần điều khiển khỏi nó

Cần điều khiển không có bảng đột phá

Trang 6

Tiết lộ: Đây là những liên kết liên kết Với tư

cách là Cộng tác viên của Amazon, tôi kiếm

được tiền từ các giao dịch mua đủ điều kiện

Thi ế t k ế PCB

Tôi thực sự đã sử dụng tất cả các chân

analog và kỹ thuật số của Arduino Pro Mini

Vì vậy, bây giờ nếu tôi cố gắng kết nối mọi

thứ với nhau bằng cách sử dụng dây nhảy, nó

sẽ khá lộn xộn Do đó, tôi đã thiết kế một

PCB tùy chỉnh bằng cách sử dụng phần mềm

thiết kế mạch trực tuyến miễn phí EasyEDA

Ở đây, tôi đã xem xét tính công thái học của

bộ điều khiển và thiết kế nó để có thể dễ

dàng cầm bằng hai tay, trong khi tất cả các

Trang 7

điều khiển đều nằm trong phạm vi của các

ngón tay Tôi đã làm cho các cạnh tròn và

thêm một số lỗ 3mm để tôi có thể gắn PCB

vào một thứ gì đó sau này Tôi đã đặt các

chân lập trình Arduino Pro Mini ở phía trên

cùng của bộ điều khiển để chúng có thể dễ

dàng truy cập trong trường hợp chúng tôi

muốn lập trình lại Arduino Chúng ta cũng có

thể nhận thấy ở đây rằng tôi đã sử dụng các

chân RX và TX của Arduino cho các nút cần

điều khiển Tuy nhiên, hai dòng này cần được

ngắt kết nối khỏi bất kỳ thứ gì trong khi

chúng tôi đang tải bản phác thảo lên

Arduino Vì vậy, chúng được ngắt bằng hai

chân mà sau đó có thể dễ dàng kết nối bằng

cách sử dụng các nắp jumper đơn giản

Xin lưu ý: Đảm bảo rằng bạn có phiên bản

Arduino Pro Mini phù hợp để tạo PCB hoặc

sửa đổi thiết kế PCB theo nó Dưới đây là ảnh

so sánh giữa ba phiên bản khác nhau, tùy

thuộc vào Arduino của bạn và bộ điều chỉnh

điện áp

Đây là một liên kết đến các tệp dự án của

thiết kế PCB này Thao tác này sẽ mở ba

Trang 8

phiên bản khác nhau trong các tab riêng biệt,

vì vậy bạn có thể chọn phiên bản mình cần

Vì vậy, sau khi hoàn thành thiết kế, tôi đã tạo

tệp Gerber cần thiết để sản xuất PCB

Tệp định dạng:

Sau đó, tôi đã đặt mua PCB từ JLCPCB cũng

là nhà tài trợ của video này

Trang 9

Tại đây, chúng ta có thể chỉ cần kéo và thả

tệp Gerber và sau khi tải lên, chúng ta có thể

xem lại PCB của mình trong trình xem

Gerber Nếu mọi thứ đều ổn thì chúng ta có

thể tiếp tục và chọn các thuộc tính mà chúng

ta muốn cho PCB của mình Lần này tôi chọn

màu PCB là đen Vậy là xong, bây giờ chúng

ta có thể đơn giản đặt mua PCB của mình với

mức giá hợp lý Lưu ý rằng nếu đó là đơn đặt

hàng đầu tiên của bạn từ JLCPCB, bạn có thể

nhận được tối đa 10 PCB chỉ với 2 đô la

Và nó đây Tôi thực sự thích cách PCB này

xuất hiện trong màu đen này Chất lượng của

PCB rất tuyệt và mọi thứ đều giống hệt như

trong thiết kế

Trang 10

L ắ p ráp PCB

Được rồi, bây giờ chúng ta có thể tiếp tục lắp

ráp PCB Tôi bắt đầu với việc hàn các đầu

ghim của Arduino Pro Mini Một cách dễ dàng

và tốt để làm điều đó là đặt chúng lên một

breadboard và như vậy chúng sẽ cố định ở vị

trí trong khi hàn

Pro Mini cũng có các chân cắm ở hai bên,

nhưng lưu ý rằng vị trí các chân cắm này có

thể khác nhau tùy thuộc vào nhà sản xuất

Trang 11

Đối với mô hình cụ thể mà tôi có, tôi cần 5

chân cho mỗi bên, trong khi để trống một

chân GND vì tôi đã sử dụng khu vực bên dưới

của nó trên PCB để chạy một số dấu vết Tôi

đã hàn Arduino Pro Mini trực tiếp lên PCB và

cắt độ dài thực thi của các tiêu đề Ngay bên

cạnh nó là mô đun con quay hồi chuyển và

gia tốc kế MPU6050

Sau đó, tôi hàn bộ điều chỉnh điện áp 3,3V

với một tụ điện bên cạnh nó và một tụ điện

khác gần mô đun NRF24L01 Mô đun này có

Trang 12

Tôi tiếp tục với các chân để lập trình Arduino,

chân RX và TX, chân cấp nguồn và công tắc

nguồn

Tiếp theo để hàn chiết áp vào PCB, tôi phải

mở rộng các chân của chúng bằng cách sử

dụng một số đầu cắm chân

Chúng ta có thể lưu ý ở đây rằng trước đây

tôi đã cắt chiều dài của các núm để tôi có thể

lắp đúng một số nắp vào chúng Tuy nhiên,

chúng tôi sẽ hàn chiết áp vào PCB sau một

chút

Sau đó, tôi lắp và hàn hai công tắc bật tắt và

hai cần điều khiển vào đúng vị trí

Trang 13

Cuối cùng những gì còn lại là hàn bốn nút

nhấn Tuy nhiên chúng không có chiều cao

thích hợp, vì vậy một lần nữa tôi đã sử dụng

đầu ghim để mở rộng chân của chúng một

chút

Và thế là xong, PCB của chúng tôi hiện đã

sẵn sàng để chúng tôi có thể tiếp tục chế tạo

vỏ cho nó Bởi vì tôi thích vẻ ngoài của PCB

và tôi muốn được nhìn thấy, tôi đã quyết định

sử dụng acrylic trong suốt cho lớp vỏ

Ở đây tôi có 4 mm đánh dấu acrylic trong

suốt hiện có một lá bảo vệ và có vẻ là màu

xanh lam Ý tưởng cho tấm bìa là tạo ra hai

tấm có hình dạng của PCB và cố định một

Trang 14

trong số chúng ở mặt trên và tấm kia ở mặt

dưới của PCB

Vì vậy, tôi đã đánh dấu hình dạng PCB và sử

dụng một chiếc cưa tay kim loại, tôi cắt

acrylic theo nó

Sau đó, sử dụng một nét vẽ đơn giản, tôi đã

tinh chỉnh hình dạng của acrylic Hai tấm này

rất tuyệt và chúng hoàn toàn phù hợp với

PCB

Trang 15

Tiếp theo, tôi đánh dấu những vị trí mà tôi

cần tạo khe hở cho các thành phần đi qua

Sử dụng một mũi khoan 3mm, lần đầu tiên

tôi tạo 4 lỗ để cố định các tấm vào PCB Đối

với những lỗ này, tôi cũng tạo bộ đếm chìm

để có thể đặt các bu lông chớp với các tấm

Đối với các lỗ mở cho công tắc bật tắt và

chiết áp, tôi sử dụng mũi khoan 6mm và đối

với các lỗ mở cần điều khiển, tôi sử dụng mũi

khoan Forstner 25mm Một lần nữa, bằng

cách sử dụng một đoạn ngắn, tôi đã tinh

chỉnh tất cả các lỗ hổng

Trang 16

Trước khi lắp ráp nắp, chỉ cần lưu ý rằng tôi

thực sự đã hàn đầu cắm chân cắm ngược của

bộ nguồn để có thể tiếp cận nó từ mặt sau

nơi đặt pin

Được rồi, bây giờ chúng ta có thể bắt đầu với

việc lắp ráp bìa Tôi bắt đầu với việc bóc lớp

giấy bảo vệ khỏi acrylic mà tôi phải thừa

nhận là khá hài lòng vì acrylic bây giờ rất

sạch Vì vậy, đầu tiên tôi cố định hai chiết áp

trên tấm trên cùng, lắp các bu lông lắp 3mm

Trang 17

Sau đó, tôi cẩn thận hợp nhất và bảo đảm

tấm trên cùng và PCB bằng một số bu lông

Tại thời điểm này, cuối cùng tôi đã hàn chiết

áp vào PCB vì trước đó tôi không biết chính

xác chúng sẽ được đặt ở độ cao nào

Tiếp theo trên tấm mặt sau, tôi gắn giá đỡ

pin bằng 2 bu lông Tôi đã hoàn thành việc

Trang 18

Cuối cùng, chúng ta có thể gắn các đường

pin vào chân cấp nguồn, lắp và cố định các

nút trên chiết áp, lắp các nút trên cần điều

khiển và gắn ăng ten vào mô đun NRF24l01

Và thế là xong, cuối cùng chúng ta đã hoàn

thành với bộ phát Arduino RC DIY

Việc còn lại bây giờ là lập trình Arduino Để

lập trình bo mạch Pro Mini, chúng ta cần một

giao diện USB nối tiếp UART có thể được kết

nối với tiêu đề lập trình nằm ở phía trên cùng

của bộ điều khiển của chúng tôi

Trang 19

Sau đó, trong menu công cụ Arduino IDE,

chúng ta cần chọn bảng Arduino Pro hoặc

Pro Mini, chọn phiên bản thích hợp của bộ xử

Trang 20

T ự làm mã máy phát RC d ự a

trên Arduino

Hãy giải thích cách hoạt động của mã máy

phát Vì vậy, trước tiên chúng ta cần bao gồm

thư viện SPI và RF24 cho giao tiếp không dây

và thư viện I2C cho mô đun gia tốc kế Sau

đó, chúng ta cần xác định các đầu vào kỹ

thuật số, một số biến cần thiết cho chương

trình bên dưới, xác định đối tượng vô tuyến

// Define the digital inputs

#define jB1 1 // Joystick button 1

#define jB2 0 // Joystick button 2

#define t1 7 // Toggle switch 1

#define t2 4 // Toggle switch 1

#define b1 8 // Button 1

#define b2 9 // Button 2

#define b3 2 // Button 3

#define b4 3 // Button 4

const int MPU = 0x68 ; // MPU6050 I2C address

float AccX, AccY, AccZ;

float GyroX, GyroY, GyroZ;

float accAngleX, accAngleY, gyroAngleX, gyroAngleY;

float angleX, angleY;

float AccErrorX, AccErrorY, GyroErrorX, GyroErrorY;

float elapsedTime, currentTime, previousTime;

Trang 21

Sau đó, chúng ta cần xác định một cấu trúc

nơi chúng ta sẽ lưu trữ 14 giá trị đầu vào của

bộ điều khiển Kích thước tối đa của cấu trúc

này có thể là 32 byte vì đó là giới hạn bộ đệm

NRF24L01 hoặc lượng dữ liệu mà mô đun có

Data_Package data; //Create a variable with the above struc

Trong phần thiết lập, chúng ta cần khởi tạo

mô đun MPU6050 và chúng tôi cũng có thể

tính toán lỗi IMU là giá trị sau này được sử

dụng khi tính toán các góc chính xác của

mô-đun

void initialize_MPU6050 () {

Wire begin (); // Initialize comunication

Wire beginTransmission (MPU); // Start communication w

Wire write ( 0x6B ); // Talk to the register 6B

Wire write ( 0x00 ); // Make reset - place a 0 into t

Wire endTransmission ( true ); //end the transmission

// Configure Accelerometer

Wire beginTransmission (MPU);

Wire write ( 0x1C ); //Talk to the ACCEL_CONFIG re

Wire write ( 0x10 ); //Set the register bits as 00010

Trang 22

Wire endTransmission ( true );

// Configure Gyro

Wire beginTransmission (MPU);

Wire write ( 0x1B ); // Talk to the GYRO_CONFIG r

Wire write ( 0x10 ); // Set the register bits as 0001

Wire endTransmission ( true );

}

Bạn có thể tìm thêm thông tin chi tiết về cách

hoạt động của gia tốc kế MEMS và con quay

hồi chuyển tại đây Sắp có hướng dẫn dành

riêng cho MPU6050

Sau đó, chúng ta cần khởi tạo giao tiếp vô

tuyến, kích hoạt các điện trở kéo lên bên

trong Arduino cho tất cả các đầu vào kỹ

thuật số và đặt các giá trị mặc định ban đầu

Trong phần vòng lặp, hãy bắt đầu bằng cách

đọc tất cả các đầu vào tương tự, ánh xạ các

giá trị của chúng từ 0 đến 1023 thành các giá

trị byte từ 0 đến 255 bởi vì chúng tôi đã xác

Trang 23

định các biến trong cấu trúc của mình dưới

dạng byte Mỗi đầu vào được lưu trữ trong

biến dữ liệu cụ thể từ cấu trúc

// Read all analog inputs and map them to one Byte value

data.j1PotX = map ( analogRead (A1), 0 , 1023 , 0 , 255 ); // Conv

data.j1PotY = map ( analogRead (A0), 0 , 1023 , 0 , 255 );

data.j2PotX = map ( analogRead (A2), 0 , 1023 , 0 , 255 );

data.j2PotY = map ( analogRead (A3), 0 , 1023 , 0 , 255 );

data.pot1 = map ( analogRead (A7), 0 , 1023 , 0 , 255 );

data.pot2 = map ( analogRead (A6), 0 , 1023 , 0 , 255 );

Chúng ta chỉ cần lưu ý rằng bởi vì chúng ta

sử dụng điện trở kéo lên, các số đọc chân kỹ

thuật số là 0 khi các nút được nhấn

// Read all digital inputs

// Send the whole data from the structure to the receiver

radio write (&data, sizeof (Data_Package));

Trong trường hợp công tắc chuyển đổi 1 được

bật, thì chúng tôi sử dụng dữ liệu gia tốc kế

và con quay hồi chuyển để điều khiển

Trang 24

}

Vì vậy, thay vì các giá trị X và Y của phím điều

khiển, chúng tôi đang sử dụng các giá trị góc

mà chúng tôi nhận được từ IMU, mà trước

đây chúng tôi chuyển đổi chúng từ các giá trị

từ -90 đến +90 độ thành các giá trị byte từ 0

đến 255 một cách thích hợp

// Map the angle values from -90deg to +90 deg into values

data.j1PotX = map (angleX, -90 , + 90 , 255 , 0 );

data.j1PotY = map (angleY, -90 , + 90 , 0 , 255 );

Vì vậy, đó là cách mã máy phát, những điều

quan trọng nhất là xác định liên lạc vô tuyến

và gửi dữ liệu đến máy thu

Đây là mã Arduino đầy đủ cho Bộ phát

Arduino RC DIY này:

/*

DIY Arduino based RC Transmitter

by Dejan Nedelkovski, www.HowToMechatronics.com

// Define the digital inputs

#define jB1 1 // Joystick button 1

#define jB2 0 // Joystick button 2

#define t1 7 // Toggle switch 1

#define t2 4 // Toggle switch 1

Trang 25

const int MPU = 0x68 ; // MPU6050 I2C address

float AccX, AccY, AccZ;

float GyroX, GyroY, GyroZ;

float accAngleX, accAngleY, gyroAngleX, gyroAngleY;

float angleX, angleY;

float AccErrorX, AccErrorY, GyroErrorX, GyroErrorY;

float elapsedTime, currentTime, previousTime;

int c = 0 ;

RF24 radio ( 5 , 6 ) ; // nRF24L01 (CE, CSN)

const byte address[ 6 ] = "00001" ; // Address

// Max size of this struct is 32 bytes - NRF24L01 buffer limit

Trang 26

// Set initial default values

data.j1PotX = 127 ; // Values from 0 to 255 When Joystick is

// Read all analog inputs and map them to one Byte value

data.j1PotX = map ( analogRead (A1), 0 , 1023 , 0 , 255 ); // Conv

data.j1PotY = map ( analogRead (A0), 0 , 1023 , 0 , 255 );

data.j2PotX = map ( analogRead (A2), 0 , 1023 , 0 , 255 );

data.j2PotY = map ( analogRead (A3), 0 , 1023 , 0 , 255 );

data.pot1 = map ( analogRead (A7), 0 , 1023 , 0 , 255 );

data.pot2 = map ( analogRead (A6), 0 , 1023 , 0 , 255 );

// Read all digital inputs

// Send the whole data from the structure to the receiver

radio write (&data, sizeof (Data_Package));

}

void initialize_MPU6050 () {

Wire begin (); // Initialize comunication

Wire beginTransmission (MPU); // Start communication w

Wire write ( 0x6B ); // Talk to the register 6B

Ngày đăng: 06/11/2022, 11:37

🧩 Sản phẩm bạn có thể quan tâm

w