Nguyên lý cơ bản của loại điều khiển từ xa này là sử dụng ánh sáng hồng ngoạicủa quang phổ điện từ mà mắt thường không thấy được để chuyển tín hiệu đến thiết bịcần điều khiển.. Về phía b
Trang 1MỤC LỤC
Trang 2LỜI NÓI ĐẦU
Điện tử đang trở thành một ngành khoa học đa nhiệm vụ Điện tử đã đáp ứng được những đòi hỏi không ngừng của các ngành, lĩnh vực khác nhau cho đến nhu cầu thiết yếu của con người trong cuộc sống hằng ngày Một trong những ứng dụng quan trọng của ngành công nghệ điện tử là kỹ thuật điều khiển từ xa bằng RF Sử dụng RF được ứng dụng rất nhiều trong công nghiệp và các lĩnh vực khác trong cuộc sống với những thiết bị điều khiển từ xa rất tinh vi và đạt được năng suất, kinh tế thật cao
Xuất phát từ những ứng dụng đó, em đã thiết kế và lắp ráp một mạch và robot mini ứng dụng nhỏ trong thu phát RF: “ Điều khiển robot mini dùng sóng RF ”
Robot được định nghĩa là một loại xe robot có khả năng tự dịch chuyển, tự vận động (có thể lập trình lại được) dưới sự điều khiển nó có khả năng hoàn thành nhiệm
vụ hay công việc được giao Trong thời đại công nghiệp hóa như hiện nay robot đóng một vai trò vô cùng quan trọng, nó hỗ trợ con người và đem lại lợi ích vô cùng lớn
trong công nghiệp cũng như sinh hoạt hang ngày của con người
Nội Dung báo cáo gồm 4 chương:
Chương 1: Tổng quan về truyền sóng RF.
Chương 2: Tổng quan về một số linh kiện sử dụng.
Chương 3: Thiết kế mạch và robot mini.
Chương 4: Ứng dụng của mạch và robot mini trong thực tế.
Trang 3
LỜI CẢM ƠN
Em xin chân thành cảm ơn quý thầy, cô trường Đại Học Công Nghiệp
Hà Nội đã tận tình dạy dỗ trong suốt những năm qua Trong đó phải kể đến quý thầy cô Khoa Công Nghệ Điện Tử đã tạo điều kiện cho em thực hiện đồ án tốt nghiệp này
Em xin chân thành cảm ơn giáo viên hướng dẫn Th.s Nguyễn Thị Thu
Hà đã tận tình giúp đỡ em trong quá trình chọn đề tài và thực hiện đề tài.Với thời gian thực hiện đề tài ngắn, kiến thức còn hạn hẹp, dù em đã cố gắng nhưng vẫn không tránh khỏi những sai sót, em rất mong nhận được sự chỉ dẫn thêm của quý thầy cô
Sinh viên thực hiện:
Phạm Công Quý - 0641050123
Trang 4DANH MỤC HÌNH ẢNH
Trang 5CHƯƠNG 1
TỔNG QUAN VỀ TRUYỀN SÓNG RF
1.1 Giới thiệu điều khiển từ xa
Ít người biết rằng những chiếc điều khiển từ xa đầu tiên trên thế giới được rađời nhằm mục đích phục vụ cho chiến tranh Các loại điều khiển từ xa bằng tần số vôtuyến xuất hiện vào chiến tranh thế giới thứ I nhằm hướng dẫn các tàu hải quân Đứcđâm vào thuyền của quân đồng minh
Đến chiến tranh thế giới II, điều khiển từ xa dùng để kích nổ những quả bom.Sau chiến tranh, công nghệ tuyệt vời của chúng tiếp tục được cải tiến để phục vụđắc lực trong đời sống con người Và đến nay, có thể nói, gần như ai cũng đã từng sửdụng điều khiển từ xa để điều khiển một thiết bị nào đó
Ban đầu, người ta dùng điều khiển từ xa sử dụng công nghệ tần số vô tuyến RF(Radio Frequency) và sau đó bắt đầu ứng dụng công nghệ hồng ngoại IR (InfraredRemote) vào điều khiển từ xa Hiện nay trong đời sống, chúng ta sử dụng cả hailoại điều khiển từ xa này
Trang 6Đây là hai đại lượng vectơ (có phương, chiều, độ lớn), có quan hệ mật thiết với nhautrong quá trình sóng truyền lan trong không gian
- Các nguồn bức xạ sóng điện từ thường có dạng sóng cầu hoặc sóng trụ, khi nghiêncứu ta chuyển về dạng sóng phẳng
- Nghiên cứu với sóng điện từ phẳng, truyền lan trong môi trường điện môi đồng nhất
và đẳng hướng
- Biểu diễn sóng điện từ bằng hệ phương trình Maxoel dạng vi phân
- Khi sóng truyền lan, tại mỗi điểm thành phần từ trường và điện trường có pha nhưnhau
- Hai dạng mặt sóng đặc biệt: Mặt sóng phẳng, mặt sóng cầu
- Quá trình truyền lan sóng điện từ: Tính chất sóng
Sóng điện từ bức xạ ra không gian dưới dạng vô số các mặt sóng liên tiếp
Nguồn bức xạ sóng điện từ chỉ đóng vai trò là nguồn bức xạ sơ cấp
Quá trình sóng truyền lan, các mặt sóng được tạo ra đóng vai trò là nguồn bức xạ thứcấp tạo ra các mặt sóng tiếp sau nó
1.2.4 Phân cực sóng
- KN: Trường phân cực là trường điện từ với các vecto E và H có thể xác định đượchướng tại thời điểm bất kỳ (biến đổi có tính quy luật)
Ngược lại là trường không phân cực (biến đổi ngẫu nhiên trong không gian)
- Mặt phẳng phân cực: Là mặt phẳng chứa vec tơ E và phương truyền lan sóng (vectoZ)
Trang 7• Phân loại
+ Phân cực đường thẳng: Mặt phẳng phân cực cố định khi sóng lan truyền
- Phân cực đứng: Vecto E vuông góc với mặt phẳng nằm ngang
- Phân cực ngang: Vecto E song song với mặt phẳng nằm ngang
+ Phân cực quay: Mặt phẳng phân cực quay xung quanh trục của phương lan truyền
- Phân vực tròn: Khi vecto E quay, biên độ không thay đổi (vẽ lên đường tròn)
- Phân cực elip: Khi vecto E quay, biên độ thay đổi liên tục vẽ lên đường elip
Quay phải: Quay thuận chiều kim đồng hồ
Quay trái: Quay ngược chiều kim đồng hồ
1.2.5 Phân chia sóng điện từ
+ LF, MF: Phát thanh điều biên nội địa, thông tin hàng hải
+ HF: Phát thanh điều biên cự ly xa
+ VHF, UHF: Phát thanh điều tần (66 – 108 MHz), truyền hình, viba số băng hẹp, hệthống thông tin di động mặt đất
+ SHF: Viba số băng rộng, thông tin vệ tinh
+ EHF: Thông tin vũ trụ
1.2.5.1 Sóng đất
Trang 8• Nguyên lý:
+ Bề mặt trái đất là môi trường dẫn khép kín đường sức điện trường
+ Nguồn bức xạ nằm thẳng đứng trên mặt đất, sóng điện từ truyền lan dọc theo mặt đấtđến điểm thu
+ Anten đặt cao trên mặt đất ít nhất vài bước sóng
+ Sóng điện từ đến điểm thu theo 2 cách:
- Sóng trực tiếp: Đi thẳng từ điểm phát đến điểm thu
- Sóng phản xạ: Đến điểm thu sau khi phản xạ trên mặt đất
• Đặc điểm:
+ Chịu ảnh hưởng nhiều của điều kiện môi trường
+ Phù hợp cho băng sóng cực ngắn, là phương thức truyền sóng chính trong thông
tin vô tuyến
1.2.5.3 Sóng tầng điện ly (sóng trời)
• Nguyên lý:
+ Lợi dụng đặc tính phản xạ sóng của tầng điện ly với các băng sóng ngắn
+ Sóng điện từ phản xạ sẽ quay trở về trái đất
• Đặc điểm:
+ Không ổn định do sự thay đổi điều kiện phản xạ của tầng điện ly
Trang 91.2.5.3 Sóng tự do (song thẳng)
• Nguyên lý:
+ Môi trường truyền sóng lý tưởng (đồng tính, đẳng hướng, không hấp thụ)
+ Sóng truyền lan trực tiếp đến điểm thu theo một đường thẳng
• Đặc điểm:
+ Môi trường chỉ tồn tại trong vũ trụ, sử dụng cho thông tin vũ trụ
+ Bầu khí quyển trái đất trong một số điều kiện nhất định được coi là không gian tự do
1.3 Điều khiển từ xa bằng sóng hồng ngoại (IR)
Ngày nay, đây là loại điều khiển từ xa có vai trò “thống trị” trong hầu hết các
thiết bị gia đình Một chiếc điều khiển IR sẽ gồm các bộ phận cơ bản nằm trong mộthộp nối cáp kỹ thuật số như sau: Các nút bấm; một bảng mạch tích hợp; các núm tiếpđiểm; đi - ốt phát quang (đèn LED)
Nguyên lý cơ bản của loại điều khiển từ xa này là sử dụng ánh sáng hồng ngoạicủa quang phổ điện từ mà mắt thường không thấy được để chuyển tín hiệu đến thiết bịcần điều khiển Nó đóng vai trò như một bộ phát tín hiệu, sẽ phát ra các xung ánhsáng hồng ngoại mang một mã số nhị phân cụ thể Khi ta ấn một nút phía bên ngoàithì sẽ vận hành một chuỗi các hoạt động khiến các thiết bị cần điều khiển sẽ thực hiệnlệnh của nút bấm đó
Quy trình này cụ thể như sau: Đầu tiên, khi ta nhấn vào một nút như “Tăng âm lượng” chẳng hạn, nó sẽ chạm vào núm tiếp điểm bên dưới và nối kín một mạch tăng
âm lượng trên bản mạch Các mạch tích hợp có thể tự dò tìm ra từng mạch cụ thể chotừng nút bấm Tiếp đó các mạch này sẽ gửi tín hiệu đến đèn LED nằm phía trước Từđây, đèn LED sẽ phát ra một chuỗi các xung ánh sáng chứa các mã nhị phân (gồm
những dãy số 1 và 0) tương ứng với lệnh “tăng âm lượng” Mã lệnh này gồm nhiều mã
con như khởi động, tăng âm lượng, mã địa chỉ thiết bị và ngừng lại khi ta thả nút ra
Trang 10Về phía bộ phận cần điều khiển, nó sẽ gồm một bộ thu tín hiệu hồng ngoại nằm
ở mặt trước để có thể dễ dàng nhận được tín hiệu từ điều khiển từ xa Sau khi đã xácminh mã địa chỉ này xuất phát đúng từ chiếc điều khiển của mình, chúng sẽ giải mã cácxung ánh sáng thành các dữ liệu nhị phân để bộ vi xử lý của thiết bị có thể hiểu được
và thực hiện các lệnh tương ứng
Hiện nay, ta sử dụng thiết bị điều khiển IR cho hầu hết các vật dụng trong nhànhư tivi, máy stereo, điều hòa nhiệt độ… Chúng rất bền, tuy nhiên lại có hạn chế liênquan đến bản chất chỉ truyền theo đường thẳng của ánh sáng Do đó, loại điều khiển IR
có tầm hoạt động chỉ có khoảng 10 mét và cũng không thể truyền qua các bức tườnghoặc vòng qua các góc Chúng chỉ hoạt động tốt khi ta trỏ thẳng hay gần vị trí bộ thucủa vật cần điều khiển
Ngoài ra, nguồn ánh sáng hồng ngoại có ở khắp nơi như ánh sáng mặt trời, bóngđèn huỳnh quang, từ cơ thể con người… nên có thể làm cho điều khiển IR bị nhiễusóng Để tránh hiện tượng này, người ta phải cài đặt cho bộ lọc của các bộ phận thu chỉthu nhận những bước sóng đặc biệt hoặc tần số riêng biệt của ánh sáng hồng ngoại phùhợp với nó và chặn ánh sáng ở bước sóng khác để hạn chế sự nhiễu sóng một cách tốiđa
1.4 Điều khiển từ xa bằng tần số vô tuyến (RF)
Là loại điều khiển từ xa xuất hiện đầu tiên và đến nay vẫn giữ một vai tròquan trọng và phổ biến trong đời sống Nếu điều khiển IR chỉ dùng trong nhà thìđiều khiển RF lại dùng cho nhiều vật dụng bên ngoài như các thiết bị mở cửa gara xe,
hệ thống báo hiệu cho xem các loại đồ chơi điện tử từ xa thậm chí kiểm soát vệ tinh
và các hệ thống máy tính xách tay và điện thoại thông minh…
Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như điều khiểnbằng tia hồng ngoại nhưng thay vì gửi đi các tín hiệu ánh sáng, nó lại truyền sóng vôtuyến tương ứng với các lệnh nhị phân Bộ phận thu sóng vô tuyến trên thiết bị đượcđiều khiển nhận tín hiệu và giải mã nó So với loại điều khiển IR, lợi thế lớn nhất của
Trang 11nó chính là phạm vi truyền tải rộng, có thể sử dụng cách thiết bị cần điều khiển đếnhơn 30 mét đồnng thời có thể điều khiển tín hiệu xuyên qua được tường, kính……….Tuy nhiên, nó cũng có hạn chế đó là tín hiệu vô tuyến cũng có mặt khắp nơitrong không gian do hàng trăm loại máy móc thiết bị dùng các tín hiệu vô tuyến tạicác tần số khác nhau Do đó, người ta tránh nhiễu sóng bằng cách truyền ở các tần sốđặc biệt và nhúng mã kỹ thuật số địa chỉ của thiết bị nhận trong các tín hiệu vô tuyến.Điều này giúp bộ thu vô tuyến trên thiết bị hồi đáp tín hiệu tương ứng một cách chínhxác.
Hiện nay, cả hai loại điều khiển này đều được ứng dụng hết sức rộng rãi trong đời sống Người ta còn tích hợp cả hai lại để tạo thành những loại điều khiển từ xa vạn năng có thể điều khiển nhiều loại thiết bị cùng lúc hay chỉ cần bấm một nút sẽ tự động thực hiện một chuỗi lệnh tuần tự Ngoài ra, con người còn cải tiến các bộ mở rộng
nhằm chuyển đổi tín hiệu vô tuyến thành các xung hồng ngoại nhằm mở rộng phạm vi điều khiển hoạt động của các thiết bị trong gia đình…
1.4.1 Hoạt động
Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như điều
khiển bằng tia hồng ngoại nhưng thay vì gửi đi các tín hiệu ánh sáng, nó lại
truyền sóng vô tuyến tương ứng với các lệnh nhị phân
Bộ phận thu sóng vô tuyến trên thiết bị được Điều khiển nhận tín hiệu và giải mã nó
Trang 12Tránh nhiễu sóng bằng cách truyền ở các tần số đặc biệt và nhúng mã kỹ thuật
số địa chỉ của thiết bị nhận trong các tín hiệu vô truyến trên thiết bị hồi đáp tín hiệutương ứng một cách chính xác
1.5 Giới thiệu về modul 24L01
-Sơ đồ mô tả phần cứng:
Hình 1.1 Sơ đồ nguyên lý khối NRF24L01 trên kit AVR-V2
Trong KIT AVR V2, để sử dụng NRF24L01, cần cắm module NRF24L01 theođúng chiều chân giữa module và kit AVR V2 Angten của NRF24L01 hướng ra ngoài
Trang 134 CSN Chip Select, mức 0 sẽ cho phép giao tiếp SPI
6 MO Chân MOSI, nhận dữ liệu từ vi điều khiển
7 MI Chân MOSI, nhận dữ liệu từ vi điều khiển
8 IRQ Chân ngắt nhận, khi có dữ liệu mới sẽ có 1 sườn từ 0->1
Trang 14- Có bộ lọc nhiễu tại đầu thu.
- Kiểu điều chế dữ liệu : GFSK
- Giao tiếp : SPI tốc độ tối đa 10Mbps
- Data : 1-32 bytes trên 1 khung truyền nhận
- Tự động xử lý gói tin, đóng khung dữ liệu truyền
- 125 kênh độc lập hoạt động ở tần số khác nhau, mỗi kênh truyền có 6 luồng truyền nhận
dữ liệu
- Tiêu thụ dòng điện thấp, nguồn nuôi : 1.9 – 3.6V
- Giao tiếp 4 pin SPI, tốc độ tối đa 8Mbps
1.5.1.2 Chuẩn SPI của NRF24L01
- Chức năng các chân như sau :
SCK : Xung clock đồng bộ, chốt dữ liệu bằng sườn âm
CSN : Chip select Mức 0 sẽ cho phép giao tiếp
MOSI : Xuất tín hiệu từ NRF24L01 đến vi điều khiển
MISO : Nhận tín hiệu từ vi điều khiển gửi đến
Hình 1.3 Khung truyền/nhận dữ liệu chuẩn SPI
1.5.1.3 Khung truyền dữ liệu
Trang 15- Định dạng gói tin
1byte đồng
bộ 3 - 5 byte Địa chỉ
byte điều khiển gói 1-32 byte
data
1-2 byte CRC
Trong đó :
- Byte đồng bộ : 01010101 hoặc 10101010
Nếu bit đầu tiên của byte Địa chỉ bằng 1, byte đồng bộ = 10101010, ngược lạibyte đồng bộ = 01010101
Byte này được tính toán và tự động chèn vào gói tin
- Địa chỉ : chứa 3 đến 5 byte địa chỉ gửi, do người dùng tự điều chỉnh Giá trị mặc
định = 0x00FFFFFF điều chỉnh tại thanh ghi TX_ADDR.
- Byte điều khiển gói : bao gồm 9 bit, chức năng như sau.
[ 6 bit ] độ dài Data [2 bit ] PID identity [1 bit ] cờ
NO_ACK
- Độ dài Data : giá trị từ 1-32, cho biết độ dài dữ liệu cần truyền, giá trị này chứa
trong thanh ghi RX_PW_P0 hoặc RX_PW_P1.
- PID identity: kiểm tra sai hoặc lỗi dữ liệu truyền ,tự động xử lý Khi dữ liệu gửi
bị sai hoặc thiếu thì sau 1 khoảng thời gian NRF24L01 sẽ gửi lại dữ liệu trướcđó
- NO_ACK : mức 1 sẽ không sử dụng ACK Điều chỉnh tại bit 0 của thanh ghi
FEATURE.
- Data: chứa dữ liệu cần gửi
- CRC :chứa 1 hoặc 2 byte CRC
Trang 161.5.1.4 Các thanh ghi và lệnh thực thi của NRF24L01
Bảng 2 : các thanh ghi của NRF24L01
Địa
chỉ
thanh
ghi
Tên thanh ghi Chức năng
0x00 CONFIG Cấu hình chế độ hoạt động của NRF24L01
0x01 EN_AA Cho phép gửi kèm ACK cho từng kênh truyền
0x02 EN_RXADDR Cho phép gửi kèm Địa chỉ Slave cho từng kênh truyền
0x03 SETUP_AW
Chọn độ dài Byte địa chỉ :
00 : không được phép01: 3 byte
10: 4 byte
11: 5 byte
0x04 SETUP_RETR Chọn thời gian trễ giữa 2 lần truyền
0x05 RF_CH Chọn một trong 125 kênh truyền dữ liệu
0x07 STATUS Báo trạng thái của NRF24L01
0x08 OBSEVE_RX Đếm số gói tin bị lỗi và số lần gửi phản hồi
0x09 RPD Đo cường độ năng lượng thu được
0x0A RX_ADDR_P0 Địa chỉ RX của P0,độ dài 5 byte Bit [39:0]
0x0B RX_ADDR_P1 Địa chỉ RX của P1 đến 5,độ dài 5 byte Bit [39:0]
0x0C RX_ADDR_P2 Địa chỉ RX của P2, bit [39:8] của RX_ADDR_P1
0x0D RX_ADDR_P3 Địa chỉ RX của P3, bit [39:8] của RX_ADDR_P1
0x0E RX_ADDR_P4 Địa chỉ RX của P4, bit [39:8] của RX_ADDR_P1
0x0F RX_ADDR_P5 Địa chỉ RX của P5, bit [39:8]của RX_ADDR_P1
Trang 1710 TX_ADDR Địa chỉ TX cần truyền, độ dài 5 byte
0x11 RX_PW_P0
Độ dài dữ liệu nhận được của Kênh 0, giá trị :
0: không được sử dụng 1: độ dài 1 byte
……
32: độ dài 32 byte
0x12 RX_PW_P1 Độ dài dữ liệu nhận được của Kênh 1
0x13 RX_PW_P2 Độ dài dữ liệu nhận được của Kênh 2
0x14 RX_PW_P3 Độ dài dữ liệu nhận được của Kênh 3
0x15 RX_PW_P4 Độ dài dữ liệu nhận được của Kênh 4
0x16 RX_PW_P5 Độ dài dữ liệu nhận được của Kênh 5
0x17 FIFO_STATUS Trạng thái của FIFO
N/A ACK_PLD Độ dài 32 byte, gửi các lệnh đến NRF24L01
N/A TX_PLD Độ dài 32 byte, dữ liệu cần truyền qua NRF
24L01N/A RX_PLD Độ dài 32 byte, dữ liệu đọc từ NRF24L01
0x1c DYNPD Cho phép thay đổi độ dài gói tin
Bảng 3 : các lệnh thực thi NRF24L01
1.5.2 Phân tích:
-Modul nRF24L01 hoạt động ở tần số sóng ngắn 2.4G nên Modul này khả năng
truyền dữ liệu tốc độ cao và truyền nhận dữ liệu trong điều kiện môi trường có vật cản -Modul nRF24L01 có 126 kênh truyền Điều này giúp ta có thể truyền nhận dữ liệu
Trang 18trên nhiều kênh khác nhau.
-Modul khả năng thay đổi công suất phát bằng chương trình, điều này giúp nó có thể hoạt động trong chế độ tiết kiệm năng lượng
-Chú ý: Điện áp cung cấp cho là 1.93.6V Điện áp thường cung cấp là 3.3V
Nhưng các chân IO tương thích với chuẩn 5V Điều này giúp nó giao tiếp rộng dãi với các dòng vi điều khiển
Hình 1.4 Sơ đồ kết nối vi điều khiển
Khi kết nối tới vi điều khiển bạn nhớ cấu hình chân đó là output hay input (AVR, PIC)
a Địa chỉ truyền nhận:
Khung truyền của nRF24L01 từ 3-5 bytes dùng làm địa chỉ Bạn có thể cấu hình,
nhưng địa chỉ truyền như thế nào thì địa chỉ nhận của chip tương ứng phải giống như thế để có thể thu được tín hiệu Trong chương trình mình dùng 5 byte cho địa chỉ
truyền nhận
#define TX_ADR_WIDTH 5 // 5 uints TX address width
#define RX_ADR_WIDTH 5 // 5 uints RX address width
unsigned char const TX_ADDRESS[TX_ADR_WIDTH]=
Trang 19unsigned char const RX_ADDRESS[RX_ADR_WIDTH]=
{0x34,0x43,0x10,0x10,0x01};
Hàm void init_NRF24L01(void)cấu hình truyền nhận :
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS,
RX_ADR_WIDTH);
b Khung dữ liệu
Khung dữ liệu từ 0-32 byte, hiện tại mình dùng 32 byte Nếu bạn dùng số lượng byte khác thì có thể cấu hình trong biến
#define TX_PLOAD_WIDTH 32 // 32 uints TX payload
#define RX_PLOAD_WIDTH 32 // 32 uints TX payload
Hàm nRF24L01_TxPacket(unsigned char * tx_buf) gửi dữ liệu trong tx_buf
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // gửi dữ liệu 32 byte
Trong hàmvoid init_NRF24L01(void)cấu hình số byte nhận.
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); // Do rong data nhận 32 byte
c Kênh truyền nhận và địa chỉ nhận.
Tay phát nRF24L01 có 126 kênh truyền Ban có thể lựa chọn kênh truyền nào bạn muốn bằng hàm
SPI_RW_Reg(WRITE_REG + RF_CH, 0); // kênh 0, tần số RF = 2400 + RF_CH*(1or 2 M)
- Trong 1 kênh truyền, nRF24L01 có thể nhận được 6 luồng dữ liệu Do đó bạn phải lựa chọn 1 trong 6 luồng đó
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 0x01 Luồng P0
Trang 20SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 0x01 Enable Luồng P0
Để gửi dữ liệu đi bạn làm theo các bước sau
- Cho dữ liệu vào buffer, biến TxBuf[32]
- Chọn nRF24L01 ở chế độ phát, gọi hàm void SetTX_Mode(void);
- Gọi hàm void nRF24L01_TxPacket(unsigned char * tx_buf); để truyền dữ liệu
trong TxBuf[32] đi
g Cách nhận dữ liệu
- Chọn nRF24L01 ở chế độ thu, gọi hàm void SetRX_Mode(void);
- Độ dữ liệu trong bộ đệm sau khi gọi hàm unsigned char
nRF24L01_RxPacket(unsigned char* rx_buf);
Trang 21CHƯƠNG 2
TỔNG QUAN VỀ MỘT SỐ LINH KIỆN SỬ DỤNG
2.1 Giới thiệu linh kiện sử dụng
Vi điều khiển AVR do hãng Atmel (Hoa Kì ) sản xuất được gới thiệu lần đầunăm1996 AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR ( như AT tiny 13,ATtiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR (nhưAT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại trung bình và mạnh hơn làdòng Mega ( như ATmega32,ATmega128,…) với bộ nhớ có kích thước vài Kbyte đến vàitrăm Kb cùng với các bộ ngoại vi đa dạng được tích hợp trên chip, cũng có dòng tích hợp
cả bộ LCD trên chip ( dòng LCD AVR ) Tốc độ của dòng Mega cũng cao hơn so với cácdòng khác Sự khác nhau cơ bản giữa các dòng chình là cấu trúc ngoại vi , còn nhân thì vẫnnhư nhau
ATmega16 là một lọai vi điều khiển có nhìều tính năng đặc biệt thích hợp cho việc giải quyết những bài toán điều khiển trên nền vi xử lý.
Các lọai vi điều khiển AVR rất phổ biến trên thị trừơng Việt Nam nên không khó khăn trong việc thay thế và sửa chữa hệ thống lúc cần thiết hay hỏng hóc Hơn nữa giá thành của dòng Vi Điều Khiển này cũng khá phải chăng Các phần mềm lập trình và mã nguồn mở có thể tìm kiếm khá dễ dàng trên mạng.Các thiết kế demo nhiều nên có nhiều gợi ý tốt cho người thiết kế hệ thống.
2.1.1 Tổng quan về vi điều khiển AVR Atmega 16
AVR ATmega16 là vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến trúcRISC ( Reduced Instruction Set Computer ) Với kiểu kiến trúc này cho phép các lệnhthực thi trong một chu kỳ xung nhịp, vì thế tốc độ xử lý dữ liệu có thể đạt 16 triệu lệnhtrên giây ở tần số 16MHZ AVR ATmega16 cho phép người thiết kế có thể tối ưu hóamức độ tiêu thụ năng lượng mà vẫn bảo đảm tốc độ xử lý
Trang 22Dưới đây là sơ đồ khối của ATmega16
Hình 2.1 Sơ đồ cấu trúc ATmega16
ATmega16 có các đặc điểm sau: 16KB bộ nhớ Flash với khả năng đọc trong khighi, 512 byte bộ nhớ EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung, 32đường vào ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao tiếp
Trang 23ATmega 16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như:trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm,
2.1.2 Cấu trúc nhân AVR
CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương trình
Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điều khiểncác thiết bị ngoại vi và quản lý ngắt
2.1.3 Cấu trúc tổng quát
Hình 2.2 Sơ đồ cấu trúc CPU của ATmega16
AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữliệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trìnhđược lưu trong bộ nhớ Flash
2.1.3.1 ALU
Trang 24ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán được thực hiện trong một chu kỳ xung clock Hoạt động của ALU được chia làm 3 loại: đại số, logic
và theo bit
2.1.3.2 Thanh ghi trạng thái
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính sốhọc và logic
Hình 2.3 Thanh ghi trạng thái SREG
C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập)
Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)
N: Negative Flag (Nếu kết quả của phép toán là âm)
V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2)
V, For signed tests (S=N XOR V)S: N
H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau)
T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung giantrong các lệnh BLD,BST)
I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt Nếu bitnày ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)
2.1.3.3 Các thanh ghi chức năng chung
Hình 2.4 Thanh ghi chức năng chung
2.1.3.4 Con trỏ ngăn xếp (SP)
Trang 25Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặcbiệt 8 bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM
là $5E) Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp
Hình 2.5 Thanh ghi con trỏ ngăn xếp
Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vàongăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí Và con trỏ ngăn xếp sẽ giảm 1 khithực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 vàkhi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngănxếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trìnhcon được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp ít nhất cũng phảilơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi
2.1.3.5 Quản lý ngắt
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn xàng
cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một byte nó sẽ báo
cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được một byte thì cờ TX đượcthiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị tríđang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ ngắt
và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return frominterrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trướckhi có ngăt nó đang thực hiện Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúcthì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu tiên.Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp.Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ Còn nó mà có mức
ưu tiên thấp hơn thì nó sẽ bị bỏ qua
Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên Để truy nhập vàoSRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo kiểungăn xếp thì ta dùng con trỏ SP Con trỏ này là một thanh ghi 16 bit và được truy nhậpnhư hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) vàSPH:0x3E/0x5E
Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngănxếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi thực