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