radio echo app

Dependencies:   mbed nRF24L01P

Committer:
ttajmajer
Date:
Fri Nov 16 11:03:57 2018 +0000
Revision:
8:c887b8b3e7cb
Parent:
7:00ec783dd571
doc update;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ttajmajer 2:352f66e435da 1 #include "mbed.h"
ttajmajer 2:352f66e435da 2 #include "nRF24L01P.h"
ttajmajer 2:352f66e435da 3
ttajmajer 7:00ec783dd571 4 /* Dokumentacja do modulu nrf24l01*/
ttajmajer 8:c887b8b3e7cb 5 /* https://www.nordicsemi.com/eng/nordic/download_resource/8765/2/75557853/2726 */
ttajmajer 7:00ec783dd571 6
ttajmajer 2:352f66e435da 7 //***************************************************************************//
ttajmajer 2:352f66e435da 8 // !!! SETTINGS !!!
ttajmajer 2:352f66e435da 9
ttajmajer 4:018a8915c9e0 10 #define DATA_RATE NRF24L01P_DATARATE_250_KBPS
ttajmajer 4:018a8915c9e0 11 //#define DATA_RATE NRF24L01P_DATARATE_1_MBPS
ttajmajer 2:352f66e435da 12 //#define DATA_RATE NRF24L01P_DATARATE_2_MBPS
ttajmajer 2:352f66e435da 13
ttajmajer 4:018a8915c9e0 14 #define POWER NRF24L01P_TX_PWR_ZERO_DB
ttajmajer 2:352f66e435da 15 //#define POWER NRF24L01P_TX_PWR_MINUS_6_DB
ttajmajer 2:352f66e435da 16 //#define POWER NRF24L01P_TX_PWR_MINUS_12_DB
ttajmajer 4:018a8915c9e0 17 //#define POWER NRF24L01P_TX_PWR_MINUS_18_DB
ttajmajer 2:352f66e435da 18
ttajmajer 2:352f66e435da 19 #define CHANNEL 0 // 0 - 30
ttajmajer 2:352f66e435da 20
ttajmajer 2:352f66e435da 21
ttajmajer 5:8e2c6a9df2b1 22 #define RX_ADDRESS ((unsigned long long) 0xABCDEF01)
ttajmajer 5:8e2c6a9df2b1 23 #define TX_ADDRESS ((unsigned long long) 0xABCDEF00)
ttajmajer 3:335c4028bf36 24 #define ECHO_DELAY 0.1
ttajmajer 2:352f66e435da 25
ttajmajer 3:335c4028bf36 26 #define TRANSFER_SIZE 32
ttajmajer 2:352f66e435da 27
ttajmajer 2:352f66e435da 28 //***************************************************************************//
ttajmajer 2:352f66e435da 29
ttajmajer 2:352f66e435da 30
ttajmajer 2:352f66e435da 31
ttajmajer 2:352f66e435da 32 Serial pc(USBTX, USBRX); // tx, rx
ttajmajer 2:352f66e435da 33 nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq
ttajmajer 2:352f66e435da 34
ttajmajer 2:352f66e435da 35
ttajmajer 2:352f66e435da 36 DigitalOut myled1(LED1);
ttajmajer 2:352f66e435da 37 InterruptIn button(USER_BUTTON);
ttajmajer 2:352f66e435da 38
ttajmajer 2:352f66e435da 39 bool send_data = false;
ttajmajer 2:352f66e435da 40
ttajmajer 2:352f66e435da 41 void send_packet(){
ttajmajer 2:352f66e435da 42 send_data = true;
ttajmajer 2:352f66e435da 43 }
ttajmajer 2:352f66e435da 44
ttajmajer 2:352f66e435da 45 int main() {
ttajmajer 2:352f66e435da 46
ttajmajer 2:352f66e435da 47
ttajmajer 2:352f66e435da 48 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
ttajmajer 2:352f66e435da 49
ttajmajer 2:352f66e435da 50 pc.baud(115200);
ttajmajer 2:352f66e435da 51 radio.powerDown();
ttajmajer 2:352f66e435da 52 radio.powerUp();
ttajmajer 2:352f66e435da 53
ttajmajer 2:352f66e435da 54 button.rise(&send_packet);
ttajmajer 2:352f66e435da 55
ttajmajer 2:352f66e435da 56 radio.setAirDataRate(DATA_RATE);
ttajmajer 2:352f66e435da 57 radio.setRfOutputPower(POWER);
ttajmajer 2:352f66e435da 58 radio.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * CHANNEL);
ttajmajer 3:335c4028bf36 59
ttajmajer 3:335c4028bf36 60 radio.setCrcWidth(NRF24L01P_CRC_8_BIT);
ttajmajer 5:8e2c6a9df2b1 61 //radio.enableAutoAcknowledge(NRF24L01P_PIPE_P0);
ttajmajer 5:8e2c6a9df2b1 62 //radio.enableAutoAcknowledge(NRF24L01P_PIPE_P1);
ttajmajer 5:8e2c6a9df2b1 63 //radio.enableAutoRetransmit(0x0F, 0x0F);
ttajmajer 3:335c4028bf36 64
ttajmajer 2:352f66e435da 65 radio.setTxAddress(TX_ADDRESS, 4);
ttajmajer 3:335c4028bf36 66 radio.setRxAddress(TX_ADDRESS, 4, NRF24L01P_PIPE_P0);
ttajmajer 3:335c4028bf36 67 radio.setRxAddress(RX_ADDRESS, 4, NRF24L01P_PIPE_P1);
ttajmajer 3:335c4028bf36 68
ttajmajer 2:352f66e435da 69 // Display the (default) setup of the nRF24L01+ chip
ttajmajer 2:352f66e435da 70 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
ttajmajer 2:352f66e435da 71 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
ttajmajer 2:352f66e435da 72 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
ttajmajer 2:352f66e435da 73 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
ttajmajer 3:335c4028bf36 74 pc.printf( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) );
ttajmajer 3:335c4028bf36 75 pc.printf( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) );
ttajmajer 2:352f66e435da 76
ttajmajer 2:352f66e435da 77
ttajmajer 3:335c4028bf36 78 radio.setTransferSize(TRANSFER_SIZE, NRF24L01P_PIPE_P0);
ttajmajer 3:335c4028bf36 79 radio.setTransferSize(TRANSFER_SIZE, NRF24L01P_PIPE_P1);
ttajmajer 2:352f66e435da 80
ttajmajer 2:352f66e435da 81 myled1 = 0;
ttajmajer 2:352f66e435da 82
ttajmajer 5:8e2c6a9df2b1 83 radio.enableDynamicPayload(NRF24L01P_PIPE_P1);
ttajmajer 2:352f66e435da 84 radio.setReceiveMode();
ttajmajer 2:352f66e435da 85 radio.enable();
ttajmajer 2:352f66e435da 86
ttajmajer 2:352f66e435da 87 while (1) {
ttajmajer 3:335c4028bf36 88 int tx_bytes=0;
ttajmajer 3:335c4028bf36 89 int rx_bytes=0;
ttajmajer 2:352f66e435da 90
ttajmajer 3:335c4028bf36 91 if(radio.readable(NRF24L01P_PIPE_P1)){
ttajmajer 2:352f66e435da 92
ttajmajer 3:335c4028bf36 93 rx_bytes = radio.read(NRF24L01P_PIPE_P1, rxData, sizeof(rxData));
ttajmajer 2:352f66e435da 94 myled1 = 1;
ttajmajer 5:8e2c6a9df2b1 95 pc.printf("PING RECV[%d]\r\n", rx_bytes);
ttajmajer 2:352f66e435da 96
ttajmajer 2:352f66e435da 97 wait(ECHO_DELAY);
ttajmajer 2:352f66e435da 98
ttajmajer 2:352f66e435da 99 tx_bytes = radio.write(NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE);
ttajmajer 2:352f66e435da 100 myled1 = 0;
ttajmajer 3:335c4028bf36 101 pc.printf("PONG SEND\r\n");
ttajmajer 2:352f66e435da 102 }
ttajmajer 5:8e2c6a9df2b1 103
ttajmajer 2:352f66e435da 104
ttajmajer 2:352f66e435da 105 if(send_data){
ttajmajer 2:352f66e435da 106 tx_bytes = radio.write(NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE);
ttajmajer 2:352f66e435da 107 send_data = false;
ttajmajer 3:335c4028bf36 108 pc.printf("INIT SEND\r\n");
ttajmajer 2:352f66e435da 109 }
ttajmajer 2:352f66e435da 110
ttajmajer 3:335c4028bf36 111 if(tx_bytes < 0)
ttajmajer 3:335c4028bf36 112 pc.printf("TX ERROR\r\n");
ttajmajer 3:335c4028bf36 113
ttajmajer 3:335c4028bf36 114 if(tx_bytes > 0)
ttajmajer 3:335c4028bf36 115 pc.printf("RETR: %d\r\n", radio.getRetrCount());
ttajmajer 3:335c4028bf36 116
ttajmajer 2:352f66e435da 117 }
ttajmajer 2:352f66e435da 118 }