Điều khiển động cơ Servo từ xa bằng biến trở - Sử dụng module nRF24L01

I. Lượn vài vòng

Nhiều bạn đã và đang tìm hiểu những ứng dụng của module nRF24L01 và đang gặp rắc rối, hay không biết liệu nó có làm được gì hay hơn không. Ở bài viết này tôi xin hướng dẫn một cách tiếp theo để điều khiển động cơ Servo thông qua module nRF24L01 và biến trở. Nó làm được gì không? Ở đây tác giả tạm giữ bí mật về ứng dụng của nó trên dự án của mình. Nhưng với bài viết này hoàn toàn bạn có thể nghĩ ra ứng dụng cho nó chẳng hạn tăng tốc độ máy quạt từ xa, điều chỉnh van nước,... Chả có gì khó cả, ta bắt đầu thôi nào!

II. Nhắc lại một ít kiến thức về Module NRF24L01

Các bn có th d dàng tìm kiếm thông s ca module này trên Cộng đồng Arduino Việt Nam qua từ khóa NRF24L01. Tôi xin gii thiu sơ qua mt s đc đim mà tôi quan tâm như sau:

  • Khoảng cách thu phát khoảng 100m (với điều kiện trống trải), khoảng 30-50m (trong nhà). Với một số phiên bản đặc biệt ví dụ như loại NRF24L01+ thì khoảng cách có thể lên tới 1km. Khá thích hợp cho các bộ điều khiển cầm tay.
  • Có anten sẵn trên bảng mạch rất tiện và đẹp.
  • Có khả năng truyền tín hiệu 2 chiều. Tức là một module vừa có thể là transmitter vừa có thể là receiver. Khác biệt so với loại 433Mhz là phải có 2 module riêng biệt.
  • Giá thành thấp khoảng 10k VNĐ/cái (tôi mua trên Aliexpress.com) tức rẻ hơn module 433Mhz một chút.
  • Ít gặp sự cố (hiện tại tới lúc này)

III. Phần cứng

  • 02 mạch Arduino.
  • 02 module NRF24L01.
  • 01 biến trở
  • 01 động cơ servo futaba
  • Test board và dây nối.

IV. Lắp mạch

Ở đây tôi nói về cách nối module NRF24 với Arduino cách nối dây này dùng cho cả hai bên mạch thu và phát đừng quên nhé !

1. Module nRF24L01

NRF24 Arduino
1 GND
2 3.3V
3 D9
4 D10
5 D13
6 D11
7 D12

2. Cách nối dây dành cho transmitter (mạch phát):

3. Cách nối dây dành cho receiver (mạch thu):

 

V. Lập trình

Lưu ý: Cần tải và cài đặt thư viện nRF24L01 thì mới nạp code được nhá !

Để tải và cài đặt bạn quay lại bài viết Sử dụng Module NRF24L01 - Thu phát sóng vô tuyến 2.4GHz với Arduino

Hoặc tải thư viện TẠI ĐÂY (mirror)

1. Dành cho transmitter (mạch phát):

#include <SPI.h>
#include "RF24.h"
const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ để phát
RF24 radio(9,10);
unsigned char msg[1]; //số dương kiểu unsigned char, tương đương với byte msg[1]. Dùng để lưu trữ nội dung sẽ gửi.
const int potpin_1 = A0; // chân biến trở
int val_1;
void setup(){ 
    //========Module NRF24
    Serial.begin(9600);
    radio.begin();                     
    radio.setAutoAck(1);               
    radio.setRetries(1,1);             
    radio.setDataRate(RF24_1MBPS);    // Tốc độ truyền
    radio.setPALevel(RF24_PA_MAX);      // Dung lượng tối đa
    radio.setChannel(10);               // Đặt kênh
    radio.openWritingPipe(pipe);        // mở kênh
}
void loop() { 
    val_1 = analogRead(potpin_1); //đọc giá trị biến trở
    val_1 = map(val_1, 0, 1023, 0, 180); 
    msg[0] = val_1;
    Serial.println(msg[0]);
    radio.write(&msg, sizeof(msg));
}

2. Dành cho receiver (mạch thu):

#include <SPI.h>
#include <Servo.h> 
#include "RF24.h"
const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ phát
RF24 radio(9,10);
unsigned char msg[1];
Servo servo1;// servo1
int data; 
int pos;
    
void setup(){
    Serial.begin(9600);
    radio.begin();                     
    radio.setAutoAck(1);              
    radio.setDataRate(RF24_1MBPS);    // Tốc độ dữ liệu
    radio.setChannel(10);               // Đặt kênh
    radio.openReadingPipe(1,pipe);     
    radio.startListening();            
    servo1.attach(3);  // sử dụng chân số 3 để điều khiển servo
}
    
void loop(){
    if (radio.available()) {
        radio.read(&msg, sizeof(msg));
        servo1.write(msg[0]);
        Serial.println(msg[0]);
    }
}

VI. Kết luận cuối cùng

Từ những công cụ và kiến thức mình cung cấp ở trên bạn có thể tự nghĩ ra ý tưởng của mình về ứng dụng nó đi nào ! Cảm ơn đã đọc bài bạn có thể đóng góp ý kiến bên dưới

Video demo hoạt động quay gấp buổi tối có gì thông cảm HAHA :  

lên
25 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Bật tắt đèn bằng giọng nói với Arduino

Đã có nhiều bài viết về sử dụng bluetooth để bật tắt thiết bị từ xa, hay là những cách điều khiển khác bằng button nhưng liệu bạn có nghĩ bạn có thể bật tắt thiết bị (Ví dụ ở đây là một đèn LED, nếu muốn bật tắt thiết bị 220V bạn tham khảo thêm bài này) từ xa bằng giọng nói hay không? Có vẻ có gì đó không ổn đúng không nào, nhưng nó không khó và không có gì là không ổn cả. Với bài viết này tác giả muốn giúp mọi người có thể làm được điều này một cách dễ dàng và ứng dụng nó làm điều mình thích!

lên
33 thành viên đã đánh giá bài viết này hữu ích.

Điều khiển động cơ Servo bằng điện thoại

Bấy lâu nay ta đã làm rất nhiều với servo, với bluetooth. Hôm nay, mình sẽ giới thiệu cho các cách phối hợp 2 cái đó lại, và tương lai các bạn sẽ có thể tự làm đươc cho mình một cánh tay robot bằng những chú servo!

Với tinh thần chia sẻ những kiến thức đã có và cùng nhau chế tạo ROBOT sau bài viết này hứa hẹn sẽ có nhiều bài viết nữa, có thể nói là toàn bộ quá trình làm nên dự án của mình. Cùng với đó nhằm tham gia cuộc thi CCA do cộng động Arduino tổ chức mong các bạn góp ý và ủng hộ qua những comemnt góp ý bên dưới.

lên
17 thành viên đã đánh giá bài viết này hữu ích.