JNP3_IOT_2018Z
/
JNP3_IOT_6_RADIO_ECHO_FIXED2
radio echo app
main_echo.cpp@8:c887b8b3e7cb, 2018-11-16 (annotated)
- 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?
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 | 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 | } |