Coordinator_1
Dependencies: ESP8266 mbed nRF24L01P
Receiver.cpp@1:7f3a0c145a08, 2016-07-07 (annotated)
- Committer:
- monish
- Date:
- Thu Jul 07 06:53:25 2016 +0000
- Revision:
- 1:7f3a0c145a08
- Parent:
- 0:e246677dfb3b
Updated to phant
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
monish | 0:e246677dfb3b | 1 | /*****Multiceiver wireless network with IoT*****/ |
monish | 1:7f3a0c145a08 | 2 | |
monish | 0:e246677dfb3b | 3 | #include "mbed.h" |
monish | 0:e246677dfb3b | 4 | #include "nRF24L01P.h" |
monish | 0:e246677dfb3b | 5 | #include "ESP8266.h" |
monish | 1:7f3a0c145a08 | 6 | |
monish | 0:e246677dfb3b | 7 | //Serial Transmission |
monish | 0:e246677dfb3b | 8 | Serial pc(USBTX, USBRX); // tx, rx |
monish | 1:7f3a0c145a08 | 9 | |
monish | 0:e246677dfb3b | 10 | //wifi UART port and baud rate |
monish | 0:e246677dfb3b | 11 | ESP8266 wifi(PTE0, PTE1, 115200); |
monish | 1:7f3a0c145a08 | 12 | |
monish | 0:e246677dfb3b | 13 | //nRF module |
monish | 0:e246677dfb3b | 14 | nRF24L01P my_nrf24l01p(PTD2, PTD3, PTD1, PTD0, PTD5, PTD4); // mosi, miso, sck, csn, ce, irq |
monish | 1:7f3a0c145a08 | 15 | |
monish | 0:e246677dfb3b | 16 | //blue for pipe1 and green for pipe0 |
monish | 0:e246677dfb3b | 17 | DigitalOut GreenLED(LED2); |
monish | 0:e246677dfb3b | 18 | DigitalOut RedLED(LED1); |
monish | 1:7f3a0c145a08 | 19 | |
monish | 0:e246677dfb3b | 20 | //buffers for wifi library |
monish | 0:e246677dfb3b | 21 | char snd[255],resp[1000]; |
monish | 0:e246677dfb3b | 22 | char http_cmd[300], comm[300]; |
monish | 1:7f3a0c145a08 | 23 | int timeout = 6000; //timeout for wifi commands |
monish | 1:7f3a0c145a08 | 24 | |
monish | 0:e246677dfb3b | 25 | char count[1]; |
monish | 0:e246677dfb3b | 26 | char RxDataCnt_PIPE0, RxDataCnt_PIPE1; |
monish | 0:e246677dfb3b | 27 | char temp; |
monish | 1:7f3a0c145a08 | 28 | |
monish | 0:e246677dfb3b | 29 | //potvalue and ldrvalue |
monish | 0:e246677dfb3b | 30 | char pot_val, ldr_val; |
monish | 0:e246677dfb3b | 31 | float potval, ldrval; |
monish | 0:e246677dfb3b | 32 | float opv=0; |
monish | 0:e246677dfb3b | 33 | float olv=0; |
monish | 1:7f3a0c145a08 | 34 | |
monish | 0:e246677dfb3b | 35 | //Public and private keys for phant |
monish | 1:7f3a0c145a08 | 36 | char* Public_Key = "wrZ1PpONOpCk1QPM03wki1yDdZXb"; |
monish | 1:7f3a0c145a08 | 37 | char* Private_Key = "OzYl9EOZOEcvPZ3Wbxjvs3A7OpXM"; |
monish | 0:e246677dfb3b | 38 | |
monish | 0:e246677dfb3b | 39 | //SSID and password for connection |
monish | 1:7f3a0c145a08 | 40 | #define SSID "Eduvance_WiFi" |
monish | 1:7f3a0c145a08 | 41 | #define PASS "eduvance" |
monish | 0:e246677dfb3b | 42 | |
monish | 0:e246677dfb3b | 43 | //Remote IP |
monish | 1:7f3a0c145a08 | 44 | #define IP "192.168.0.2" //184.106.153.149-ThingsSpeak IP |
monish | 1:7f3a0c145a08 | 45 | |
monish | 0:e246677dfb3b | 46 | //Wifi init function |
monish | 0:e246677dfb3b | 47 | void wifi_initialize(void){ |
monish | 0:e246677dfb3b | 48 | |
monish | 0:e246677dfb3b | 49 | pc.printf("******** Resetting wifi module ********\r\n"); |
monish | 0:e246677dfb3b | 50 | wifi.Reset(); |
monish | 0:e246677dfb3b | 51 | |
monish | 0:e246677dfb3b | 52 | //wait for 5 seconds for response, else display no response receiveed |
monish | 0:e246677dfb3b | 53 | if (wifi.RcvReply(resp, 5000)) |
monish | 0:e246677dfb3b | 54 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 55 | else |
monish | 0:e246677dfb3b | 56 | pc.printf("No response"); |
monish | 0:e246677dfb3b | 57 | |
monish | 0:e246677dfb3b | 58 | pc.printf("******** Setting Station mode of wifi with AP ********\r\n"); |
monish | 0:e246677dfb3b | 59 | wifi.SetMode(1); // set transparent mode |
monish | 0:e246677dfb3b | 60 | if (wifi.RcvReply(resp, timeout)) //receive a response from ESP |
monish | 0:e246677dfb3b | 61 | pc.printf("%s",resp); //Print the response onscreen |
monish | 0:e246677dfb3b | 62 | else |
monish | 0:e246677dfb3b | 63 | pc.printf("No response while setting mode. \r\n"); |
monish | 0:e246677dfb3b | 64 | |
monish | 0:e246677dfb3b | 65 | pc.printf("******** Joining network with SSID and PASS ********\r\n"); |
monish | 0:e246677dfb3b | 66 | wifi.Join(SSID, PASS); |
monish | 0:e246677dfb3b | 67 | if (wifi.RcvReply(resp, timeout)) |
monish | 0:e246677dfb3b | 68 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 69 | else |
monish | 0:e246677dfb3b | 70 | pc.printf("No response while connecting to network \r\n"); |
monish | 0:e246677dfb3b | 71 | |
monish | 0:e246677dfb3b | 72 | pc.printf("******** Getting IP and MAC of module ********\r\n"); |
monish | 0:e246677dfb3b | 73 | wifi.GetIP(resp); |
monish | 0:e246677dfb3b | 74 | if (wifi.RcvReply(resp, timeout)) |
monish | 0:e246677dfb3b | 75 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 76 | else |
monish | 0:e246677dfb3b | 77 | pc.printf("No response while getting IP \r\n"); |
monish | 0:e246677dfb3b | 78 | |
monish | 0:e246677dfb3b | 79 | pc.printf("******** Setting WIFI UART passthrough ********\r\n"); |
monish | 0:e246677dfb3b | 80 | wifi.setTransparent(); |
monish | 0:e246677dfb3b | 81 | if (wifi.RcvReply(resp, timeout)) |
monish | 0:e246677dfb3b | 82 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 83 | else |
monish | 0:e246677dfb3b | 84 | pc.printf("No response while setting wifi passthrough. \r\n"); |
monish | 0:e246677dfb3b | 85 | wait(1); |
monish | 0:e246677dfb3b | 86 | |
monish | 0:e246677dfb3b | 87 | pc.printf("******** Setting single connection mode ********\r\n"); |
monish | 0:e246677dfb3b | 88 | wifi.SetSingle(); |
monish | 0:e246677dfb3b | 89 | wifi.RcvReply(resp, timeout); |
monish | 0:e246677dfb3b | 90 | if (wifi.RcvReply(resp, timeout)) |
monish | 0:e246677dfb3b | 91 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 92 | else |
monish | 0:e246677dfb3b | 93 | pc.printf("No response while setting single connection \r\n"); |
monish | 0:e246677dfb3b | 94 | wait(1); |
monish | 0:e246677dfb3b | 95 | } |
monish | 1:7f3a0c145a08 | 96 | |
monish | 0:e246677dfb3b | 97 | void wifi_send(void){ |
monish | 0:e246677dfb3b | 98 | |
monish | 0:e246677dfb3b | 99 | pc.printf("******** Starting TCP connection on IP and port ********\r\n"); |
monish | 1:7f3a0c145a08 | 100 | wifi.startTCPConn(IP, 8080); //cipstart |
monish | 0:e246677dfb3b | 101 | wifi.RcvReply(resp, timeout); |
monish | 0:e246677dfb3b | 102 | if (wifi.RcvReply(resp, timeout)) |
monish | 0:e246677dfb3b | 103 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 104 | else |
monish | 0:e246677dfb3b | 105 | pc.printf("No response while starting TCP connection \r\n"); |
monish | 0:e246677dfb3b | 106 | wait(1); |
monish | 0:e246677dfb3b | 107 | |
monish | 0:e246677dfb3b | 108 | //create link |
monish | 1:7f3a0c145a08 | 109 | sprintf(http_cmd,"/input/%s?private_key=%s&ldr=%0.2f&pot=%0.2f",Public_Key,Private_Key,ldrval,potval); |
monish | 1:7f3a0c145a08 | 110 | //sprintf(http_cmd,"/input/%s?private_key=%s&ldr=%.2f&pot=%.2f",Public_Key,Private_Key,ldrval,potval); |
monish | 0:e246677dfb3b | 111 | pc.printf(http_cmd); |
monish | 0:e246677dfb3b | 112 | |
monish | 0:e246677dfb3b | 113 | pc.printf("******** Sending URL to wifi ********\r\n"); |
monish | 0:e246677dfb3b | 114 | wifi.sendURL(http_cmd, comm); //cipsend and get command |
monish | 0:e246677dfb3b | 115 | if (wifi.RcvReply(resp, timeout)) |
monish | 0:e246677dfb3b | 116 | pc.printf("%s",resp); |
monish | 0:e246677dfb3b | 117 | else |
monish | 0:e246677dfb3b | 118 | pc.printf("No response while sending URL \r\n"); |
monish | 0:e246677dfb3b | 119 | |
monish | 0:e246677dfb3b | 120 | } |
monish | 0:e246677dfb3b | 121 | |
monish | 0:e246677dfb3b | 122 | int main() { |
monish | 0:e246677dfb3b | 123 | |
monish | 0:e246677dfb3b | 124 | |
monish | 0:e246677dfb3b | 125 | //specifying address same as transmitter for pipe0 and pipe1 |
monish | 0:e246677dfb3b | 126 | long long RxAddress_PIPE1 = 0xE2E2E2E2E2; |
monish | 0:e246677dfb3b | 127 | long long RxAddress_PIPE0 = 0xC2C2C2C2C2; |
monish | 0:e246677dfb3b | 128 | |
monish | 0:e246677dfb3b | 129 | my_nrf24l01p.powerUp(); |
monish | 0:e246677dfb3b | 130 | my_nrf24l01p.setRfFrequency(2475); |
monish | 0:e246677dfb3b | 131 | |
monish | 0:e246677dfb3b | 132 | //set rx address with default address and for specified pipe |
monish | 0:e246677dfb3b | 133 | my_nrf24l01p.setRxAddress(RxAddress_PIPE1, DEFAULT_NRF24L01P_ADDRESS_WIDTH, NRF24L01P_PIPE_P1); |
monish | 0:e246677dfb3b | 134 | my_nrf24l01p.setRxAddress(RxAddress_PIPE0, DEFAULT_NRF24L01P_ADDRESS_WIDTH, NRF24L01P_PIPE_P0); |
monish | 0:e246677dfb3b | 135 | |
monish | 0:e246677dfb3b | 136 | // Display the (default) setup of the nRF24L01+ chip |
monish | 0:e246677dfb3b | 137 | pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() ); |
monish | 0:e246677dfb3b | 138 | pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() ); |
monish | 0:e246677dfb3b | 139 | pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() ); |
monish | 0:e246677dfb3b | 140 | |
monish | 0:e246677dfb3b | 141 | //display rx address for both pipes |
monish | 0:e246677dfb3b | 142 | pc.printf( "nRF24L01+ RX Address - PIPE0 : 0x%010llX\r\n", my_nrf24l01p.getRxAddress(NRF24L01P_PIPE_P0) ); |
monish | 0:e246677dfb3b | 143 | pc.printf( "nRF24L01+ RX Address - PIPE1 : 0x%010llX\r\n", my_nrf24l01p.getRxAddress(NRF24L01P_PIPE_P1) ); |
monish | 0:e246677dfb3b | 144 | pc.printf( "Wireless Sensor Network - Multiceiver\r\n" ); |
monish | 0:e246677dfb3b | 145 | |
monish | 0:e246677dfb3b | 146 | RxDataCnt_PIPE0 = 1; |
monish | 0:e246677dfb3b | 147 | RxDataCnt_PIPE1 = 1; |
monish | 0:e246677dfb3b | 148 | |
monish | 0:e246677dfb3b | 149 | //set transfer size explicitly for both pipes |
monish | 0:e246677dfb3b | 150 | my_nrf24l01p.setTransferSize(RxDataCnt_PIPE1, NRF24L01P_PIPE_P1); |
monish | 0:e246677dfb3b | 151 | my_nrf24l01p.setTransferSize(RxDataCnt_PIPE0, NRF24L01P_PIPE_P0); |
monish | 0:e246677dfb3b | 152 | |
monish | 0:e246677dfb3b | 153 | my_nrf24l01p.setReceiveMode(); |
monish | 0:e246677dfb3b | 154 | my_nrf24l01p.enable(); |
monish | 0:e246677dfb3b | 155 | |
monish | 0:e246677dfb3b | 156 | wifi_initialize(); |
monish | 0:e246677dfb3b | 157 | |
monish | 0:e246677dfb3b | 158 | while (1) { |
monish | 0:e246677dfb3b | 159 | |
monish | 0:e246677dfb3b | 160 | //check if data is available in pipe0 |
monish | 0:e246677dfb3b | 161 | if ( my_nrf24l01p.readable(NRF24L01P_PIPE_P0) ) { |
monish | 0:e246677dfb3b | 162 | |
monish | 0:e246677dfb3b | 163 | // ...read the data into the receive buffer |
monish | 0:e246677dfb3b | 164 | temp = my_nrf24l01p.read( NRF24L01P_PIPE_P0, count, RxDataCnt_PIPE0 ); |
monish | 0:e246677dfb3b | 165 | |
monish | 0:e246677dfb3b | 166 | pot_val = count[0]; |
monish | 1:7f3a0c145a08 | 167 | potval=pot_val; |
monish | 0:e246677dfb3b | 168 | |
monish | 0:e246677dfb3b | 169 | pc.printf("Received: %d bytes from PIPE0; POT=%d\r\n",temp, potval); |
monish | 0:e246677dfb3b | 170 | |
monish | 0:e246677dfb3b | 171 | // Toggle LED2 (to help debug nRF24L01+ -> Host communication) |
monish | 0:e246677dfb3b | 172 | GreenLED = !GreenLED; |
monish | 0:e246677dfb3b | 173 | } |
monish | 0:e246677dfb3b | 174 | |
monish | 0:e246677dfb3b | 175 | //check if data is there in pipe1 |
monish | 0:e246677dfb3b | 176 | if ( my_nrf24l01p.readable(NRF24L01P_PIPE_P1) ) { |
monish | 0:e246677dfb3b | 177 | |
monish | 0:e246677dfb3b | 178 | // ...read the data into the receive buffer |
monish | 0:e246677dfb3b | 179 | temp = my_nrf24l01p.read( NRF24L01P_PIPE_P1, count, RxDataCnt_PIPE1 ); |
monish | 0:e246677dfb3b | 180 | |
monish | 0:e246677dfb3b | 181 | ldr_val = count[0]; |
monish | 1:7f3a0c145a08 | 182 | ldrval=ldr_val; |
monish | 0:e246677dfb3b | 183 | pc.printf("Received: %d bytes from PIPE1; LDR=%d\r\n",temp, ldrval); |
monish | 0:e246677dfb3b | 184 | |
monish | 0:e246677dfb3b | 185 | // Toggle LED2 (to help debug nRF24L01+ -> Host communication) |
monish | 0:e246677dfb3b | 186 | RedLED = !RedLED; |
monish | 0:e246677dfb3b | 187 | } |
monish | 0:e246677dfb3b | 188 | if(olv!=ldrval || opv!=potval) |
monish | 0:e246677dfb3b | 189 | { |
monish | 0:e246677dfb3b | 190 | wifi_send(); |
monish | 0:e246677dfb3b | 191 | } |
monish | 0:e246677dfb3b | 192 | olv=ldrval; |
monish | 0:e246677dfb3b | 193 | opv=potval; |
monish | 0:e246677dfb3b | 194 | } |
monish | 0:e246677dfb3b | 195 | } |