Báo cáo project 2
Báo cáo project Mục Lục: Mục Lục: A.Lời Nói Đầu B.Nội Dung Phần 1: Mô Tả Đề Tài Các Phần Mềm Và Thiết Bị Mô Phỏng Sử Dụng Yêu Cầu Của Đề Tài Phần 2: Tìm Hiểu Về Linh Kiện Phần Cứng Sử Dụng Vi Điều Khiển MSP430G2553 LCD 16x2 .11 Module thu phát nRF24L01 2.4Ghz 14 Phần 3: Code Cho MPS430G2553 Và Thiết Kế Mạch 17 Code Cho MPS430G2553 17 Thiết Kế Mạch 20 Mạch Thực Tế Hoàn Thành 21 C.Kết Luận .22 D.Phụ Lục 23 Nhóm Page Báo cáo project Danh sách Hình Vẽ Hình 1: Kit launchpad msp430 Hình 2: MSP430G2553 Hình 3: Sơ đồ chân MSP430G2553 Hình 4: Mạch RESET cho chip Hình : Hình dáng loại LCD thông dụng .11 Hình : Sơ đồ chân LCD 12 Hình 7: Module thu phát nRF24L01 14 Hình 8: Sơ đồ khối nRF24L01 15 Hình 9: Mạch Layout nRF24L01 .16 Hình 10: Mạch Nguyên Lý .20 Hình 11: Lớp Top 21 Hình 12: Lớp Bottom 21 Hình 13:Mạch sau hoàn thành 21 Nhóm Page Báo cáo project A.Lời Nói Đầu Để giúp sinh viên học tập, trau dồi thêm kiến thức thiết kế phần cứng tiếp cận sâu với vi điều khiển Viện Điện Tử Viễn Thông trường ĐH.Bách Khoa Hà Nội tổ chức môn học Project Trong môn học Project nhóm em phân công hướng dẫn thầy ThS.Nguyễn Tiến Dũng Nhờ có bảo hướng dẫn cụ thể thầy lên nhóm em hoàn thành Project Trong trình thực Project hướng dẫn bảo tận tình thầy ThS.Nguyễn Tiến Dũng anh hướng dẫn Nguyễn Quang Tuấn Anh, chúng em học tập trau dồi cho thân nhiều kiến thức lạ, bổ ích, biết cách tiếp cận đề đưa ý tưởng giải đề Qua rèn luyện cho phẩm chất kỹ sư tương lai Mặc dù nhận giúp đỡ, bảo, tận tình từ phía thầy bước đầu làm quen với loại vi điều khiển lên chúng em gặp phải vài khó khăn tiếp cận nhanh chóng tìm hiểu làm chủ Cuối chúng em xin gửi lời cảm ơn tới thầy ThS.Nguyễn Tiến Dũng anh Nguyễn Quang Tuấn Anh hướng dẫn chúng em hoàn thành Project Chúng em xin chân thành cảm ơn! Nhóm Page Báo cáo project B.Nội Dung Phần 1: Mô Tả Đề Tài Các Phần Mềm Và Thiết Bị Mô Phỏng Sử Dụng Phần mềm altium designer 10: vẽ mạch phần cứng Phần Mềm CCS4.0: dùng đề viết code cho vi điều khiển MSP430, giúp lạp xuống kit launchpad msp430 Kit launchpad msp430: công cụ test mô phần cứng Hình 1: Kit launchpad msp430 Yêu Cầu Của Đề Tài Mạch OBU thu tín hiệu trả phí Mạch phát tín hiệu trả phí đặt cổng thu phí Hiển thị thông tin tùy chọn Không phát trùng lặp tín hiệu tới nhiều OBU Truyền thông tốc độ tới 20km/h Nhóm Page Báo cáo project Phần 2: Tìm Hiểu Về Linh Kiện Phần Cứng Sử Dụng Vi Điều Khiển MSP430G2553 Hình 2: MSP430G2553 Giới thiệu tổng quát : Các dòng vi điều khiển msp430 hãng TI ( Texas Instruments) sản xuất, TI sản xuất cung cấp nhiều linh kiện điện tử module khác Vi điều khiển( Micro controller unit – MCU ) đơn vị xử lý nhỏ, tích hợp toàn nhớ ROM , RAM , port truy xuất , giao tiếp ngoại vi trực tiếp chip nhỏ gọn Được thiết kế dựa cấu trúc VONNEUMAN , đặc điểm cấu trúc có bus CPU nhớ (data chương trình) , mà chúng phải có độ rộng bit tương tự MSP430 có số phiênbản như: MSP430x1xx, MSP430x2xx, MSP430x3xx, MSP430x4xx, MSP430x5xx Dưới đặc điểm tổng quát họ vi điều khiển MSP430: + Cấu trúc sử dụng nguồn thấp giúp kéo dài tuổi thọ Pin -Duy trì 0.1µA dòng nuôi RAM -Chỉ 0.8µA real-time clock Nhóm Page Báo cáo project -250 µA/ MIPS + Bộ tương tự hiệu suất cao cho phép đo xác -12 bit 10 bit ADC-200 kskp, cảm biến nhiệt độ, Vref , -12 bit DAC -Bộ giám sát điện áp nguồn + 16 bit RISC CPU cho phép nhiều ứng dụng, thể phần kích thước Code lập trình -Thanh ghi lớn nên loại trừ trường hợp tắt nghẽn tập tin làm việc -Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện giảm giá thành -Tối ưu hóa cho chương trình ngôn ngữ bậc cao C, C++ -Có chế độ định địa -Khả ngắt theo véc tơ lớn + Trong lập trình cho nhớ Flash cho phép thay đổi Code cách linh hoạt, phạm vi rộng, nhớ Flash lưu lại nhật ký liệu Sơ đồ chân : Chip MSP430 có kích thước nhỏ gọn , với 20 chân kiểu chân DIP Bao gồm port I/O (hay GPIO general purprose input/ output : cổng nhập xuất chung) Hình 3: Sơ đồ chân MSP430G2553 Ta thấy port có chân Port : có chân từ P1.0 đến P1.7 tương ứng với chân từ 2-7 14 , 15 Port : gồm có chân P2.0 – P2.7 ứng với chân – 13 , 18,19 Nhóm Page Báo cáo project Ngoài chức I/O pin port chân đa chức năng, ta thể thấy rõ bảng sau : Trên bảng chức chân , MCU có kiểu chân SMD loại 28 chân có thêm port nữa,nhưng xét kiểu DIP Nhóm Page Báo cáo project 20 chân kiểu TSSOP 20 chân , kiểu lại bạn tìm hiểu trang chủ nhà sản xuất Giải thích sơ lược chân : - Chân số chân cấp nguồn Vcc( ký hiệu chip DVcc ) , nguồn cho chip cấp mức 3,3V , cấp nguốn cao mức chip hoạt động sai hay cháy chip Để có mức nguồn ta phải dùng IC ổn áp riêng có ký hiệu LM1117 hay AD1117 , IC có kiểu chân SMD nhỏ gọn , cách mắc chip giống với IC nguồn LM78xx , nhiên lưu ý thứ tự chân có khác chút.Các bạn xem datasheet IC mà mắc cho phù hợp -Chân 20 chân nối cực âm (0V) , chân đặc biệt -Chân reset : Chính chân số 16 RST , bạn học PIC thấy chân reset có ký hiệu MCLR , bạn để ý thấy dấu gạch ngang có nghĩa chân tích cực mức thấp Mục đích việc reset nhằm cho chương trình chạy lại từ đầu Nhóm Page Báo cáo project Mạch reset cho chip : Hình 4: Mạch RESET cho chip Chú ý: tụ tụ pi xác tụ 102, thay đổi kết nỗi Jtag để nạp code cho chip không -Mạch dao động : Cũng giống dòng vi điều khiển khác Msp430 hỗ trợ người dùng thạch anh ( external crystal ), thạch anh ngoại vi cho phép lên tới 32,768 kHz mà thôi, tín hiệu mắc chân 18 19 Nhưng msp430 lại hỗ trợ thạch anh nội lên đến 16Mhz, tùy vào cách khai báo lập trình Và mặc định chip thạch anh Nhóm Page Báo cáo project nội Như không cần thiết phải sử dụng mạch dao động ngoại cho chip giống dòng khác - Port I/O : Port : có chân từ P1.0 đến P1.7 tương ứng với chân từ 2-7 14 , 15 Port : gồm có chân P2.0 – P2.7 ứng với chân – 13 , 18,19 Trong chế độ nhập (input) port có mạch điều khiển điện trở kéo dương – gọi PULL UP giá trị điện trở lớn khoảng 47K nên gọi WEAK PULL UP RESISTAN Việc điều khiển PULL UP tiến hành thông qua lập trình tác động lên ghi PxREN đề cập chương sau Điều giống việc thiết lập input port B vi điều khiển PIC, port B có điện trở kéo lên , người lập trình phải thao tác qua ghi OPTION_REG Nhóm Page 10 Báo cáo project E Chân cho phép (Enable) Sau tín hiệu đặt lên bus DB0-DB7, lệnh chấp nhận có xung cho phép chân E + Ở chế độ ghi: Dữ liệu bus LCD chuyển vào(chấp nhận) ghi bên phát xung (high-to-low transition) tín hiệu chân E + Ở chế độ đọc: Dữ liệu LCD xuất DB0-DB7 phát cạnh lên (low-to-high transition) chân E LCD giữ bus đến chân E xuống mức thấp 7-14 DB0-DB7 Tám đường bus liệu dùng để trao đổi thông tin với MPU Có chế độ sử dụng đường bus : + Chế độ bit : Dữ liệu truyền đường, với bit MSB bit DB7 + Chế độ bit : Dữ liệu truyền đường từ DB4 tới DB7, bit MSB DB7 15 A Nguồn dương cho đèn 16 K GND cho đèn Nhóm Page 13 Báo cáo project Module thu phát nRF24L01 2.4Ghz Giới thiệu Hình 7: Module thu phát nRF24L01 Thông số kỹ thuật Radio: - Hoạt động giải tần 2.4 Ghz - Có 126 kênh - Truyền nhận liệu - Truyền tốc độ cao 1Mbps Mbps Công suất phát: - Có thể cài đặt công suất nguồn phát: 0,-6,-12,-18 dBm Thu: - Có lọc nhiễu đầu thu - Khuếch đại bị ảnh hưởng nhiễu thấp (LNA) Nhóm Page 14 Báo cáo project Nguồn cấp: - Hoạt động từ 1,9 – 3,6V - Các chân I/O chạy 3,3 lẫn 5V Giao tiếp: - pin SPI - Tốc độ tối đa 8Mbps - 3-32 bytes khung truyền nhận Hình 8: Sơ đồ khối nRF24L01 - Phân Tích Modul nRF24L01 hoạt động tần số sóng ngắn 2.4G nên Modul khả truyền liệu tốc độ cao truyền nhận liệu điều kiện môi trường có vật cản - Modul nRF24L01 có 126 kênh truyền Điều giúp ta truyền nhận liệu nhiều kênh khác - Modul khả thay đổi công suất phát chương trình, điều giúp hoạt động chế độ tiết kiệm lượng Nhóm Page 15 Báo cáo project - Chú ý: Điện áp cung cấp cho 1.9à3.6V Điện áp thường cung cấp 3.3V Nhưng chân IO tương thích với chuẩn 5V Điều giúp giao tiếp rộng dãi với dòng vi điều khiển Hình 9: Mạch Layout nRF24L01 Nhóm Page 16 Báo cáo project Phần 3: Code Cho MPS430G2553 Và Thiết Kế Mạch Code Cho MPS430G2553 Code xây dựng giao tiếp UART máy tính MSP430 phát: #pragma vector=USCIAB0RX_VECTOR interrupt void USCI0RX_ISR(void) { unsigned char u8Receive; u8Receive = UCA0RXBUF; if (u8Receive == '\n') { g_u8StartSendFlag = 1; return; } if (g_u8UartBufferPtr < UART_BUFFER_MAX) { g_pUartBuffer[g_u8UartBufferPtr++] = u8Receive; g_pUartBuffer[g_u8UartBufferPtr] = 0; } } Code để truyền tín hiệu thông qua module RF /* * main.c (Transmitter) */ Nhóm Page 17 Báo cáo project void main(void) { unsigned long i = 0; unsigned char RxBuf[128]; WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; // Set range // Set DCO step + modulation */ P1DIR |= BIT0; P1OUT &= ~BIT0; UartInit(); init_NRF24L01(); SetRX_Mode(); while (1) { if (nRF24L01_RxPacket(RxBuf) == 1) { UartSend(RxBuf, strlen(RxBuf)); SetRX_Mode(); } Nhóm Page 18 Báo cáo project if (g_u8StartSendFlag == 1) { SetTX_Mode(); nRF24L01_TxPacket(g_pUartBuffer); SPI_RW_Reg(WRITE_REG+STATUS, 0XFF); // Clear Bit Send g_u8StartSendFlag = 0; g_u8UartBufferPtr = 0; LED_TOGGLE; SetRX_Mode(); } } } Nhóm Page 19 Báo cáo project 2 Thiết Kế Mạch Mạch nguyên lý module thu tín hiệu: Hình 10: Mạch Nguyên Lý Nhóm Page 20 Báo cáo project Mạch in: Hình 11: Lớp Top Hình 12: Lớp Bottom Mạch Thực Tế Hoàn Thành Hình 13:Mạch sau hoàn thành Nhóm Page 21 Báo cáo project C.Kết Luận Qua ngày trải nghiệm thực tế tiến hành thực Project này,chúng em học tập làm việc thực sự, nhờ kiến thức học hỏi bảo tận tình thầy, chúng em hiểu vững quy trình làm việc để tạo sản phẩm, học cách làm việc nhóm, cách tổ chức công việc hiệu Đúc rút kinh nghiệm thực tế quý báu Từ kinh nghiệm học quý báu chúng em học giúp ích cho chúng em nhiều cho công việc học tập nghiên cứu Một lần em xin cảm ơn thầy Ths.Nguyễn Tiến Dũng tạo điều kiện tốt cho chúng em hoàn thần tốt Project Nhóm Page 22 Báo cáo project D.Phụ Lục Code Xây Dựng Hàm Điều Khiển Mạch Phát main.c #include #include "nRF24l01.h" #include "string.h" #include "stdio.h" #include "LCD.h" #define LED_TOGGLE P1OUT ^= BIT0 #define UART_BUFFER_MAX 32 void UartInit(void); void UartSend(unsigned char* pBuff, unsigned char u8Length); unsigned char g_pUartBuffer[UART_BUFFER_MAX] = { }; unsigned char g_u8UartBufferPtr = 0; unsigned char g_u8StartSendFlag = 0; /* * main.c (Transmitter) */ void main(void) { unsigned long i = 0; unsigned char RxBuf[128]; WDTCTL = WDTPW | WDTHOLD; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; modulation */ // Stop watchdog timer // Set range // Set DCO step + P1DIR |= BIT0; P1OUT &= ~BIT0; UartInit(); init_NRF24L01(); SetRX_Mode(); while (1) { if (nRF24L01_RxPacket(RxBuf) == 1) { UartSend(RxBuf, strlen(RxBuf)); SetRX_Mode(); } if (g_u8StartSendFlag == 1) { SetTX_Mode(); nRF24L01_TxPacket(g_pUartBuffer); Nhóm Page 23 Báo cáo project SPI_RW_Reg(WRITE_REG+STATUS, 0XFF); // Clear Bit Send g_u8StartSendFlag = 0; g_u8UartBufferPtr = 0; LED_TOGGLE; SetRX_Mode(); } } } // Uart received handler #pragma vector=USCIAB0RX_VECTOR interrupt void USCI0RX_ISR(void) { unsigned char u8Receive; u8Receive = UCA0RXBUF; if (u8Receive == '\n') { g_u8StartSendFlag = 1; return; } if (g_u8UartBufferPtr < UART_BUFFER_MAX) { g_pUartBuffer[g_u8UartBufferPtr++] = u8Receive; g_pUartBuffer[g_u8UartBufferPtr] = 0; } } void UartInit(void) { P1SEL = BIT1 + BIT2 ; P1SEL2 = BIT1 + BIT2 ; UCA0CTL1 |= UCSSEL_2; UCA0BR0 = 104; UCA0BR1 = 0; UCA0MCTL = UCBRS0; UCA0CTL1 &= ~UCSWRST; machine** IE2 |= UCA0RXIE; interrupt bis_SR_register(GIE); // // // // // // // P1.1 = RXD, P1.2=TXD P1.1 = RXD, P1.2=TXD SMCLK 1MHz 9600 1MHz 9600 Modulation UCBRSx = **Initialize USCI state // Enable USCI_A0 RX // Enter LPM0, interrupts enabled } void UartSend(unsigned char* pBuff, unsigned char u8Length) { unsigned char i; for (i = 0; i < u8Length; i++) { while (!(IFG2 & UCA0TXIFG)); buffer ready? UCA0TXBUF = pBuff[i]; character } } Nhóm // USCI_A0 TX // TX -> RXed Page 24 Báo cáo project 2 Code Xây Dựng Hàm Điều Khiển Mạch Thu main.c #include #include "nRF24l01.h" #include "string.h" #include "stdio.h" #include "LCD.h" #define LED_TOGGLE P1OUT ^= BIT0 #define UART_BUFFER_MAX 32 void UartInit(void); void UartSend(unsigned char* pBuff, unsigned char u8Length); unsigned char g_pUartBuffer[UART_BUFFER_MAX] = { }; unsigned char g_u8UartBufferPtr = 0; unsigned char g_u8StartSendFlag = 0; /* * main.c (Receiver) */ void main(void) { Nhóm Page 25 Báo cáo project unsigned long i = 0; unsigned char RxBuf[128]; WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */ P1DIR |= BIT0; P1OUT &= ~BIT0; init_NRF24L01(); SetRX_Mode(); lcd_init(0); lcd_clear(); while (1) { if (nRF24L01_RxPacket(RxBuf) == 1) { lcd_gotoxy(0,0); lcd_puts("ky tu hien thi"); lcd_gotoxy(0,1); lcd_putc(RxBuf[0]); lcd_putc(RxBuf[1]); Nhóm Page 26 Báo cáo project lcd_putc(RxBuf[2]); SetTX_Mode(); nRF24L01_TxPacket("Received: "); nRF24L01_TxPacket(RxBuf); nRF24L01_TxPacket("\n\r"); SPI_RW_Reg(WRITE_REG+STATUS, 0XFF); // Clear Bit Send LED_TOGGLE; SetRX_Mode(); } } } Nhóm Page 27 [...]... Nhóm 1 Page 18 Báo cáo project 2 if (g_u8StartSendFlag == 1) { SetTX_Mode(); nRF24L01_TxPacket(g_pUartBuffer); SPI_RW_Reg(WRITE_REG+STATUS, 0XFF); // Clear Bit Send g_u8StartSendFlag = 0; g_u8UartBufferPtr = 0; LED_TOGGLE; SetRX_Mode(); } } } Nhóm 1 Page 19 Báo cáo project 2 2 Thiết Kế Mạch Mạch nguyên lý module thu tín hiệu: Hình 10: Mạch Nguyên Lý Nhóm 1 Page 20 Báo cáo project 2 Mạch in: Hình... tiết kiệm năng lượng Nhóm 1 Page 15 Báo cáo project 2 - Chú ý: Điện áp cung cấp cho là 1.9à3.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 9: Mạch Layout của nRF24L01 Nhóm 1 Page 16 Báo cáo project 2 Phần 3: Code Cho MPS430G2553 Và Thiết Kế Mạch 1 Code Cho MPS430G2553 Code xây dựng giao tiếp UART giữa... Tiến Dũng đã tạo mọi điều kiện tốt nhất cho chúng em có thể hoàn thần tốt Project 2 này Nhóm 1 Page 22 Báo cáo project 2 D.Phụ Lục 1 Code Xây Dựng Hàm Điều Khiển Mạch Phát main.c #include #include "nRF24l01.h" #include "string.h" #include "stdio.h" #include "LCD.h" #define LED_TOGGLE P1OUT ^= BIT0 #define UART_BUFFER_MAX 32 void UartInit(void); void UartSend(unsigned char* pBuff, unsigned char... hien thi"); lcd_gotoxy(0,1); lcd_putc(RxBuf[0]); lcd_putc(RxBuf[1]); Nhóm 1 Page 26 Báo cáo project 2 lcd_putc(RxBuf [2] ); SetTX_Mode(); nRF24L01_TxPacket("Received: "); nRF24L01_TxPacket(RxBuf); nRF24L01_TxPacket("\n\r"); SPI_RW_Reg(WRITE_REG+STATUS, 0XFF); // Clear Bit Send LED_TOGGLE; SetRX_Mode(); } } } Nhóm 1 Page 27 ... 0; i < u8Length; i++) { while (!(IFG2 & UCA0TXIFG)); buffer ready? UCA0TXBUF = pBuff[i]; character } } Nhóm 1 // USCI_A0 TX // TX -> RXed Page 24 Báo cáo project 2 2 Code Xây Dựng Hàm Điều Khiển Mạch Thu main.c #include #include "nRF24l01.h" #include "string.h" #include "stdio.h" #include "LCD.h" #define LED_TOGGLE P1OUT ^= BIT0 #define UART_BUFFER_MAX 32 void UartInit(void); void UartSend(unsigned... đổi thông tin với MPU Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7 + Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7 15 A Nguồn dương cho đèn nền 16 K GND cho đèn nền Nhóm 1 Page 13 Báo cáo project 2 3 Module thu phát nRF24L01 2. 4Ghz Giới thiệu Hình 7: Module thu phát nRF24L01 Thông số kỹ thuật... phát nRF24L01 Thông số kỹ thuật Radio: - Hoạt động ở giải tần 2. 4 Ghz - Có 126 kênh - Truyền và nhận dữ liệu - Truyền tốc độ cao 1Mbps hoặc 2 Mbps Công suất phát: - Có thể cài đặt được 4 công suất nguồn phát: 0,-6,- 12, -18 dBm Thu: - Có bộ lọc nhiễu tại đầu thu - Khuếch đại bị ảnh hưởng bởi nhiễu thấp (LNA) Nhóm 1 Page 14 Báo cáo project 2 Nguồn cấp: - Hoạt động từ 1,9 – 3,6V - Các chân I/O chạy được... (Receiver) */ void main(void) { Nhóm 1 Page 25 Báo cáo project 2 unsigned long i = 0; unsigned char RxBuf[ 128 ]; WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */ P1DIR |= BIT0; P1OUT &= ~BIT0; init_NRF24L01(); SetRX_Mode(); lcd_init(0); lcd_clear(); while (1) { if (nRF24L01_RxPacket(RxBuf) == 1) { lcd_gotoxy(0,0);... module thu tín hiệu: Hình 10: Mạch Nguyên Lý Nhóm 1 Page 20 Báo cáo project 2 Mạch in: Hình 11: Lớp Top Hình 12: Lớp Bottom 3 Mạch Thực Tế Hoàn Thành Hình 13:Mạch sau khi hoàn thành Nhóm 1 Page 21 Báo cáo project 2 C.Kết Luận Qua những ngày trải nghiệm thực tế khi tiến hành thực hiện Project 2 này,chúng em đã học tập và làm việc thực sự, nhờ những kiến thức học hỏi được cùng sự chỉ bảo tận tình của... /* * main.c (Transmitter) */ Nhóm 1 Page 17 Báo cáo project 2 void main(void) { unsigned long i = 0; unsigned char RxBuf[ 128 ]; WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; // Set range // Set DCO step + modulation */ P1DIR |= BIT0; P1OUT &= ~BIT0; UartInit(); init_NRF24L01(); SetRX_Mode(); while (1) { if (nRF24L01_RxPacket(RxBuf) == 1) { UartSend(RxBuf,