Coordinator_1

Dependencies:   ESP8266 mbed nRF24L01P

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?

UserRevisionLine numberNew 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 }