ECE 4180 - Final Project Team / Mbed 2 deprecated WalkieTalkie

Dependencies:   mbed 4DGL-uLCD-SE mbed-rtos nRF24L01P

Committer:
drechtmann3
Date:
Wed Apr 18 15:36:04 2018 +0000
Revision:
10:a8fcfc869fa5
Parent:
7:0ac1f1ca8aa6
Child:
11:a9f4237eaaa1
uh

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nurchu 0:c35b54fb9c3c 1 #include "mbed.h"
Nurchu 7:0ac1f1ca8aa6 2 #include "rtos.h"
Nurchu 2:dc046ff72566 3 #include "Microphone.h"
drechtmann3 1:fc0a2c17e086 4 #include "nRF24L01P.h"
Nurchu 2:dc046ff72566 5
drechtmann3 1:fc0a2c17e086 6 Serial pc(USBTX, USBRX); // tx, rx
drechtmann3 1:fc0a2c17e086 7
drechtmann3 1:fc0a2c17e086 8 nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq
drechtmann3 1:fc0a2c17e086 9 DigitalOut myled1(LED1);
drechtmann3 1:fc0a2c17e086 10 DigitalOut myled2(LED2);
drechtmann3 1:fc0a2c17e086 11 DigitalOut myled3(LED3);
Nurchu 2:dc046ff72566 12
Nurchu 2:dc046ff72566 13 Microphone mymicrophone(p16);
drechtmann3 10:a8fcfc869fa5 14 DigitalIn Button(p20);
drechtmann3 10:a8fcfc869fa5 15 void startup() {
drechtmann3 1:fc0a2c17e086 16
drechtmann3 1:fc0a2c17e086 17 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
drechtmann3 1:fc0a2c17e086 18 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
drechtmann3 1:fc0a2c17e086 19 // only handles 4 byte transfers in the ATMega code.
drechtmann3 1:fc0a2c17e086 20 #define TRANSFER_SIZE 4
drechtmann3 1:fc0a2c17e086 21
drechtmann3 1:fc0a2c17e086 22 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
drechtmann3 1:fc0a2c17e086 23 int txDataCnt = 0;
drechtmann3 1:fc0a2c17e086 24 int rxDataCnt = 0;
drechtmann3 1:fc0a2c17e086 25
drechtmann3 1:fc0a2c17e086 26 my_nrf24l01p.powerUp();
drechtmann3 1:fc0a2c17e086 27
drechtmann3 1:fc0a2c17e086 28 // Display the (default) setup of the nRF24L01+ chip
drechtmann3 1:fc0a2c17e086 29 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
drechtmann3 1:fc0a2c17e086 30 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
drechtmann3 1:fc0a2c17e086 31 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
drechtmann3 1:fc0a2c17e086 32 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
drechtmann3 1:fc0a2c17e086 33 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
drechtmann3 1:fc0a2c17e086 34
drechtmann3 1:fc0a2c17e086 35 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
drechtmann3 1:fc0a2c17e086 36
drechtmann3 1:fc0a2c17e086 37 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
drechtmann3 1:fc0a2c17e086 38
drechtmann3 1:fc0a2c17e086 39 my_nrf24l01p.setReceiveMode();
drechtmann3 1:fc0a2c17e086 40 my_nrf24l01p.enable();
drechtmann3 10:a8fcfc869fa5 41 }
drechtmann3 1:fc0a2c17e086 42
drechtmann3 1:fc0a2c17e086 43
drechtmann3 10:a8fcfc869fa5 44 void pctransmit() {
drechtmann3 1:fc0a2c17e086 45 // If we've received anything over the host serial link...
drechtmann3 1:fc0a2c17e086 46 if ( pc.readable() ) {
drechtmann3 1:fc0a2c17e086 47
drechtmann3 1:fc0a2c17e086 48 // ...add it to the transmit buffer
drechtmann3 1:fc0a2c17e086 49 txData[txDataCnt++] = pc.getc();
drechtmann3 1:fc0a2c17e086 50
drechtmann3 1:fc0a2c17e086 51 // If the transmit buffer is full
drechtmann3 1:fc0a2c17e086 52 if ( txDataCnt >= sizeof( txData ) ) {
drechtmann3 1:fc0a2c17e086 53
drechtmann3 1:fc0a2c17e086 54 // Send the transmitbuffer via the nRF24L01+
drechtmann3 1:fc0a2c17e086 55 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
drechtmann3 1:fc0a2c17e086 56
drechtmann3 1:fc0a2c17e086 57 txDataCnt = 0;
drechtmann3 1:fc0a2c17e086 58 }
drechtmann3 1:fc0a2c17e086 59
drechtmann3 1:fc0a2c17e086 60 // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
drechtmann3 10:a8fcfc869fa5 61 myled3 = !myled3;
drechtmann3 1:fc0a2c17e086 62 }
drechtmann3 1:fc0a2c17e086 63
drechtmann3 1:fc0a2c17e086 64 // If we've received anything in the nRF24L01+...
drechtmann3 1:fc0a2c17e086 65 if ( my_nrf24l01p.readable() ) {
drechtmann3 1:fc0a2c17e086 66
drechtmann3 1:fc0a2c17e086 67 // ...read the data into the receive buffer
drechtmann3 1:fc0a2c17e086 68 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
drechtmann3 1:fc0a2c17e086 69
drechtmann3 1:fc0a2c17e086 70 // Display the receive buffer contents via the host serial link
drechtmann3 1:fc0a2c17e086 71 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
drechtmann3 1:fc0a2c17e086 72
drechtmann3 1:fc0a2c17e086 73 pc.putc( rxData[i] );
drechtmann3 1:fc0a2c17e086 74 }
drechtmann3 1:fc0a2c17e086 75
drechtmann3 1:fc0a2c17e086 76 // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
drechtmann3 1:fc0a2c17e086 77 myled3 = !myled3;
drechtmann3 1:fc0a2c17e086 78 }
drechtmann3 1:fc0a2c17e086 79 }
drechtmann3 1:fc0a2c17e086 80 }
drechtmann3 10:a8fcfc869fa5 81 void transmit() {
drechtmann3 10:a8fcfc869fa5 82 // while (mymycrophone.getData()) {
drechtmann3 10:a8fcfc869fa5 83 // txData[txDataCnt++] = mymicrophone.getData();
drechtmann3 10:a8fcfc869fa5 84 // }
drechtmann3 10:a8fcfc869fa5 85 // txData[txDataCnt++] = ;
drechtmann3 10:a8fcfc869fa5 86 while (Button = 1) {
drechtmann3 10:a8fcfc869fa5 87 my_nrf24l01p.write(0, mymicrophone.getData(), txDataCnt);
drechtmann3 10:a8fcfc869fa5 88 }
drechtmann3 10:a8fcfc869fa5 89 }
drechtmann3 1:fc0a2c17e086 90 main (1) {
drechtmann3 1:fc0a2c17e086 91 while (1) {
drechtmann3 1:fc0a2c17e086 92
drechtmann3 1:fc0a2c17e086 93 }
drechtmann3 1:fc0a2c17e086 94 }