현성 김 / Mbed 2 deprecated 181202_Castone_design_master

Dependencies:   mbed nRF24L01P

Committer:
hyunsungkim
Date:
Wed Nov 21 12:08:43 2018 +0000
Revision:
7:faf9014d2512
Parent:
6:42ecdff5956a
Child:
8:78294b936c70
update libraries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hyunsungkim 0:2dade6db4d3a 1 #include "mbed.h"
hyunsungkim 3:690740ab3394 2 #include <RF24Network.h>
hyunsungkim 3:690740ab3394 3 #include <RF24.h>
hyunsungkim 3:690740ab3394 4 #include "beep.h"
hyunsungkim 3:690740ab3394 5
hyunsungkim 3:690740ab3394 6 /* Set */
hyunsungkim 3:690740ab3394 7 #define NODE_ADDR 00
hyunsungkim 3:690740ab3394 8
hyunsungkim 3:690740ab3394 9 #define nrf_CE D2
hyunsungkim 3:690740ab3394 10 #define nrf_CSN A3
hyunsungkim 3:690740ab3394 11 #define spi_SCK D13
hyunsungkim 3:690740ab3394 12 #define spi_MOSI D11
hyunsungkim 3:690740ab3394 13 #define spi_MISO D12
hyunsungkim 3:690740ab3394 14 RF24 radio(spi_MOSI, spi_MISO, spi_SCK, nrf_CE, nrf_CSN );
hyunsungkim 3:690740ab3394 15 RF24Network network(radio);
hyunsungkim 0:2dade6db4d3a 16
hyunsungkim 0:2dade6db4d3a 17 Serial pc(USBTX, USBRX);
hyunsungkim 0:2dade6db4d3a 18 Serial lidar(D1, D0);
hyunsungkim 0:2dade6db4d3a 19 PwmOut motor_RA(D9);
hyunsungkim 0:2dade6db4d3a 20 PwmOut motor_RB(D10);
hyunsungkim 0:2dade6db4d3a 21 PwmOut motor_LA(D3);
hyunsungkim 0:2dade6db4d3a 22 PwmOut motor_LB(D6);
hyunsungkim 4:ae81aeeed069 23 PwmOut led_B(A5);
hyunsungkim 0:2dade6db4d3a 24 PwmOut led_G(A2);
hyunsungkim 4:ae81aeeed069 25 PwmOut led_R(A1);
hyunsungkim 0:2dade6db4d3a 26 PwmOut buzzer(D5);
hyunsungkim 0:2dade6db4d3a 27 AnalogIn batteryCheck(A0);
hyunsungkim 0:2dade6db4d3a 28
hyunsungkim 3:690740ab3394 29 const uint16_t addr = NODE_ADDR;
hyunsungkim 3:690740ab3394 30 struct payload_t
hyunsungkim 3:690740ab3394 31 {
hyunsungkim 3:690740ab3394 32 unsigned long ms;
hyunsungkim 3:690740ab3394 33 unsigned long counter;
hyunsungkim 3:690740ab3394 34 };
hyunsungkim 3:690740ab3394 35
hyunsungkim 0:2dade6db4d3a 36 void goForward();
hyunsungkim 7:faf9014d2512 37 void initLED();
hyunsungkim 0:2dade6db4d3a 38
hyunsungkim 6:42ecdff5956a 39
hyunsungkim 0:2dade6db4d3a 40 int main() {
hyunsungkim 6:42ecdff5956a 41
hyunsungkim 6:42ecdff5956a 42 initLED();
hyunsungkim 7:faf9014d2512 43 initBuzzer();
hyunsungkim 0:2dade6db4d3a 44 pc.baud(115200);
hyunsungkim 3:690740ab3394 45 radio.begin();
hyunsungkim 3:690740ab3394 46 network.begin(/*channel*/ 90, /*node address*/ addr);
hyunsungkim 4:ae81aeeed069 47 wait(2.0f);
hyunsungkim 0:2dade6db4d3a 48
hyunsungkim 4:ae81aeeed069 49 // Display the (default) setup this node
hyunsungkim 3:690740ab3394 50 pc.printf("My ADDR : %d\r\n", NODE_ADDR);
hyunsungkim 4:ae81aeeed069 51 pc.printf("Complete Setting\r\n");
hyunsungkim 1:450bd5ee8cdc 52
hyunsungkim 0:2dade6db4d3a 53 while(1) {
hyunsungkim 4:ae81aeeed069 54 // Network should be updated regularly to keep layer going
hyunsungkim 3:690740ab3394 55 network.update();
hyunsungkim 3:690740ab3394 56
hyunsungkim 4:ae81aeeed069 57 while (network.available()) {
hyunsungkim 3:690740ab3394 58 RF24NetworkHeader header_rx;
hyunsungkim 3:690740ab3394 59 payload_t payload_rx;
hyunsungkim 3:690740ab3394 60 network.read(header_rx,&payload_rx,sizeof(payload_rx));
hyunsungkim 3:690740ab3394 61 pc.printf("Received packet # %d at %d ms\n",payload_rx.counter,payload_rx.ms);
hyunsungkim 3:690740ab3394 62 }
hyunsungkim 0:2dade6db4d3a 63 }
hyunsungkim 0:2dade6db4d3a 64 }
hyunsungkim 0:2dade6db4d3a 65
hyunsungkim 7:faf9014d2512 66 void initLED() {
hyunsungkim 7:faf9014d2512 67 led_R=1;
hyunsungkim 7:faf9014d2512 68 led_G=1;
hyunsungkim 7:faf9014d2512 69 led_B=1;
hyunsungkim 7:faf9014d2512 70 }
hyunsungkim 0:2dade6db4d3a 71
hyunsungkim 0:2dade6db4d3a 72 void goForward()
hyunsungkim 0:2dade6db4d3a 73 {
hyunsungkim 4:ae81aeeed069 74 motor_RA = 1;
hyunsungkim 0:2dade6db4d3a 75 motor_RB = 0;
hyunsungkim 0:2dade6db4d3a 76 motor_LA = 0;
hyunsungkim 4:ae81aeeed069 77 motor_LB = 1;
hyunsungkim 0:2dade6db4d3a 78 }
hyunsungkim 0:2dade6db4d3a 79
hyunsungkim 0:2dade6db4d3a 80 /*
hyunsungkim 0:2dade6db4d3a 81
hyunsungkim 0:2dade6db4d3a 82 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
hyunsungkim 0:2dade6db4d3a 83 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
hyunsungkim 0:2dade6db4d3a 84 // only handles 4 byte transfers in the ATMega code.
hyunsungkim 0:2dade6db4d3a 85 #define TRANSFER_SIZE 4
hyunsungkim 0:2dade6db4d3a 86
hyunsungkim 0:2dade6db4d3a 87 wait(2.0);
hyunsungkim 0:2dade6db4d3a 88
hyunsungkim 0:2dade6db4d3a 89 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
hyunsungkim 0:2dade6db4d3a 90 int txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 91 int rxDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 92
hyunsungkim 0:2dade6db4d3a 93 nrf.powerUp();
hyunsungkim 0:2dade6db4d3a 94 nrf.setTxAddress(0xE7E7E7EF, 4);
hyunsungkim 0:2dade6db4d3a 95
hyunsungkim 0:2dade6db4d3a 96 // Display the (default) setup of the nRF24L01+ chip
hyunsungkim 0:2dade6db4d3a 97 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", nrf.getRfFrequency() );
hyunsungkim 0:2dade6db4d3a 98 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", nrf.getRfOutputPower() );
hyunsungkim 0:2dade6db4d3a 99 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", nrf.getAirDataRate() );
hyunsungkim 0:2dade6db4d3a 100 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", nrf.getTxAddress() );
hyunsungkim 0:2dade6db4d3a 101 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", nrf.getRxAddress() );
hyunsungkim 0:2dade6db4d3a 102 pc.printf( "nRF24L01+ CRCWidth : %d \r\n", nrf.getCrcWidth() );
hyunsungkim 0:2dade6db4d3a 103
hyunsungkim 0:2dade6db4d3a 104 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 105
hyunsungkim 0:2dade6db4d3a 106 nrf.setTransferSize( TRANSFER_SIZE );
hyunsungkim 0:2dade6db4d3a 107
hyunsungkim 0:2dade6db4d3a 108 nrf.setReceiveMode();
hyunsungkim 0:2dade6db4d3a 109 nrf.enable();
hyunsungkim 0:2dade6db4d3a 110
hyunsungkim 0:2dade6db4d3a 111 while (1) {
hyunsungkim 0:2dade6db4d3a 112
hyunsungkim 0:2dade6db4d3a 113 // If we've received anything over the host serial link...
hyunsungkim 0:2dade6db4d3a 114 if ( pc.readable() ) {
hyunsungkim 0:2dade6db4d3a 115
hyunsungkim 0:2dade6db4d3a 116 // ...add it to the transmit buffer
hyunsungkim 0:2dade6db4d3a 117 txData[txDataCnt++] = pc.getc();
hyunsungkim 0:2dade6db4d3a 118
hyunsungkim 0:2dade6db4d3a 119 // If the transmit buffer is full
hyunsungkim 0:2dade6db4d3a 120 if ( txDataCnt >= sizeof( txData ) ) {
hyunsungkim 0:2dade6db4d3a 121
hyunsungkim 0:2dade6db4d3a 122 // Send the transmitbuffer via the nRF24L01+
hyunsungkim 0:2dade6db4d3a 123 nrf.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
hyunsungkim 0:2dade6db4d3a 124
hyunsungkim 0:2dade6db4d3a 125 txDataCnt = 0;
hyunsungkim 0:2dade6db4d3a 126 }
hyunsungkim 0:2dade6db4d3a 127 endBeep();
hyunsungkim 0:2dade6db4d3a 128 }
hyunsungkim 0:2dade6db4d3a 129
hyunsungkim 0:2dade6db4d3a 130 // If we've received anything in the nRF24L01+...
hyunsungkim 0:2dade6db4d3a 131 if ( nrf.readable() ) {
hyunsungkim 0:2dade6db4d3a 132
hyunsungkim 0:2dade6db4d3a 133 // ...read the data into the receive buffer
hyunsungkim 0:2dade6db4d3a 134 rxDataCnt = nrf.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
hyunsungkim 0:2dade6db4d3a 135
hyunsungkim 0:2dade6db4d3a 136 // Display the receive buffer contents via the host serial link
hyunsungkim 0:2dade6db4d3a 137 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
hyunsungkim 0:2dade6db4d3a 138 pc.putc( rxData[i] );
hyunsungkim 0:2dade6db4d3a 139 }
hyunsungkim 3:690740ab3394 140 beepStart();
hyunsungkim 0:2dade6db4d3a 141 }
hyunsungkim 0:2dade6db4d3a 142 }
hyunsungkim 0:2dade6db4d3a 143 */