Upload
tien-nguyen
View
166
Download
12
Embed Size (px)
DESCRIPTION
Lập trình module nRF24L01
Citation preview
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
1/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Page 1 of 2 2 Next >
Đăng ngày 23 Tháng mười một 2012 #1
GIAO TIẾP NRF24L01 VỚI AVR...!Thảo luận trong 'Module RF - RFID' bắt đầu bởi quang.dt7bk, 23 Tháng mười một 2012.
Users Viewing Thread (Users: 0, Guests: 0)
Lượt xem: 3,091
Hi các bạn...^^
Với sự "nóng lên" của module NRF24L01, mình cũng xin góp vui với mọi người mạch giao tiếp NRF24L01 với AVR, cụ thể ở đây
mình sử dụng Atmega8L...
Bài toán của mình là truyền 1 mã BCD từ VĐK master đến VĐK slave thông qua module NRF24L01:
- Mạch phát: sử dụng 5 nút bấm, 4 nút BT1 --> BT4 dùng để thiết lập mã BCD, BT5 để cho phép truyền mã đi. Các thiết lập
được hiển thị trên LCD1602.
- Mạch thu: tương tự mạch phát, mã nhận được hiển thị lên LCD. khi nhận được tín hiệu, mạch phát tự động gửi 1 lệnh báo quá
trình truyền đã OK lại cho VĐK master...(vì NRF24L01 có thể vừa nhận, vừa truyền dữ liệu).
- WARNING: mình sử dụng Atmega8L, nếu cấp nguồn nuôi là 5V thì trong quá trình truyền dữ liệu sẽ xảy ra hiện tượng 2 mạch
thu phát bị "đơ", nhưng nếu dùng nguồn 3.3V thì mọi chuyện lại rất mượt...???
Anh em vào tham khảo, ai có lời giải đáp thì chia sẻ với mọi người...@@
- Sơ đồ nguyên lý của mạch thu-phát:
- Code:
Mạch Phát:
HTML:
Trang chủ Diễn đàn Thư Viện VideoThư Viện Ảnh Thành viên
Trang chủ Diễn đàn Sản Phẩm Minh Hà Module Module RF - RFID
1
quang.dt7bkquang.dt7bk
Nhóm MCU
Số bài v iết: 325
Đã được thích: 308
Điểm thành tích: 63
Giới tính: Nam
Tiền: $132,870
Đăng nhập hoặc Đăng ký
Tìm kiếm diễn đànTìm kiếm diễn đàn Có gì mới?Có gì mới?
Tìm kiếm...
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
2/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
void main(void){unsigned char RxBuf[32];unsigned char Lcd_Buff[16]; // Bo dem cho LCD1602unsigned char MaTruyen;unsigned char b0, b1, b2, b3;bit a,b,c,d; // Cac bit trong ma BCD: abcd // PORTB ===============================================PORTB=0xFF;DDRB=0xFF; // PORTC ===============================================PORTC=0xFF;DDRC=0xFF; // PORTD ===============================================PORTD=0xFF;DDRD=0xC0; a=b=c=d=0; // Khoi tao LCD1602 ====================================lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_puts("NRF24L01 2.4GHz");lcd_gotoxy(0,1);lcd_puts(" MODULE PHAT");delay_ms(2000);lcd_clear(); // Khoi tao NRF24L01 ===================================init_NRF24L01();//SetTX_Mode();SetRX_Mode();while (1) { if(nRF24L01_RxPacket(RxBuf)==1) // Neu nhan duoc du lieu { LED=0; lcd_gotoxy(4,1); lcd_puts(RxBuf); // Nhan ket qua bao ve tu ben thu LED=1; SetRX_Mode(); }/*SU DUNG 4 NUT BAM KEY1--KEY4 DE LAP MA BCD KEY1 set bit3 (a) KEY1 set bit2 (b) KEY1 set bit1 (c) KEY1 set bit0 (d)*/ if(BT1==0) { delay_ms(10); // delay chong nhieu cho nut bam if(BT1==0) { while(BT1==0); a=~a; } } if(BT2==0) { delay_ms(10); if(BT2==0) { while(BT2==0); b=~b; } } if(BT3==0) { delay_ms(10); if(BT3==0) { while(BT3==0); c=~c; } } if(BT4==0) { delay_ms(10); if(BT4==0) { while(BT4==0); d=~d; } } sprintf(Lcd_Buff,"MaBCD: %u%u%u%u",a,b,c,d); lcd_gotoxy(0,0);
Mạch Thu:
HTML:
void main(void){unsigned char RxBuf[32]; // PORTB ===============================================PORTB=0xFF;DDRB=0xFF; // PORTC ===============================================PORTC=0xFF;DDRC=0xFF; // PORTD ===============================================PORTD=0xFF;DDRD=0xC0; // Khoi tao LCD1602 ====================================lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_puts("NRF24L01 2.4GHz");delay_ms(2000);lcd_clear();lcd_gotoxy(0,0);lcd_puts(" MODULE THU"); // Khoi tao NRF24L01 ===================================init_NRF24L01();//SetTX_Mode();SetRX_Mode();while (1) { if(nRF24L01_RxPacket(RxBuf)==1) // Neu nhan duoc du lieu { LED=0; SetTX_Mode(); // Enable phat delay_ms(10); sprintf(TxBuf,"DATA OK!"); nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data SPI_RW_Reg(WRITE_REG+STATUS,0XFF); // Clear Bit Send //lcd_clear(); lcd_gotoxy(3,1); lcd_puts(RxBuf); delay_ms(1500); sprintf(TxBuf,"Wait...."); nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data LED=1; SetRX_Mode(); } }}
Video demo :
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
3/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Kích thước: 340.5 KB
Đọc: 617
NRF.zip
Kích thước: 971.6 KB
Đọc: 529
Mach_Nguyen_Ly.zip
lacquansong, dobaohuy, fishking and 1 other person like this.
Đăng ngày 24 Tháng mười một 2012 #2
Đăng ngày 25 Tháng mười một 2012 #3
Đăng ngày 28 Tháng mười một 2012 #4
quang.dt7bk thích bài này.
Đăng ngày 28 Tháng mười một 2012 #5
Code V1.0.000.... các bạn tham khảo rồi góp ý nhé...!
Các bạn có thể tham khảo rõ code tại đây:
Các file đính kèm:
Rất là nóng đây...trước đây cũng nghiên cứu module này...mà vì ko có thời gian nên tạm cất vô kho....chờ ngày tái
xuất của em nó....khi nào copy paste thử mới đc.... )
Hihi cái này sẽ dùng tương đối nhiều đây!
Tiến hành làm thôi các mem!
He...mới test xong....đã chạy rùi....thank lần nữa nha bà con cô bác.....
fishking
Member
Số bài v iết: 53
Đã được thích: 23
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
tung.lvantung.lvan
Nhóm MCU
Số bài v iết: 219
Đã được thích: 145
Điểm thành tích: 43
Giới tính: Nam
Tiền: $20,186
fishking
Member
Số bài v iết: 53
Đã được thích: 23
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
4/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
cuongbkhcm thích bài này.
Đăng ngày 3 Tháng mười hai 2012 #6
Đăng ngày 3 Tháng mười hai 2012 #7
Đăng ngày 3 Tháng mười hai 2012 #8
fishking said: ↑
He...mới test xong....đã chạy rùi....thank lần nữa nha bà con cô bác.....
Thử test xem khi có vật cản được xa không bạn, mình làm vẫn thấy ngắn...
Mấy ngày nay bận làm mạch đồ án quá, giờ mới test kỹ hơn, mạch chạy tốt, mình để 1 cái ở trên lầu, một cái ở dưới
lầu, chạy vẫn tốt.
Mình nghĩ nguyên nhân mạch của bạn phát ngắn là do bạn dùng thạch anh nội của VDK, bạn nên set cho nó dùng
thạch anh ngoại thì tốt hơn (thạch anh nội chậm, ko chính xác....).
Thân!
Ah...thậm chí gắn 2 con thạch anh khác nhau nó cũng chạy nữa....
OK, để xem thạch anh ngoại xem sao...Thế bạn test với nguồn nuôi VĐK là 3.3V hay 5V?
quang.dt7bkquang.dt7bk
Nhóm MCU
Số bài v iết: 325
Đã được thích: 308
Điểm thành tích: 63
Giới tính: Nam
Tiền: $132,870
fishking
Member
Số bài v iết: 53
Đã được thích: 23
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
fishking
Member
Số bài v iết: 53
Đã được thích: 23
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
quang.dt7bkquang.dt7bk
Nhóm MCU
Số bài v iết: 325
Đã được thích: 308
Điểm thành tích: 63
Giới tính: Nam
Tiền: $132,870
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
5/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Đăng ngày 3 Tháng mười hai 2012 #9
Đăng ngày 3 Tháng mười hai 2012 #10
Đăng ngày 3 Tháng mười hai 2012 #11
Đăng ngày 3 Tháng mười hai 2012 #12
Mình test với nguồn 3.3v....ở cả IC và Module....
Và thêm nữa là ở những chân là ngõ vào của bất kỳ con VĐK nào cũng phải gắn 1 con trở treo lên nguồn để chống
nhiễu (vì khi bạn ko nhấn nút thì chân ngõ vào đó ở trạng thái ko xác định: có khi 1, cũng có khi 0) khi để tay vào gần
nó sẽ bị nhiễu...Kinh nghiệm mà nhiều thầy từng hướng dẫn SV khi làm mạch.
Cái này mình biết rồi, nhưng vần đề là TEst với điện áp 5 V
Vẫn chạy bình thường mà.....
fishking
Member
Số bài v iết: 53
Đã được thích: 23
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
fishking
Member
Số bài v iết: 53
Đã được thích: 23
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
quang.dt7bkquang.dt7bk
Nhóm MCU
Số bài v iết: 325
Đã được thích: 308
Điểm thành tích: 63
Giới tính: Nam
Tiền: $132,870
fishking
Member
Số bài v iết: 53
Đã được thích: 23
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
6/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Đăng ngày 3 Tháng mười hai 2012 #13
Đăng ngày 17 Tháng mười hai 2012 #14
quang.dt7bk thích bài này.
Đăng ngày 9 Tháng một 2013 #15
Đăng ngày 9 Tháng một 2013 #16
Bạn test thử chưa
Em cũng đang làm về đề tài này! Thanks bạn nha
Chào mọi người ...! Mình đang làm về Atemega48pa .Mình chỉnh lấy code mẫu ở trên và chỉnh sửa 1 chút về thư viện là
atmega48pa.h và biên dịch thì báo không đủ bộ nhớ. Khi biên dịch thì báo lỗi sau.
Anh
duchoadt said: ↑
Chào mọi người ...! Mình đang làm về Atemega48pa .Mình chỉnh lấy code mẫu ở trên và chỉnh sửa 1 chút về thư viện là
atmega48pa.h và biên dịch thì báo không đủ bộ nhớ. Khi biên dịch thì báo lỗi sau. View attachment 253
Bạn kiểm tra lại phiên bản Codevision xem. Trong code dùng phiên bản 2.05.0 Đăng ký hoặc đăng nhập để thấy Link -
Ủng hộ bài viết bằng nút " Thích"
Điểm thành tích: 8
Giới tính: Nam
Nơi ở: ĐH Sư Phạm Kỹ
Thuật TP.HC M
Tiền: $537
quang.dt7bkquang.dt7bk
Nhóm MCU
Số bài v iết: 325
Đã được thích: 308
Điểm thành tích: 63
Giới tính: Nam
Tiền: $132,870
dobaohuy
New Member
Số bài v iết: 3
Đã được thích: 1
Điểm thành tích: 3
Giới tính: Nam
Tiền: $0
duchoadt
New Member
Số bài v iết: 4
Đã được thích: 0
Điểm thành tích: 1
Giới tính: Nam
Tiền: $2
tung.lvantung.lvan
Nhóm MCU
Số bài v iết: 219
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
7/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Đăng ngày 9 Tháng một 2013 #17
Đăng ngày 27 Tháng một 2013 #17
Đăng ngày 19 Tháng hai 2013 #17
Đăng ngày 20 Tháng hai 2013 #17
Mình sử dụng cùng phiên bản 2.o5.0 .Mọi nguời ai sử dụng chíp Atemega48pa rùi chỉ mình với....! Mình mô phỏng trên
Proteus rùi nhưng chưa thấy IC hoạt động. Không biết mình phải cấu hình hay chỉnh sửa lại như thế nào...
This message is awaiting moderator approval, and is invisible to normal visitors.
Chào mọi người . Mình muốn sử dụng nRF24l01 để tạo 1 module phát và 3 module thu.
Cho mình hỏi những người đã có kinh nghiệm làm về nRF24l01. ic này có chức năng như vậy không .? Nếu có thì phải
làm thế nào.
Vì minh đọc datasheet thấy nó co thể nhận được tín hiệu từ 6 module phát. Ngược lại là 1 phát và 6 thu có được không
? Thank mọi người.
This message is awaiting moderator approval, and is invisible to normal visitors.
Chào mọi người. Mình thấy rất nhiều bạn đang quan tâm đêns lĩnh vực này. Mình đang làm đồ án về NRF. Yêu cầu của
đồ án mình rẩt nhiều ý. Minh đang mắc ở phần là : 1 thiết bị phát và 3 thiết bị thu. (1 module phát và 3 module thu) 1
data gửi đi từ module phát và 3 module thu cùng nhận được. Mong mọi người giúp đỡ. Mình suy nghĩ mãi không ra.
This message is awaiting moderator approval, and is invisible to normal visitors.
quang.dt7bk said: ↑
Hi các bạn...^^
Với sự "nóng lên" của module NRF24L01, mình cũng xin góp vui với mọi người mạch giao tiếp NRF24L01 với
AVR, cụ thể ở đây mình sử dụng Atmega8L...
Bài toán của mình là truyền 1 mã BCD từ VĐK master đến VĐK slave thông qua module NRF24L01:
- Mạch phát: sử dụng 5 nút bấm, 4 nút BT1 --> BT4 dùng để thiết lập mã BCD, BT5 để cho phép truyền mã đi.
Đã được thích: 145
Điểm thành tích: 43
Giới tính: Nam
Tiền: $20,186
duchoadt
New Member
Số bài v iết: 4
Đã được thích: 0
Điểm thành tích: 1
Giới tính: Nam
Tiền: $2
duchoadt
New Member
Số bài v iết: 4
Đã được thích: 0
Điểm thành tích: 1
Giới tính: Nam
Tiền: $2
mailoan
New Member
Số bài v iết: 2
Đã được thích: 0
Điểm thành tích: 0
Giới tính: Nữ
Tiền: $11
omega5161
New Member
Số bài v iết: 0
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
8/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Các thiết lập được hiển thị trên LCD1602.
- Mạch thu: tương tự mạch phát, mã nhận được hiển thị lên LCD. khi nhận được tín hiệu, mạch phát tự động gửi
1 lệnh báo quá trình truyền đã OK lại cho VĐK master...(vì NRF24L01 có thể vừa nhận, vừa truyền dữ liệu).
- WARNING: mình sử dụng Atmega8L, nếu cấp nguồn nuôi là 5V thì trong quá trình truyền dữ liệu sẽ xảy ra hiện
tượng 2 mạch thu phát bị "đơ", nhưng nếu dùng nguồn 3.3V thì mọi chuyện lại rất mượt...???
Anh em vào tham khảo, ai có lời giải đáp thì chia sẻ với mọi người...@@
- Sơ đồ nguyên lý của mạch thu-phát:
- Code:
Mạch Phát:
HTML:
void main(void){unsigned char RxBuf[32];unsigned char Lcd_Buff[16]; // Bo dem cho LCD1602unsigned char MaTruyen;unsigned char b0, b1, b2, b3;bit a,b,c,d; // Cac bit trong ma BCD: abcd // PORTB ===============================================PORTB=0xFF;DDRB=0xFF; // PORTC ===============================================PORTC=0xFF;DDRC=0xFF; // PORTD ===============================================PORTD=0xFF;DDRD=0xC0; a=b=c=d=0; // Khoi tao LCD1602 ====================================lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_puts("NRF24L01 2.4GHz");lcd_gotoxy(0,1);lcd_puts(" MODULE PHAT");delay_ms(2000);lcd_clear(); // Khoi tao NRF24L01 ===================================init_NRF24L01();//SetTX_Mode();SetRX_Mode();while (1) { if(nRF24L01_RxPacket(RxBuf)==1) // Neu nhan duoc du lieu { LED=0; lcd_gotoxy(4,1); lcd_puts(RxBuf); // Nhan ket qua bao ve tu ben thu LED=1; SetRX_Mode(); }/*SU DUNG 4 NUT BAM KEY1--KEY4 DE LAP MA BCD KEY1 set bit3 (a) KEY1 set bit2 (b) KEY1 set bit1 (c)
Mạch Thu:
HTML:
Đã được thích: 0
Điểm thành tích: 0
Giới tính: Nam
Tiền: $0
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
9/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Đăng ngày 4 Tháng ba 2013 #18
Đăng ngày 12 Tháng ba 2013 #18
void main(void){unsigned char RxBuf[32]; // PORTB ===============================================PORTB=0xFF;DDRB=0xFF; // PORTC ===============================================PORTC=0xFF;DDRC=0xFF; // PORTD ===============================================PORTD=0xFF;DDRD=0xC0; // Khoi tao LCD1602 ====================================lcd_init(16);lcd_clear();lcd_gotoxy(0,0);lcd_puts("NRF24L01 2.4GHz");delay_ms(2000);lcd_clear();lcd_gotoxy(0,0);lcd_puts(" MODULE THU"); // Khoi tao NRF24L01 ===================================init_NRF24L01();//SetTX_Mode();SetRX_Mode();while (1) { if(nRF24L01_RxPacket(RxBuf)==1) // Neu nhan duoc du lieu { LED=0; SetTX_Mode(); // Enable phat delay_ms(10); sprintf(TxBuf,"DATA OK!"); nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data SPI_RW_Reg(WRITE_REG+STATUS,0XFF); // Clear Bit Send //lcd_clear(); lcd_gotoxy(3,1); lcd_puts(RxBuf); delay_ms(1500); sprintf(TxBuf,"Wait...."); nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data LED=1; SetRX_Mode(); } }}
Video demo :
Code V1.0.000.... các bạn tham khảo rồi góp ý nhé...!
Các bạn có thể tham khảo rõ code tại đây:
vấn đề của bạn là do mức điện áp thích hợp, mình thấy datasheet có cái này "If the input signal >3.6V, the VDD of the
nRF24L01 must be between 2.7V and 3.3V (3.0V±10%)"
NRF24L01 hoàn toàn tương thích chuẩn 5V, nhưng nguồn cung cấp như bạn omega có nói là nó phải thuộc dải 2.7 đến
3.3V
NguyenQuyNhatNguyenQuyNhat
Nhóm MCU
Số bài v iết: 241
Đã được thích: 254
Điểm thành tích: 63
Giới tính: Nam
Nơi ở: Sóc Sơn Hà Nội
Tiền: $113,359
toancscdt
22/06/2014 GIAO TIẾP NRF24L01 VỚI AVR...! | Diễn Đàn Vi Điều Khiển
10/10banlinhkien.vn/mcu/threads/giao-tiẾp-nrf24l01-vỚi-avr.146/
Đăng ngày 27 Tháng tư 2013 #19
Đăng ngày 12 Tháng năm 2013 #20
Kích thước: 283.9 KB
Đọc: 21
tu lam.rar
telecodex thích bài này.
Page 1 of 2 2 Next > (Bạn phải Đăng nhập hoặc Đăng ký để trả lời bài viết.)
MinhHaGroup 2.0 Liên hệ Trang chủ Lên đầu trang
Diễn đàn được tài trợ bởi MinhHaGroup
This message is awaiting moderator approval, and is invisible to normal visitors.
cho mình hỏi , nếu mình muốn truyền cả một mạng đi, giả sử a[5] mạng a có 5 bye. a[0] và a[1] là xác định lệnh đặt
chiều động cơ. a[2] , a[3] là giá trị ADC đọc được thì trong chương trình master sẽ gán mạng ấy cho giá trị TxBuf như
thế nào ? và cái giá trị nhận RxBuf nó sẽ nhận và làm sao nhận biết được các giá trị trong mạng thế nào ạ? Mong các
bạn giúp mình!
cảm ơn các bạn nhiều
làm sao có thể truyền dữ liệu 2 chiều đươc hè
có ai giúp mình debug dc không. mình thử mãi trên 2 con atmega16 mà không được
Các file đính kèm:
Chia sẻ trang này
New Member
Số bài v iết: 1
Đã được thích: 0
Điểm thành tích: 1
Giới tính: Nam
Tiền: $151
van truong
New Member
Số bài v iết: 13
Đã được thích: 7
Điểm thành tích: 3
Giới tính: Nam
Tiền: $58
nguyenthao
New Member
Số bài v iết: 3
Đã được thích: 1
Điểm thành tích: 3
Giới tính: Nam
Tiền: $156
1
7 người giới thiệu nội dung này.GiGiớới thii thiệệuu