ECE 4180 - Final Project Team / Mbed 2 deprecated WalkieTalkie

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

Committer:
drechtmann3
Date:
Fri Apr 20 16:10:43 2018 +0000
Revision:
18:e2a8ea6f55d3
Parent:
13:fbcc71fca474
Child:
20:e068469ffb89
feeling around Push, Pop, CircularBuf, Spkeaer, and Microphone for recieve and transmist

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"
drechtmann3 11:a9f4237eaaa1 5 #define TRANSFER_SIZE 4 //added 5:54pm 4/18/18
drechtmann3 18:e2a8ea6f55d3 6 #include "CircularBuf.h"
drechtmann3 18:e2a8ea6f55d3 7 #include "HUD.h"
drechtmann3 18:e2a8ea6f55d3 8 #include "Speaker.h"
drechtmann3 1:fc0a2c17e086 9 Serial pc(USBTX, USBRX); // tx, rx
Nurchu 12:efcfe4c0d9f2 10
drechtmann3 1:fc0a2c17e086 11 nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10); // mosi, miso, sck, csn, ce, irq
drechtmann3 1:fc0a2c17e086 12 DigitalOut myled1(LED1);
drechtmann3 1:fc0a2c17e086 13 DigitalOut myled2(LED2);
drechtmann3 1:fc0a2c17e086 14 DigitalOut myled3(LED3);
drechtmann3 13:fbcc71fca474 15 Ticker t; //10:41 am 4/20
drechtmann3 18:e2a8ea6f55d3 16 CircularBuf<uint_8> txbuf(30);
drechtmann3 18:e2a8ea6f55d3 17 CircularBuf<uint_8> rxbuf(30);
drechtmann3 18:e2a8ea6f55d3 18 Speakr spkr(p18);
Nurchu 2:dc046ff72566 19 Microphone mymicrophone(p16);
drechtmann3 11:a9f4237eaaa1 20 InterruptIn Button(p20); //changed DitialIn to InterruptIn at 5:54 4/18/18
drechtmann3 11:a9f4237eaaa1 21 AnalogOut speaker(p18); //added 6:34 pm at 4/18/18
drechtmann3 11:a9f4237eaaa1 22
Nurchu 12:efcfe4c0d9f2 23 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; //making these usable by other voids.
Nurchu 12:efcfe4c0d9f2 24 int txDataCnt = 0;//and this.
Nurchu 12:efcfe4c0d9f2 25 int rxDataCnt = 0;//and this. //David Rechtmann 6.24 pm 4/18/18
drechtmann3 13:fbcc71fca474 26 int micvalue[30];
drechtmann3 13:fbcc71fca474 27 int micvalcount = 0;
Nurchu 12:efcfe4c0d9f2 28 void startup()
Nurchu 12:efcfe4c0d9f2 29 {
drechtmann3 1:fc0a2c17e086 30
drechtmann3 1:fc0a2c17e086 31 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
drechtmann3 1:fc0a2c17e086 32 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
drechtmann3 1:fc0a2c17e086 33 // only handles 4 byte transfers in the ATMega code.
drechtmann3 11:a9f4237eaaa1 34 //define TRANSFER_SIZE 4
drechtmann3 1:fc0a2c17e086 35
Nurchu 12:efcfe4c0d9f2 36 // char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; //making these usable by other voids.
Nurchu 12:efcfe4c0d9f2 37 // int txDataCnt = 0;//and this.
Nurchu 12:efcfe4c0d9f2 38 // int rxDataCnt = 0;//and this. //David Rechtmann 6:24 pm 4/18/18
drechtmann3 1:fc0a2c17e086 39
drechtmann3 1:fc0a2c17e086 40 my_nrf24l01p.powerUp();
drechtmann3 1:fc0a2c17e086 41
drechtmann3 1:fc0a2c17e086 42 // Display the (default) setup of the nRF24L01+ chip
drechtmann3 1:fc0a2c17e086 43 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
drechtmann3 1:fc0a2c17e086 44 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
drechtmann3 1:fc0a2c17e086 45 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
drechtmann3 1:fc0a2c17e086 46 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
drechtmann3 1:fc0a2c17e086 47 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
drechtmann3 1:fc0a2c17e086 48
drechtmann3 1:fc0a2c17e086 49 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
drechtmann3 1:fc0a2c17e086 50
drechtmann3 1:fc0a2c17e086 51 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
drechtmann3 1:fc0a2c17e086 52
drechtmann3 1:fc0a2c17e086 53 my_nrf24l01p.setReceiveMode();
drechtmann3 1:fc0a2c17e086 54 my_nrf24l01p.enable();
drechtmann3 10:a8fcfc869fa5 55 }
drechtmann3 1:fc0a2c17e086 56
Nurchu 12:efcfe4c0d9f2 57
Nurchu 12:efcfe4c0d9f2 58 void pctransmit()
Nurchu 12:efcfe4c0d9f2 59 {
Nurchu 12:efcfe4c0d9f2 60 // If we've received anything over the host serial link...
Nurchu 12:efcfe4c0d9f2 61 if ( pc.readable() ) {
drechtmann3 1:fc0a2c17e086 62
Nurchu 12:efcfe4c0d9f2 63 // ...add it to the transmit buffer
Nurchu 12:efcfe4c0d9f2 64 txData[txDataCnt++] = pc.getc();
Nurchu 12:efcfe4c0d9f2 65
Nurchu 12:efcfe4c0d9f2 66 // If the transmit buffer is full
Nurchu 12:efcfe4c0d9f2 67 if ( txDataCnt >= sizeof( txData ) ) {
Nurchu 12:efcfe4c0d9f2 68
Nurchu 12:efcfe4c0d9f2 69 // Send the transmitbuffer via the nRF24L01+
Nurchu 12:efcfe4c0d9f2 70 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
drechtmann3 1:fc0a2c17e086 71
Nurchu 12:efcfe4c0d9f2 72 txDataCnt = 0;
Nurchu 12:efcfe4c0d9f2 73 }
drechtmann3 1:fc0a2c17e086 74
Nurchu 12:efcfe4c0d9f2 75 // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
Nurchu 12:efcfe4c0d9f2 76 myled3 = !myled3;
Nurchu 12:efcfe4c0d9f2 77 }
drechtmann3 1:fc0a2c17e086 78
Nurchu 12:efcfe4c0d9f2 79 // If we've received anything in the nRF24L01+...
Nurchu 12:efcfe4c0d9f2 80 if ( my_nrf24l01p.readable() ) {
drechtmann3 1:fc0a2c17e086 81
Nurchu 12:efcfe4c0d9f2 82 // ...read the data into the receive buffer
Nurchu 12:efcfe4c0d9f2 83 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
Nurchu 12:efcfe4c0d9f2 84
Nurchu 12:efcfe4c0d9f2 85 // Display the receive buffer contents via the host serial link
Nurchu 12:efcfe4c0d9f2 86 for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
Nurchu 12:efcfe4c0d9f2 87
Nurchu 12:efcfe4c0d9f2 88 pc.putc( rxData[i] );
drechtmann3 1:fc0a2c17e086 89 }
drechtmann3 1:fc0a2c17e086 90
Nurchu 12:efcfe4c0d9f2 91 // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
Nurchu 12:efcfe4c0d9f2 92 myled3 = !myled3;
Nurchu 12:efcfe4c0d9f2 93 }
Nurchu 12:efcfe4c0d9f2 94 }
drechtmann3 1:fc0a2c17e086 95
Nurchu 12:efcfe4c0d9f2 96 void receive() //most of this function added by david at 6:02pm 4/18/18
Nurchu 12:efcfe4c0d9f2 97 {
drechtmann3 18:e2a8ea6f55d3 98 // float sample;
drechtmann3 18:e2a8ea6f55d3 99 // float average = 0.67/3.3;//initial DC bias level
drechtmann3 18:e2a8ea6f55d3 100 uint8_t spkrarray[29];
Nurchu 12:efcfe4c0d9f2 101 while (Button == 0) {
Nurchu 12:efcfe4c0d9f2 102 if (my_nrf24l01p.readable(0)) {
drechtmann3 18:e2a8ea6f55d3 103 rxBuf.push(spkrarray, 30);
drechtmann3 18:e2a8ea6f55d3 104 spkr.write(spkrarray[1]);
drechtmann3 18:e2a8ea6f55d3 105 // sample = uint8_t (rxData);
drechtmann3 18:e2a8ea6f55d3 106 // average = 0.9999*average + 0.0001*sample; //This is in the mPA demo but I'm not sure how it works -david
drechtmann3 18:e2a8ea6f55d3 107 // speaker = 0.5 +((sample - average)*33.0);
Nurchu 12:efcfe4c0d9f2 108 }
drechtmann3 11:a9f4237eaaa1 109
Nurchu 12:efcfe4c0d9f2 110 }
drechtmann3 13:fbcc71fca474 111 }`
drechtmann3 11:a9f4237eaaa1 112
Nurchu 12:efcfe4c0d9f2 113 void transmit()
Nurchu 12:efcfe4c0d9f2 114 {
Nurchu 12:efcfe4c0d9f2 115 // while (mymycrophone.getData()) {
drechtmann3 10:a8fcfc869fa5 116 // txData[txDataCnt++] = mymicrophone.getData();
drechtmann3 10:a8fcfc869fa5 117 // }
Nurchu 12:efcfe4c0d9f2 118 // txData[txDataCnt++] = ;
Nurchu 12:efcfe4c0d9f2 119 speaker = 0;
Nurchu 12:efcfe4c0d9f2 120 while (Button == 1) {
drechtmann3 13:fbcc71fca474 121 my_nrf24l01P.write(0, micvalue, 30);
drechtmann3 10:a8fcfc869fa5 122 }
Nurchu 12:efcfe4c0d9f2 123 }
Nurchu 12:efcfe4c0d9f2 124
drechtmann3 13:fbcc71fca474 125 void pollmic()
drechtmann3 13:fbcc71fca474 126 {
drechtmann3 13:fbcc71fca474 127 micvalue[micvalcount] = mymicrophone.getData();
drechtmann3 13:fbcc71fca474 128 micvalcount = micvalcount + 1;
drechtmann3 13:fbcc71fca474 129 if (micvalcount > 30); {
drechtmann3 13:fbcc71fca474 130 micvalcount = 0;
drechtmann3 13:fbcc71fca474 131 }
drechtmann3 13:fbcc71fca474 132
drechtmann3 13:fbcc71fca474 133 }
drechtmann3 13:fbcc71fca474 134
Nurchu 12:efcfe4c0d9f2 135 int main()
Nurchu 12:efcfe4c0d9f2 136 {
drechtmann3 11:a9f4237eaaa1 137 Button.mode(PullUp);//added 6:23pm 4/18/18
drechtmann3 13:fbcc71fca474 138 t.attach(&pollmic, 0.0001);
drechtmann3 13:fbcc71fca474 139 t.attach(&receive, 0.0001);
drechtmann3 1:fc0a2c17e086 140 while (1) {
Nurchu 12:efcfe4c0d9f2 141
Nurchu 12:efcfe4c0d9f2 142 }
Nurchu 12:efcfe4c0d9f2 143 }