Ammeter_Voltmeter_PIR_Motion_Sensor_ESP8266_Finger_print_DHT_Thermocouple_light_sensor_combined_code

Dependencies:   DHT ESP8266 GT511C3 mbed

Committer:
agaikwad
Date:
Fri Apr 28 15:47:00 2017 +0000
Revision:
2:de62e3947c87
Parent:
1:8384e8b0fc22
Updated comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
agaikwad 1:8384e8b0fc22 1
agaikwad 1:8384e8b0fc22 2 #include "mbed.h"
agaikwad 1:8384e8b0fc22 3 #include "ESP8266.h" // Include header file from Author: Antonio Quevedo
agaikwad 1:8384e8b0fc22 4 #include "math.h"
agaikwad 1:8384e8b0fc22 5 #include "DHT.h"
agaikwad 1:8384e8b0fc22 6 #include "GT511C3.hpp"
agaikwad 1:8384e8b0fc22 7 #include <string>
agaikwad 1:8384e8b0fc22 8
agaikwad 1:8384e8b0fc22 9 #define APIKEY JJAOBK32WOINKT00 //Put "Write key" of your channel in thingspeak.com
agaikwad 1:8384e8b0fc22 10 #define IP "184.106.153.149" // IP Address of "api.thingspeak.com\"
agaikwad 1:8384e8b0fc22 11 #define WIFI_SSID "Redmi"
agaikwad 1:8384e8b0fc22 12 #define WIFI_PASS "akash12345"
agaikwad 1:8384e8b0fc22 13 #define FPS_ENROLL_PASS "Rags\n"
agaikwad 1:8384e8b0fc22 14
agaikwad 1:8384e8b0fc22 15 Serial FRDM_UART_Debug(USBTX,USBRX);
agaikwad 1:8384e8b0fc22 16
agaikwad 1:8384e8b0fc22 17 ESP8266 ESP_8266_UART(PTC15, PTC14, 115200); // UART for ESP8266 Wifi module
agaikwad 1:8384e8b0fc22 18 // Options are TX-RX - PTB11 - PTB10 , PTC17 - PTC16 , PTC15 - PTC14
agaikwad 1:8384e8b0fc22 19
agaikwad 1:8384e8b0fc22 20 SPI SPI_Bus(PTD2,PTD3,PTD1); // (MOSI MISO CLK)setup SPI interface
agaikwad 1:8384e8b0fc22 21 DigitalOut SPI_CS_AMM(PTA2);
agaikwad 1:8384e8b0fc22 22 DigitalOut SPI_CS_VOLT(PTB9);
agaikwad 1:8384e8b0fc22 23
agaikwad 1:8384e8b0fc22 24 I2C I2C_Bus(PTE25,PTE24);
agaikwad 1:8384e8b0fc22 25
agaikwad 1:8384e8b0fc22 26 AnalogIn AN_Thermo(PTB2); // Thermocouple Analog Input
agaikwad 1:8384e8b0fc22 27
agaikwad 1:8384e8b0fc22 28 DigitalIn DG_Motion(PTC2); // Motion module Digital Input
agaikwad 1:8384e8b0fc22 29
agaikwad 1:8384e8b0fc22 30 DHT DHT_Temp_Hum(PTC4,DHT22); //DHT Sensor
agaikwad 1:8384e8b0fc22 31
agaikwad 1:8384e8b0fc22 32 GT511C3 FPS(PTC17, PTC16);
agaikwad 1:8384e8b0fc22 33
agaikwad 1:8384e8b0fc22 34 const int Light_I2C_Addr = 0x88;
agaikwad 1:8384e8b0fc22 35
agaikwad 1:8384e8b0fc22 36 char ESP_8266_CMD_Send[255],ESP_8266_CMD_Recv[1000]; //ESP_8266_CMD_Send = string used to send command to ESP8266 & ESP_8266_CMD_Recv = string used to receive response from ESP8266
agaikwad 1:8384e8b0fc22 37
agaikwad 1:8384e8b0fc22 38 float Amm_Out = 0;
agaikwad 1:8384e8b0fc22 39 float Volt_Out = 0;
agaikwad 1:8384e8b0fc22 40 float Light_Out = 0;
agaikwad 1:8384e8b0fc22 41 float Thermo_Out = 0;
agaikwad 1:8384e8b0fc22 42 float Temp_Out = 0;
agaikwad 1:8384e8b0fc22 43 float Hum_Out = 0;
agaikwad 1:8384e8b0fc22 44 int Motion_Out = 0;
agaikwad 1:8384e8b0fc22 45 int Finger_Out = 0;
agaikwad 1:8384e8b0fc22 46 float Pres_Out = 0;
agaikwad 1:8384e8b0fc22 47 bool FPS_Auth = false;
agaikwad 1:8384e8b0fc22 48
agaikwad 1:8384e8b0fc22 49
agaikwad 1:8384e8b0fc22 50 void ESP_8266_Init(void); // Function used to initialize ESP8266 wifi module
agaikwad 1:8384e8b0fc22 51 void ESP_8266_TX_Data(void); // Function used to connect with thingspeak.com and update channel using ESP8266 wifi module
agaikwad 1:8384e8b0fc22 52 void FPS_Func(void);
agaikwad 1:8384e8b0fc22 53 int FPS_Wait_Time(int press,bool Det_Mot, unsigned long *ms_time);
agaikwad 1:8384e8b0fc22 54
agaikwad 1:8384e8b0fc22 55 int main()
agaikwad 1:8384e8b0fc22 56 {
agaikwad 1:8384e8b0fc22 57 int SPI_High_byte = 0;
agaikwad 1:8384e8b0fc22 58 int SPI_Low_byte = 0;
agaikwad 1:8384e8b0fc22 59 float Temp_f_1 = 0.00;
agaikwad 1:8384e8b0fc22 60 float Temp_f_2 = 0.00;
agaikwad 1:8384e8b0fc22 61 int Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 62 int Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 63 int Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 64 int Temp_i_4 = 0;
agaikwad 1:8384e8b0fc22 65 char I2C_Cmd[3];
agaikwad 1:8384e8b0fc22 66 int loop_count = 0;
agaikwad 1:8384e8b0fc22 67 int FPS_Ret = 0;
agaikwad 1:8384e8b0fc22 68 int FPS_Attempt = 1;
agaikwad 1:8384e8b0fc22 69 int FPS_Enroll_ID = 0;
agaikwad 1:8384e8b0fc22 70 unsigned long FPS_Param = 0;
agaikwad 1:8384e8b0fc22 71 unsigned short FPS_Resp = 0;
agaikwad 1:8384e8b0fc22 72 char FPS_Enroll_Pass[20];
agaikwad 1:8384e8b0fc22 73 unsigned long FPS_Delay = 0;
agaikwad 1:8384e8b0fc22 74
agaikwad 1:8384e8b0fc22 75 FRDM_UART_Debug.baud(115200); // Baud rate used for communicating with Tera-term on PC
agaikwad 1:8384e8b0fc22 76
agaikwad 1:8384e8b0fc22 77 ESP_8266_Init();
agaikwad 1:8384e8b0fc22 78
agaikwad 1:8384e8b0fc22 79 SPI_Bus.format(8,0);
agaikwad 1:8384e8b0fc22 80 SPI_Bus.frequency(1000000);
agaikwad 1:8384e8b0fc22 81
agaikwad 1:8384e8b0fc22 82 I2C_Bus.frequency(100000); // set required i2c frequency
agaikwad 1:8384e8b0fc22 83
agaikwad 1:8384e8b0fc22 84 FPS_Ret = FPS.Open();
agaikwad 1:8384e8b0fc22 85 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 86 {
agaikwad 1:8384e8b0fc22 87 FRDM_UART_Debug.printf("FPS NACK Open\r\n");
agaikwad 1:8384e8b0fc22 88 }
agaikwad 1:8384e8b0fc22 89 else
agaikwad 1:8384e8b0fc22 90 {
agaikwad 1:8384e8b0fc22 91 FRDM_UART_Debug.printf("FPS Init\r\n");
agaikwad 1:8384e8b0fc22 92 FRDM_UART_Debug.printf("FPS F/W = %d , ISO_Size = %d , Serial Num = %s\r\n",FPS.FirmwareVersion,FPS.IsoAreaMaxSize,FPS.DeviceSerialNumber);
agaikwad 1:8384e8b0fc22 93 }
agaikwad 1:8384e8b0fc22 94
agaikwad 1:8384e8b0fc22 95 FPS_Ret = FPS.CmosLed(1);
agaikwad 1:8384e8b0fc22 96 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 97 {
agaikwad 1:8384e8b0fc22 98 FRDM_UART_Debug.printf("FPS NACK LED Set\r\n");
agaikwad 1:8384e8b0fc22 99 }
agaikwad 1:8384e8b0fc22 100
agaikwad 1:8384e8b0fc22 101 wait(1);
agaikwad 1:8384e8b0fc22 102
agaikwad 1:8384e8b0fc22 103 if(DG_Motion == 1)
agaikwad 1:8384e8b0fc22 104 {
agaikwad 1:8384e8b0fc22 105 FRDM_UART_Debug.printf("Motion detected, press Finger within 5 seconds to Start\r\n");
agaikwad 1:8384e8b0fc22 106
agaikwad 1:8384e8b0fc22 107 FPS_Delay = 5000;
agaikwad 1:8384e8b0fc22 108 FPS_Ret = FPS_Wait_Time(1,false,&FPS_Delay);
agaikwad 1:8384e8b0fc22 109 if(FPS_Ret == 1)
agaikwad 1:8384e8b0fc22 110 {
agaikwad 1:8384e8b0fc22 111 FPS_Func();
agaikwad 1:8384e8b0fc22 112 }
agaikwad 1:8384e8b0fc22 113 }
agaikwad 1:8384e8b0fc22 114 FRDM_UART_Debug.printf("Start sampling data\r\n"); // Starting point
agaikwad 1:8384e8b0fc22 115
agaikwad 1:8384e8b0fc22 116 while (1)
agaikwad 1:8384e8b0fc22 117 {
agaikwad 1:8384e8b0fc22 118 Amm_Out = 0;
agaikwad 1:8384e8b0fc22 119 Volt_Out = 0;
agaikwad 1:8384e8b0fc22 120 Light_Out = 0;
agaikwad 1:8384e8b0fc22 121 Thermo_Out = 0;
agaikwad 1:8384e8b0fc22 122 Temp_Out = 0;
agaikwad 1:8384e8b0fc22 123 Hum_Out = 0;
agaikwad 1:8384e8b0fc22 124 Motion_Out = 0;
agaikwad 1:8384e8b0fc22 125
agaikwad 1:8384e8b0fc22 126 // Copy Motion values
agaikwad 1:8384e8b0fc22 127
agaikwad 1:8384e8b0fc22 128 Motion_Out = DG_Motion;
agaikwad 1:8384e8b0fc22 129
agaikwad 1:8384e8b0fc22 130 // Ammeter
agaikwad 1:8384e8b0fc22 131
agaikwad 1:8384e8b0fc22 132 SPI_High_byte = 0;
agaikwad 1:8384e8b0fc22 133 SPI_Low_byte = 0;
agaikwad 1:8384e8b0fc22 134 Temp_f_1 = 0.00;
agaikwad 1:8384e8b0fc22 135 Temp_f_2 = 0.00;
agaikwad 1:8384e8b0fc22 136 Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 137 Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 138 Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 139 I2C_Cmd[0] = 0;
agaikwad 1:8384e8b0fc22 140 I2C_Cmd[1] = 0;
agaikwad 1:8384e8b0fc22 141 I2C_Cmd[2] = 0;
agaikwad 1:8384e8b0fc22 142 loop_count = 0;
agaikwad 1:8384e8b0fc22 143
agaikwad 1:8384e8b0fc22 144 SPI_CS_AMM = 0;
agaikwad 1:8384e8b0fc22 145
agaikwad 1:8384e8b0fc22 146 SPI_High_byte = SPI_Bus.write(0);
agaikwad 1:8384e8b0fc22 147 SPI_Low_byte = SPI_Bus.write(0);
agaikwad 1:8384e8b0fc22 148
agaikwad 1:8384e8b0fc22 149 SPI_CS_AMM = 1;
agaikwad 1:8384e8b0fc22 150
agaikwad 1:8384e8b0fc22 151 Temp_f_1 = (( SPI_High_byte & 0x1F ) << 7 ) | (( SPI_Low_byte >> 1 ));
agaikwad 1:8384e8b0fc22 152
agaikwad 1:8384e8b0fc22 153 Temp_f_2= (float)(( Temp_f_1 * 1.00 ) / 4096.00 ); // Converting to volts
agaikwad 1:8384e8b0fc22 154
agaikwad 1:8384e8b0fc22 155 Amm_Out = (float)(( Temp_f_2 - 0.50 ) * 1000.00);
agaikwad 1:8384e8b0fc22 156
agaikwad 1:8384e8b0fc22 157 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 158 FRDM_UART_Debug.printf("Current value = %f mA\r\n", Amm_Out);
agaikwad 1:8384e8b0fc22 159 wait_ms(100);
agaikwad 1:8384e8b0fc22 160
agaikwad 1:8384e8b0fc22 161 // Voltmeter
agaikwad 1:8384e8b0fc22 162
agaikwad 1:8384e8b0fc22 163 SPI_High_byte = 0;
agaikwad 1:8384e8b0fc22 164 SPI_Low_byte = 0;
agaikwad 1:8384e8b0fc22 165 Temp_f_1 = 0.00;
agaikwad 1:8384e8b0fc22 166 Temp_f_2 = 0.00;
agaikwad 1:8384e8b0fc22 167 Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 168 Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 169 Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 170 I2C_Cmd[0] = 0;
agaikwad 1:8384e8b0fc22 171 I2C_Cmd[1] = 0;
agaikwad 1:8384e8b0fc22 172 I2C_Cmd[2] = 0;
agaikwad 1:8384e8b0fc22 173 loop_count = 0;
agaikwad 1:8384e8b0fc22 174
agaikwad 1:8384e8b0fc22 175 SPI_CS_VOLT = 0;
agaikwad 1:8384e8b0fc22 176
agaikwad 1:8384e8b0fc22 177 SPI_High_byte = SPI_Bus.write(0);
agaikwad 1:8384e8b0fc22 178 SPI_Low_byte = SPI_Bus.write(0);
agaikwad 1:8384e8b0fc22 179
agaikwad 1:8384e8b0fc22 180 SPI_CS_VOLT = 1;
agaikwad 1:8384e8b0fc22 181
agaikwad 1:8384e8b0fc22 182 Temp_f_1 = ((SPI_High_byte & 0x1f) << 7) | ((SPI_Low_byte >> 1));
agaikwad 1:8384e8b0fc22 183
agaikwad 1:8384e8b0fc22 184 Temp_f_2 = (float)((Temp_f_1 * 33) / 4096); // show value in volts.
agaikwad 1:8384e8b0fc22 185
agaikwad 1:8384e8b0fc22 186 Volt_Out = (float)(Temp_f_2 - 16.5);
agaikwad 1:8384e8b0fc22 187
agaikwad 1:8384e8b0fc22 188 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 189 FRDM_UART_Debug.printf("Voltage value = %f V\r\n", Volt_Out);
agaikwad 1:8384e8b0fc22 190 wait_ms(100);
agaikwad 1:8384e8b0fc22 191
agaikwad 1:8384e8b0fc22 192 //ambient light
agaikwad 1:8384e8b0fc22 193
agaikwad 1:8384e8b0fc22 194 SPI_High_byte = 0;
agaikwad 1:8384e8b0fc22 195 SPI_Low_byte = 0;
agaikwad 1:8384e8b0fc22 196 Temp_f_1 = 0.00;
agaikwad 1:8384e8b0fc22 197 Temp_f_2 = 0.00;
agaikwad 1:8384e8b0fc22 198 Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 199 Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 200 Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 201 I2C_Cmd[0] = 0;
agaikwad 1:8384e8b0fc22 202 I2C_Cmd[1] = 0;
agaikwad 1:8384e8b0fc22 203 I2C_Cmd[2] = 0;
agaikwad 1:8384e8b0fc22 204 loop_count = 0;
agaikwad 1:8384e8b0fc22 205
agaikwad 1:8384e8b0fc22 206 I2C_Cmd[0] = 0x01; //configuration register
agaikwad 1:8384e8b0fc22 207 I2C_Cmd[1]= 0xCC; //configuration data
agaikwad 1:8384e8b0fc22 208 I2C_Cmd[2]= 0x01; //configuration data
agaikwad 1:8384e8b0fc22 209
agaikwad 1:8384e8b0fc22 210 I2C_Bus.write(Light_I2C_Addr, I2C_Cmd, 3);
agaikwad 1:8384e8b0fc22 211
agaikwad 1:8384e8b0fc22 212 I2C_Cmd[0] = 0x00; // data register
agaikwad 1:8384e8b0fc22 213
agaikwad 1:8384e8b0fc22 214 I2C_Bus.write(Light_I2C_Addr, I2C_Cmd, 1);
agaikwad 1:8384e8b0fc22 215
agaikwad 1:8384e8b0fc22 216 wait_ms(100);
agaikwad 1:8384e8b0fc22 217
agaikwad 1:8384e8b0fc22 218 I2C_Bus.read(Light_I2C_Addr, I2C_Cmd, 2);
agaikwad 1:8384e8b0fc22 219
agaikwad 1:8384e8b0fc22 220 Temp_i_1= I2C_Cmd[0]>>4;
agaikwad 1:8384e8b0fc22 221 Temp_i_2= (I2C_Cmd[0]-(Temp_i_1<<4))*256+I2C_Cmd[1];
agaikwad 1:8384e8b0fc22 222
agaikwad 1:8384e8b0fc22 223 for(loop_count = 0,Temp_i_3 = 1 ; loop_count < Temp_i_1 ; Temp_i_3 = Temp_i_3 * 2,loop_count++);
agaikwad 1:8384e8b0fc22 224
agaikwad 1:8384e8b0fc22 225 Light_Out= (Temp_i_2 * Temp_i_3) / 100;
agaikwad 1:8384e8b0fc22 226
agaikwad 1:8384e8b0fc22 227 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 228 FRDM_UART_Debug.printf("Lux = %.2f\n\r", Light_Out);
agaikwad 1:8384e8b0fc22 229 wait_ms(100);
agaikwad 1:8384e8b0fc22 230
agaikwad 1:8384e8b0fc22 231 // Thermocouple
agaikwad 1:8384e8b0fc22 232
agaikwad 1:8384e8b0fc22 233 SPI_High_byte = 0;
agaikwad 1:8384e8b0fc22 234 SPI_Low_byte = 0;
agaikwad 1:8384e8b0fc22 235 Temp_f_1 = 0.00;
agaikwad 1:8384e8b0fc22 236 Temp_f_2 = 0.00;
agaikwad 1:8384e8b0fc22 237 Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 238 Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 239 Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 240 I2C_Cmd[0] = 0;
agaikwad 1:8384e8b0fc22 241 I2C_Cmd[1] = 0;
agaikwad 1:8384e8b0fc22 242 I2C_Cmd[2] = 0;
agaikwad 1:8384e8b0fc22 243 loop_count = 0;
agaikwad 1:8384e8b0fc22 244
agaikwad 1:8384e8b0fc22 245 Temp_f_1 = AN_Thermo.read_u16();
agaikwad 1:8384e8b0fc22 246
agaikwad 1:8384e8b0fc22 247 Temp_f_1 = (( Temp_f_1 / 65536 ) * 330);
agaikwad 1:8384e8b0fc22 248
agaikwad 1:8384e8b0fc22 249 Thermo_Out = Temp_f_1;
agaikwad 1:8384e8b0fc22 250
agaikwad 1:8384e8b0fc22 251 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 252 FRDM_UART_Debug.printf("Thermocouple volt diff = %.2f C\r\n",Thermo_Out);
agaikwad 1:8384e8b0fc22 253 wait_ms(100);
agaikwad 1:8384e8b0fc22 254
agaikwad 1:8384e8b0fc22 255 // Temp and Humidity
agaikwad 1:8384e8b0fc22 256
agaikwad 1:8384e8b0fc22 257 SPI_High_byte = 0;
agaikwad 1:8384e8b0fc22 258 SPI_Low_byte = 0;
agaikwad 1:8384e8b0fc22 259 Temp_f_1 = 0.00;
agaikwad 1:8384e8b0fc22 260 Temp_f_2 = 0.00;
agaikwad 1:8384e8b0fc22 261 Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 262 Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 263 Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 264 I2C_Cmd[0] = 0;
agaikwad 1:8384e8b0fc22 265 I2C_Cmd[1] = 0;
agaikwad 1:8384e8b0fc22 266 I2C_Cmd[2] = 0;
agaikwad 1:8384e8b0fc22 267 loop_count = 0;
agaikwad 1:8384e8b0fc22 268
agaikwad 1:8384e8b0fc22 269 Temp_i_1 = DHT_Temp_Hum.readData();
agaikwad 1:8384e8b0fc22 270 if (Temp_i_1 == 0) // Read success
agaikwad 1:8384e8b0fc22 271 {
agaikwad 1:8384e8b0fc22 272 //wait_ms(1000);
agaikwad 1:8384e8b0fc22 273 Temp_f_1 = DHT_Temp_Hum.ReadTemperature(FARENHEIT);
agaikwad 1:8384e8b0fc22 274 Temp_f_2 = DHT_Temp_Hum.ReadHumidity();
agaikwad 1:8384e8b0fc22 275 }
agaikwad 1:8384e8b0fc22 276 else // Read failure
agaikwad 1:8384e8b0fc22 277 {
agaikwad 1:8384e8b0fc22 278 Temp_f_1 = 0;
agaikwad 1:8384e8b0fc22 279 Temp_f_2 = 0;
agaikwad 1:8384e8b0fc22 280 }
agaikwad 1:8384e8b0fc22 281
agaikwad 1:8384e8b0fc22 282 Temp_Out = Temp_f_1;
agaikwad 1:8384e8b0fc22 283 Hum_Out = Temp_f_2;
agaikwad 1:8384e8b0fc22 284
agaikwad 1:8384e8b0fc22 285 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 286 FRDM_UART_Debug.printf("Temperature = %4.2f F , Humidity = %4.2f \r\n",Temp_Out,Hum_Out);
agaikwad 1:8384e8b0fc22 287 wait_ms(100);
agaikwad 1:8384e8b0fc22 288
agaikwad 1:8384e8b0fc22 289 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 290 FRDM_UART_Debug.printf("Sending Data to Server\r\n");
agaikwad 1:8384e8b0fc22 291 ESP_8266_TX_Data();
agaikwad 1:8384e8b0fc22 292
agaikwad 1:8384e8b0fc22 293 FPS_Delay = 15000;
agaikwad 1:8384e8b0fc22 294
agaikwad 1:8384e8b0fc22 295 FPS_Check_Again:
agaikwad 1:8384e8b0fc22 296 FPS_Ret = FPS_Wait_Time(1,true,&FPS_Delay);
agaikwad 1:8384e8b0fc22 297 if(FPS_Ret == 1)
agaikwad 1:8384e8b0fc22 298 {
agaikwad 2:de62e3947c87 299 FRDM_UART_Debug.printf("Motion detected, press Finger within %d seconds to Authenticate and display data\r\n",FPS_Delay/1000);
agaikwad 1:8384e8b0fc22 300 FPS_Ret = FPS_Wait_Time(1,false,&FPS_Delay);
agaikwad 1:8384e8b0fc22 301 if(FPS_Ret == 1)
agaikwad 1:8384e8b0fc22 302 {
agaikwad 1:8384e8b0fc22 303 FPS_Func();
agaikwad 1:8384e8b0fc22 304 goto FPS_Check_Again;
agaikwad 1:8384e8b0fc22 305 }
agaikwad 1:8384e8b0fc22 306 else if(FPS_Delay > 99)
agaikwad 1:8384e8b0fc22 307 {
agaikwad 1:8384e8b0fc22 308 FRDM_UART_Debug.printf("Remaining delay is %d\r\n",FPS_Delay);
agaikwad 1:8384e8b0fc22 309 goto FPS_Check_Again;
agaikwad 1:8384e8b0fc22 310 }
agaikwad 1:8384e8b0fc22 311 }
agaikwad 1:8384e8b0fc22 312 else if(FPS_Delay > 99)
agaikwad 1:8384e8b0fc22 313 {
agaikwad 1:8384e8b0fc22 314 FRDM_UART_Debug.printf("Remaining delay is %d\r\n",FPS_Delay);
agaikwad 1:8384e8b0fc22 315 goto FPS_Check_Again;
agaikwad 1:8384e8b0fc22 316 }
agaikwad 1:8384e8b0fc22 317
agaikwad 1:8384e8b0fc22 318 //wait(15);
agaikwad 1:8384e8b0fc22 319
agaikwad 1:8384e8b0fc22 320 }
agaikwad 1:8384e8b0fc22 321 }
agaikwad 1:8384e8b0fc22 322
agaikwad 1:8384e8b0fc22 323 int FPS_Wait_Time(int press,bool Det_Mot, unsigned long *ms_time)
agaikwad 1:8384e8b0fc22 324 {
agaikwad 1:8384e8b0fc22 325 for(;*ms_time>99;)
agaikwad 1:8384e8b0fc22 326 {
agaikwad 1:8384e8b0fc22 327 if((FPS.IsPress() == press) || ((Det_Mot == true) && (DG_Motion == 1)))
agaikwad 1:8384e8b0fc22 328 return 1;
agaikwad 1:8384e8b0fc22 329 else
agaikwad 1:8384e8b0fc22 330 {
agaikwad 1:8384e8b0fc22 331 *ms_time-=100;
agaikwad 1:8384e8b0fc22 332 wait_ms(100);
agaikwad 1:8384e8b0fc22 333 }
agaikwad 1:8384e8b0fc22 334 }
agaikwad 1:8384e8b0fc22 335 return 0;
agaikwad 1:8384e8b0fc22 336 /*
agaikwad 1:8384e8b0fc22 337 for(;(FPS.IsPress() != press);wait_ms(100),*ms_time-=100);
agaikwad 1:8384e8b0fc22 338 if(*ms_time >= 99)
agaikwad 1:8384e8b0fc22 339 return 1;
agaikwad 1:8384e8b0fc22 340 else
agaikwad 1:8384e8b0fc22 341 return 0;
agaikwad 1:8384e8b0fc22 342 */
agaikwad 1:8384e8b0fc22 343 }
agaikwad 1:8384e8b0fc22 344
agaikwad 1:8384e8b0fc22 345 void FPS_Func(void)
agaikwad 1:8384e8b0fc22 346 {
agaikwad 1:8384e8b0fc22 347 int Temp_i_1 = 0;
agaikwad 1:8384e8b0fc22 348 int Temp_i_2 = 0;
agaikwad 1:8384e8b0fc22 349 int Temp_i_3 = 0;
agaikwad 1:8384e8b0fc22 350 int Temp_i_4 = 0;
agaikwad 1:8384e8b0fc22 351 int loop_count = 0;
agaikwad 1:8384e8b0fc22 352 int FPS_Ret = 0;
agaikwad 1:8384e8b0fc22 353 int FPS_Attempt = 1;
agaikwad 1:8384e8b0fc22 354 int FPS_Enroll_ID = 0;
agaikwad 1:8384e8b0fc22 355 unsigned long FPS_Param = 0;
agaikwad 1:8384e8b0fc22 356 unsigned short FPS_Resp = 0;
agaikwad 1:8384e8b0fc22 357 unsigned long FPS_Delay = 0;
agaikwad 1:8384e8b0fc22 358 char FPS_Enroll_Pass[20];
agaikwad 1:8384e8b0fc22 359
agaikwad 1:8384e8b0fc22 360 FRDM_UART_Debug.printf("FPS Select Option:\r\n1. Verify ID \r\n2. Enroll ID\r\n3. Delete ID \r\n4. Quit \r\n");
agaikwad 1:8384e8b0fc22 361 FRDM_UART_Debug.scanf("%d",&Temp_i_4);
agaikwad 1:8384e8b0fc22 362
agaikwad 1:8384e8b0fc22 363 switch(Temp_i_4)
agaikwad 1:8384e8b0fc22 364 {
agaikwad 1:8384e8b0fc22 365 case 1:
agaikwad 1:8384e8b0fc22 366
agaikwad 1:8384e8b0fc22 367 FRDM_UART_Debug.printf("FPS VERIFICATION\r\n");
agaikwad 1:8384e8b0fc22 368 FRDM_UART_Debug.printf("FPS Press finger to start\r\n");
agaikwad 1:8384e8b0fc22 369
agaikwad 1:8384e8b0fc22 370 FPS_Delay = 10000;
agaikwad 1:8384e8b0fc22 371 FPS_Wait_Time(1,false,&FPS_Delay);
agaikwad 1:8384e8b0fc22 372
agaikwad 1:8384e8b0fc22 373 //Verify
agaikwad 1:8384e8b0fc22 374 FPS_Ret = FPS.Capture(1);
agaikwad 1:8384e8b0fc22 375 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 376 {
agaikwad 1:8384e8b0fc22 377 FRDM_UART_Debug.printf("FPS Verification failed, place finger properly\r\n");
agaikwad 1:8384e8b0fc22 378 FPS_Auth = false;
agaikwad 1:8384e8b0fc22 379 goto loop_end;
agaikwad 1:8384e8b0fc22 380 }
agaikwad 1:8384e8b0fc22 381
agaikwad 1:8384e8b0fc22 382 FRDM_UART_Debug.printf("FPS Captured\r\n");
agaikwad 1:8384e8b0fc22 383
agaikwad 1:8384e8b0fc22 384 FPS_Ret = FPS.Identify();
agaikwad 1:8384e8b0fc22 385 if(FPS_Ret != -1)
agaikwad 1:8384e8b0fc22 386 {
agaikwad 1:8384e8b0fc22 387 FRDM_UART_Debug.printf("FPS Authentication PASSED with ID = %d \r\n",FPS_Ret);
agaikwad 1:8384e8b0fc22 388 FPS_Auth = true;
agaikwad 1:8384e8b0fc22 389 goto loop_end;
agaikwad 1:8384e8b0fc22 390 }
agaikwad 1:8384e8b0fc22 391 else
agaikwad 1:8384e8b0fc22 392 {
agaikwad 1:8384e8b0fc22 393 FRDM_UART_Debug.printf("FPS Authentication FAILED \r\n");
agaikwad 1:8384e8b0fc22 394 FPS_Auth = false;
agaikwad 1:8384e8b0fc22 395 goto loop_end;
agaikwad 1:8384e8b0fc22 396 }
agaikwad 1:8384e8b0fc22 397 break;
agaikwad 1:8384e8b0fc22 398
agaikwad 1:8384e8b0fc22 399 case 2:
agaikwad 1:8384e8b0fc22 400 FRDM_UART_Debug.printf("FPS ENROLL\r\n");
agaikwad 1:8384e8b0fc22 401
agaikwad 1:8384e8b0fc22 402 for(FPS_Attempt = 3;FPS_Attempt >= 1;FPS_Attempt --)
agaikwad 1:8384e8b0fc22 403 {
agaikwad 1:8384e8b0fc22 404 FRDM_UART_Debug.printf("FPS Enter Enroll passoword\r\n");
agaikwad 1:8384e8b0fc22 405 FRDM_UART_Debug.scanf("%s",&FPS_Enroll_Pass[0]);
agaikwad 1:8384e8b0fc22 406
agaikwad 1:8384e8b0fc22 407 if(FPS_Enroll_Pass == FPS_ENROLL_PASS)
agaikwad 1:8384e8b0fc22 408 {
agaikwad 1:8384e8b0fc22 409 FRDM_UART_Debug.printf("FPS Wrong Enroll passoword %d attempts left\r\n",FPS_Attempt);
agaikwad 1:8384e8b0fc22 410 }
agaikwad 1:8384e8b0fc22 411 else
agaikwad 1:8384e8b0fc22 412 break;
agaikwad 1:8384e8b0fc22 413 }
agaikwad 1:8384e8b0fc22 414
agaikwad 1:8384e8b0fc22 415 if(FPS_Attempt < 1)
agaikwad 1:8384e8b0fc22 416 {
agaikwad 1:8384e8b0fc22 417 FRDM_UART_Debug.printf("FPS Enroll Password authentication failed \r\n");
agaikwad 1:8384e8b0fc22 418 goto loop_end;
agaikwad 1:8384e8b0fc22 419 }
agaikwad 1:8384e8b0fc22 420
agaikwad 1:8384e8b0fc22 421 FRDM_UART_Debug.printf("FPS Enroll passoword Authenticated\r\n");
agaikwad 1:8384e8b0fc22 422
agaikwad 1:8384e8b0fc22 423 for(FPS_Enroll_ID = 0; FPS_Enroll_ID <20 ;FPS_Enroll_ID++)
agaikwad 1:8384e8b0fc22 424 {
agaikwad 1:8384e8b0fc22 425 FPS_Ret = FPS.CheckEnrolled(FPS_Enroll_ID);
agaikwad 1:8384e8b0fc22 426 if(FPS_Ret == 0)
agaikwad 1:8384e8b0fc22 427 continue;
agaikwad 1:8384e8b0fc22 428 else
agaikwad 1:8384e8b0fc22 429 break;
agaikwad 1:8384e8b0fc22 430 }
agaikwad 1:8384e8b0fc22 431
agaikwad 1:8384e8b0fc22 432 FRDM_UART_Debug.printf("FPS Enroll ID %d\r\n",FPS_Enroll_ID);
agaikwad 1:8384e8b0fc22 433
agaikwad 1:8384e8b0fc22 434 if(FPS_Enroll_ID < 20)
agaikwad 1:8384e8b0fc22 435 {
agaikwad 1:8384e8b0fc22 436 FRDM_UART_Debug.printf("FPS Starting enrolling, place finger on Sensor when LED glows\r\n");
agaikwad 1:8384e8b0fc22 437
agaikwad 1:8384e8b0fc22 438 FPS_Ret = FPS.CmosLed(0);
agaikwad 1:8384e8b0fc22 439 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 440 {
agaikwad 1:8384e8b0fc22 441 FRDM_UART_Debug.printf("FPS Enroll Failed try again\r\n");
agaikwad 1:8384e8b0fc22 442 goto loop_end;
agaikwad 1:8384e8b0fc22 443 }
agaikwad 1:8384e8b0fc22 444
agaikwad 1:8384e8b0fc22 445 FPS_Param = FPS_Enroll_ID;
agaikwad 1:8384e8b0fc22 446
agaikwad 1:8384e8b0fc22 447 FPS_Ret = FPS.SendRecv(FPS.CMD_EnrollStart,&FPS_Param,&FPS_Resp);
agaikwad 1:8384e8b0fc22 448 if((FPS_Ret != 0) || (FPS_Resp != FPS.CMD_Ack))
agaikwad 1:8384e8b0fc22 449 {
agaikwad 1:8384e8b0fc22 450 FRDM_UART_Debug.printf("FPS Enroll Failed try again\r\n");
agaikwad 1:8384e8b0fc22 451 goto loop_end;
agaikwad 1:8384e8b0fc22 452 }
agaikwad 1:8384e8b0fc22 453
agaikwad 1:8384e8b0fc22 454 Temp_i_1 = 1;
agaikwad 1:8384e8b0fc22 455
agaikwad 1:8384e8b0fc22 456 for(Temp_i_2 = 1;Temp_i_2 < 10 ; Temp_i_2++)
agaikwad 1:8384e8b0fc22 457 {
agaikwad 1:8384e8b0fc22 458 for(;Temp_i_1 <= 3 ; Temp_i_1++,Temp_i_2 = 1)
agaikwad 1:8384e8b0fc22 459 {
agaikwad 1:8384e8b0fc22 460 FPS_Delay = 10000;
agaikwad 1:8384e8b0fc22 461 FPS_Wait_Time(0,false,&FPS_Delay);
agaikwad 1:8384e8b0fc22 462
agaikwad 1:8384e8b0fc22 463 FPS_Ret = FPS.CmosLed(1);
agaikwad 1:8384e8b0fc22 464 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 465 {
agaikwad 1:8384e8b0fc22 466 FRDM_UART_Debug.printf("FPS Enroll Failed trying again\r\n");
agaikwad 1:8384e8b0fc22 467 continue;
agaikwad 1:8384e8b0fc22 468 }
agaikwad 1:8384e8b0fc22 469
agaikwad 1:8384e8b0fc22 470 for(Temp_i_3 = 1;Temp_i_3 <= 10;Temp_i_3++)
agaikwad 1:8384e8b0fc22 471 {
agaikwad 1:8384e8b0fc22 472
agaikwad 1:8384e8b0fc22 473 FRDM_UART_Debug.printf("FPS Place finger on Sensor NOW %d\r\n",Temp_i_1);
agaikwad 1:8384e8b0fc22 474 FPS_Delay = 10000;
agaikwad 1:8384e8b0fc22 475 FPS_Wait_Time(1,false,&FPS_Delay);
agaikwad 1:8384e8b0fc22 476
agaikwad 1:8384e8b0fc22 477 if(FPS.Capture(1) == 0)
agaikwad 1:8384e8b0fc22 478 break;
agaikwad 1:8384e8b0fc22 479
agaikwad 1:8384e8b0fc22 480 wait_ms(500);
agaikwad 1:8384e8b0fc22 481 }
agaikwad 1:8384e8b0fc22 482
agaikwad 1:8384e8b0fc22 483 if(Temp_i_2 > 10)
agaikwad 1:8384e8b0fc22 484 {
agaikwad 1:8384e8b0fc22 485 FRDM_UART_Debug.printf("FPS Enroll Failed trying again\r\n");
agaikwad 1:8384e8b0fc22 486 continue;
agaikwad 1:8384e8b0fc22 487 }
agaikwad 1:8384e8b0fc22 488
agaikwad 1:8384e8b0fc22 489 FPS_Ret = FPS.Enroll_N(Temp_i_1);
agaikwad 1:8384e8b0fc22 490 if(FPS_Ret != 0)
agaikwad 1:8384e8b0fc22 491 {
agaikwad 1:8384e8b0fc22 492 FRDM_UART_Debug.printf("FPS Enroll Failed trying again\r\n");
agaikwad 1:8384e8b0fc22 493 continue;
agaikwad 1:8384e8b0fc22 494 }
agaikwad 1:8384e8b0fc22 495
agaikwad 1:8384e8b0fc22 496 FPS_Ret = FPS.CmosLed(0);
agaikwad 1:8384e8b0fc22 497 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 498 {
agaikwad 1:8384e8b0fc22 499 FRDM_UART_Debug.printf("FPS Enroll Failed trying again\r\n");
agaikwad 1:8384e8b0fc22 500 continue;
agaikwad 1:8384e8b0fc22 501 }
agaikwad 1:8384e8b0fc22 502
agaikwad 1:8384e8b0fc22 503 FRDM_UART_Debug.printf("FPS REMOVE finger on Sensor NOW\r\n");
agaikwad 1:8384e8b0fc22 504 }
agaikwad 1:8384e8b0fc22 505 }
agaikwad 1:8384e8b0fc22 506
agaikwad 1:8384e8b0fc22 507 FPS_Ret = FPS.CheckEnrolled(FPS_Enroll_ID);
agaikwad 1:8384e8b0fc22 508 if(FPS_Ret == 0)
agaikwad 1:8384e8b0fc22 509 {
agaikwad 1:8384e8b0fc22 510 FRDM_UART_Debug.printf("FPS Enroll PASSED\r\n");
agaikwad 1:8384e8b0fc22 511 goto loop_end;
agaikwad 1:8384e8b0fc22 512 }
agaikwad 1:8384e8b0fc22 513 else
agaikwad 1:8384e8b0fc22 514 {
agaikwad 1:8384e8b0fc22 515 FRDM_UART_Debug.printf("FPS Enroll FAILED\r\n");
agaikwad 1:8384e8b0fc22 516 goto loop_end;
agaikwad 1:8384e8b0fc22 517 }
agaikwad 1:8384e8b0fc22 518 }
agaikwad 1:8384e8b0fc22 519 else
agaikwad 1:8384e8b0fc22 520 {
agaikwad 1:8384e8b0fc22 521 FRDM_UART_Debug.printf("FPS All ID's are full, swithcing to ID delete mode\r\n");
agaikwad 1:8384e8b0fc22 522 goto delete_fps_id;
agaikwad 1:8384e8b0fc22 523 }
agaikwad 1:8384e8b0fc22 524 break;
agaikwad 1:8384e8b0fc22 525
agaikwad 1:8384e8b0fc22 526 case 3:
agaikwad 1:8384e8b0fc22 527 // Delete ID
agaikwad 1:8384e8b0fc22 528 delete_fps_id:
agaikwad 1:8384e8b0fc22 529 FRDM_UART_Debug.printf("FPS DELETE ID, enter option select\r\n1. Delete specific ID \r\n2. Delete All \r\n3. Quit\r\n");
agaikwad 1:8384e8b0fc22 530 FRDM_UART_Debug.scanf("%d",&Temp_i_1);
agaikwad 1:8384e8b0fc22 531
agaikwad 1:8384e8b0fc22 532 switch (Temp_i_1)
agaikwad 1:8384e8b0fc22 533 {
agaikwad 1:8384e8b0fc22 534 case 1:
agaikwad 1:8384e8b0fc22 535 case 2:
agaikwad 1:8384e8b0fc22 536 for(FPS_Attempt = 3;FPS_Attempt >= 1;FPS_Attempt --)
agaikwad 1:8384e8b0fc22 537 {
agaikwad 1:8384e8b0fc22 538 FRDM_UART_Debug.printf("FPS Enter Enroll passoword\r\n");
agaikwad 1:8384e8b0fc22 539 FRDM_UART_Debug.scanf("%s",&FPS_Enroll_Pass[0]);
agaikwad 1:8384e8b0fc22 540
agaikwad 1:8384e8b0fc22 541 if(FPS_Enroll_Pass == FPS_ENROLL_PASS)
agaikwad 1:8384e8b0fc22 542 {
agaikwad 1:8384e8b0fc22 543 FRDM_UART_Debug.printf("FPS Wrong Enroll passoword %d attempts left\r\n",FPS_Attempt);
agaikwad 1:8384e8b0fc22 544 }
agaikwad 1:8384e8b0fc22 545 else
agaikwad 1:8384e8b0fc22 546 break;
agaikwad 1:8384e8b0fc22 547 }
agaikwad 1:8384e8b0fc22 548
agaikwad 1:8384e8b0fc22 549 FRDM_UART_Debug.printf("FPS Password Authenticated\r\n");
agaikwad 1:8384e8b0fc22 550
agaikwad 1:8384e8b0fc22 551 if(Temp_i_1 == 1)
agaikwad 1:8384e8b0fc22 552 {
agaikwad 1:8384e8b0fc22 553 FRDM_UART_Debug.printf("FPS Enter ID to delete\r\n");
agaikwad 1:8384e8b0fc22 554 FRDM_UART_Debug.scanf("%d",&Temp_i_2);
agaikwad 1:8384e8b0fc22 555
agaikwad 1:8384e8b0fc22 556
agaikwad 1:8384e8b0fc22 557 FPS_Ret = FPS.DeleteID(Temp_i_2);
agaikwad 1:8384e8b0fc22 558 if(FPS_Ret != 0)
agaikwad 1:8384e8b0fc22 559 {
agaikwad 1:8384e8b0fc22 560 FRDM_UART_Debug.printf("FPS Unable to delete ID %d\r\n",Temp_i_2);
agaikwad 1:8384e8b0fc22 561 break;
agaikwad 1:8384e8b0fc22 562 }
agaikwad 1:8384e8b0fc22 563 else
agaikwad 1:8384e8b0fc22 564 FRDM_UART_Debug.printf("FPS ID %d has been deleted\r\n",Temp_i_2);
agaikwad 1:8384e8b0fc22 565 }
agaikwad 1:8384e8b0fc22 566 else if(Temp_i_1 == 2)
agaikwad 1:8384e8b0fc22 567 {
agaikwad 1:8384e8b0fc22 568 for(FPS_Enroll_ID = 0; FPS_Enroll_ID <20 ;FPS_Enroll_ID++)
agaikwad 1:8384e8b0fc22 569 {
agaikwad 1:8384e8b0fc22 570 FPS_Ret = FPS.DeleteID(FPS_Enroll_ID);
agaikwad 1:8384e8b0fc22 571 }
agaikwad 1:8384e8b0fc22 572
agaikwad 1:8384e8b0fc22 573 for(FPS_Enroll_ID = 0; FPS_Enroll_ID <20 ;FPS_Enroll_ID++)
agaikwad 1:8384e8b0fc22 574 {
agaikwad 1:8384e8b0fc22 575 FPS_Ret = FPS.CheckEnrolled(FPS_Enroll_ID);
agaikwad 1:8384e8b0fc22 576 if(FPS_Ret != 0)
agaikwad 1:8384e8b0fc22 577 continue;
agaikwad 1:8384e8b0fc22 578 else
agaikwad 1:8384e8b0fc22 579 break;
agaikwad 1:8384e8b0fc22 580 }
agaikwad 1:8384e8b0fc22 581
agaikwad 1:8384e8b0fc22 582 if(FPS_Enroll_ID == 20)
agaikwad 1:8384e8b0fc22 583 {
agaikwad 1:8384e8b0fc22 584 FRDM_UART_Debug.printf("FPS All ID's deleted\r\n");
agaikwad 1:8384e8b0fc22 585 }
agaikwad 1:8384e8b0fc22 586 else
agaikwad 1:8384e8b0fc22 587 {
agaikwad 1:8384e8b0fc22 588 FRDM_UART_Debug.printf("FPS Delete ALL failed at ID %d\r\n",FPS_Enroll_ID);
agaikwad 1:8384e8b0fc22 589 }
agaikwad 1:8384e8b0fc22 590 }
agaikwad 1:8384e8b0fc22 591
agaikwad 1:8384e8b0fc22 592 break;
agaikwad 1:8384e8b0fc22 593 case 3:
agaikwad 1:8384e8b0fc22 594 default:
agaikwad 1:8384e8b0fc22 595 goto loop_end;
agaikwad 1:8384e8b0fc22 596 break;
agaikwad 1:8384e8b0fc22 597 }
agaikwad 1:8384e8b0fc22 598
agaikwad 1:8384e8b0fc22 599 break;
agaikwad 1:8384e8b0fc22 600
agaikwad 1:8384e8b0fc22 601 case 4:
agaikwad 1:8384e8b0fc22 602 default:
agaikwad 1:8384e8b0fc22 603 goto loop_end;
agaikwad 1:8384e8b0fc22 604 }
agaikwad 1:8384e8b0fc22 605 loop_end:
agaikwad 1:8384e8b0fc22 606 FRDM_UART_Debug.printf("FPS Loop End reached\r\n");
agaikwad 1:8384e8b0fc22 607
agaikwad 1:8384e8b0fc22 608 FPS_Ret = FPS.CmosLed(1);
agaikwad 1:8384e8b0fc22 609 if(FPS_Ret == -1)
agaikwad 1:8384e8b0fc22 610 {
agaikwad 1:8384e8b0fc22 611 FRDM_UART_Debug.printf("FPS LED ON Failed Loop End\r\n");
agaikwad 1:8384e8b0fc22 612 //continue;
agaikwad 1:8384e8b0fc22 613 }
agaikwad 1:8384e8b0fc22 614
agaikwad 1:8384e8b0fc22 615 }
agaikwad 1:8384e8b0fc22 616
agaikwad 1:8384e8b0fc22 617
agaikwad 1:8384e8b0fc22 618
agaikwad 1:8384e8b0fc22 619 void ESP_8266_Init(void)
agaikwad 1:8384e8b0fc22 620 {
agaikwad 1:8384e8b0fc22 621 FRDM_UART_Debug.printf("Initializing and Reset ESP\r\n");
agaikwad 1:8384e8b0fc22 622
agaikwad 1:8384e8b0fc22 623 ESP_8266_UART.Reset(); //RESET ESP
agaikwad 1:8384e8b0fc22 624 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 400); //receive a response from ESP
agaikwad 1:8384e8b0fc22 625 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 626 //FRDM_UART_Debug.printf(ESP_8266_CMD_Recv); //Print the response onscreen
agaikwad 1:8384e8b0fc22 627 wait(2);
agaikwad 1:8384e8b0fc22 628
agaikwad 1:8384e8b0fc22 629 strcpy(ESP_8266_CMD_Send,"AT");
agaikwad 1:8384e8b0fc22 630 ESP_8266_UART.SendCMD(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 631 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 632 FRDM_UART_Debug.printf(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 633 //wait(2);
agaikwad 1:8384e8b0fc22 634 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 400);
agaikwad 1:8384e8b0fc22 635 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 636 FRDM_UART_Debug.printf(ESP_8266_CMD_Recv);
agaikwad 1:8384e8b0fc22 637 wait(0.1);
agaikwad 1:8384e8b0fc22 638
agaikwad 1:8384e8b0fc22 639 strcpy(ESP_8266_CMD_Send,"AT+CWMODE=1");
agaikwad 1:8384e8b0fc22 640 ESP_8266_UART.SendCMD(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 641 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 642 FRDM_UART_Debug.printf(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 643 wait(2);
agaikwad 1:8384e8b0fc22 644
agaikwad 1:8384e8b0fc22 645
agaikwad 1:8384e8b0fc22 646 if(!strcmp(ESP_8266_CMD_Recv,"WIFI CONNECTED"))
agaikwad 1:8384e8b0fc22 647 {
agaikwad 1:8384e8b0fc22 648 strcpy(ESP_8266_CMD_Send,"AT+CWJAP=\"");
agaikwad 1:8384e8b0fc22 649 strcat(ESP_8266_CMD_Send,WIFI_SSID);
agaikwad 1:8384e8b0fc22 650 strcat(ESP_8266_CMD_Send,"\",\"");
agaikwad 1:8384e8b0fc22 651 strcat(ESP_8266_CMD_Send,WIFI_PASS);
agaikwad 1:8384e8b0fc22 652 strcat(ESP_8266_CMD_Send,"\"");
agaikwad 1:8384e8b0fc22 653
agaikwad 1:8384e8b0fc22 654 ESP_8266_UART.SendCMD(ESP_8266_CMD_Send);
agaikwad 2:de62e3947c87 655 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 656 FRDM_UART_Debug.printf(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 657 wait(5);
agaikwad 1:8384e8b0fc22 658 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 400);
agaikwad 2:de62e3947c87 659 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 660 FRDM_UART_Debug.printf(ESP_8266_CMD_Recv);
agaikwad 1:8384e8b0fc22 661 }
agaikwad 1:8384e8b0fc22 662 else
agaikwad 1:8384e8b0fc22 663 FRDM_UART_Debug.printf("Wifi was preconfigured\r\n");
agaikwad 1:8384e8b0fc22 664
agaikwad 1:8384e8b0fc22 665 strcpy(ESP_8266_CMD_Send,"AT+CIPMUX=0");
agaikwad 1:8384e8b0fc22 666 ESP_8266_UART.SendCMD(ESP_8266_CMD_Send);
agaikwad 2:de62e3947c87 667 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 668 FRDM_UART_Debug.printf(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 669 //wait(2);
agaikwad 1:8384e8b0fc22 670 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 400);
agaikwad 2:de62e3947c87 671 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 672 FRDM_UART_Debug.printf(ESP_8266_CMD_Recv);
agaikwad 1:8384e8b0fc22 673
agaikwad 1:8384e8b0fc22 674 }
agaikwad 1:8384e8b0fc22 675
agaikwad 1:8384e8b0fc22 676 void ESP_8266_TX_Data(void)
agaikwad 1:8384e8b0fc22 677 {
agaikwad 1:8384e8b0fc22 678
agaikwad 1:8384e8b0fc22 679 //ESP updates the Status of Thingspeak channel//
agaikwad 1:8384e8b0fc22 680
agaikwad 1:8384e8b0fc22 681 strcpy(ESP_8266_CMD_Send,"AT+CIPSTART=");
agaikwad 1:8384e8b0fc22 682 strcat(ESP_8266_CMD_Send,"\"TCP\",\"");
agaikwad 1:8384e8b0fc22 683 strcat(ESP_8266_CMD_Send,IP);
agaikwad 1:8384e8b0fc22 684 strcat(ESP_8266_CMD_Send,"\",80");
agaikwad 1:8384e8b0fc22 685
agaikwad 1:8384e8b0fc22 686 ESP_8266_UART.SendCMD(ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 687 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 688 FRDM_UART_Debug.printf("S\r\n%s",ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 689 //wait(2);
agaikwad 1:8384e8b0fc22 690 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 1000);
agaikwad 1:8384e8b0fc22 691 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 692 FRDM_UART_Debug.printf("R\r\n%s",ESP_8266_CMD_Recv);
agaikwad 1:8384e8b0fc22 693 wait(1);
agaikwad 1:8384e8b0fc22 694
agaikwad 1:8384e8b0fc22 695 /*
agaikwad 1:8384e8b0fc22 696 float Amm_Out = 0;
agaikwad 1:8384e8b0fc22 697 float Volt_Out = 0;
agaikwad 1:8384e8b0fc22 698 float Light_Out = 0;
agaikwad 1:8384e8b0fc22 699 float Thermo_Out = 0;
agaikwad 1:8384e8b0fc22 700 float Temp_Out = 0;
agaikwad 1:8384e8b0fc22 701 float Hum_Out = 0;
agaikwad 1:8384e8b0fc22 702 int Motion_Out = 0;
agaikwad 1:8384e8b0fc22 703 */
agaikwad 1:8384e8b0fc22 704 sprintf(ESP_8266_CMD_Send,"GET https://api.thingspeak.com/update?key=JJAOBK32WOINKT00&field1=%d&field2=%d&field3=%f&field4=%f&field5=%f&field6=%f&field7=%f&field8=%f\r\n"
agaikwad 1:8384e8b0fc22 705 ,Motion_Out,Finger_Out,Amm_Out,Volt_Out,Light_Out,Thermo_Out,Temp_Out,Hum_Out);
agaikwad 1:8384e8b0fc22 706
agaikwad 1:8384e8b0fc22 707 int i=0;
agaikwad 1:8384e8b0fc22 708 for(i=0;ESP_8266_CMD_Send[i]!='\0';i++);
agaikwad 1:8384e8b0fc22 709 i++;
agaikwad 1:8384e8b0fc22 710 char cmd[255];
agaikwad 1:8384e8b0fc22 711
agaikwad 1:8384e8b0fc22 712 sprintf(cmd,"AT+CIPSEND=%d",i); //Send Number of open connection and Characters to send
agaikwad 1:8384e8b0fc22 713 ESP_8266_UART.SendCMD(cmd);
agaikwad 1:8384e8b0fc22 714 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 715 FRDM_UART_Debug.printf("S\r\n%s",cmd);
agaikwad 1:8384e8b0fc22 716 while(i<=20 || ESP_8266_CMD_Recv == ">")
agaikwad 1:8384e8b0fc22 717 {
agaikwad 1:8384e8b0fc22 718 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 1000);
agaikwad 1:8384e8b0fc22 719 wait(100);
agaikwad 1:8384e8b0fc22 720 i++;
agaikwad 1:8384e8b0fc22 721 }
agaikwad 2:de62e3947c87 722 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 723 FRDM_UART_Debug.printf("R\r\n%s",ESP_8266_CMD_Recv);
agaikwad 1:8384e8b0fc22 724
agaikwad 1:8384e8b0fc22 725 ESP_8266_UART.SendCMD(ESP_8266_CMD_Send); //Post value to thingspeak channel
agaikwad 1:8384e8b0fc22 726 if(FPS_Auth)
agaikwad 1:8384e8b0fc22 727 FRDM_UART_Debug.printf("S\r\n%s",ESP_8266_CMD_Send);
agaikwad 1:8384e8b0fc22 728
agaikwad 1:8384e8b0fc22 729 while(i<=20 || ESP_8266_CMD_Recv == "OK")
agaikwad 1:8384e8b0fc22 730 {
agaikwad 1:8384e8b0fc22 731 ESP_8266_UART.RcvReply(ESP_8266_CMD_Recv, 1000);
agaikwad 1:8384e8b0fc22 732 wait(100);
agaikwad 1:8384e8b0fc22 733 i++;
agaikwad 1:8384e8b0fc22 734 }
agaikwad 2:de62e3947c87 735 //if(FPS_Auth)
agaikwad 1:8384e8b0fc22 736 FRDM_UART_Debug.printf("R\r\n%s",ESP_8266_CMD_Recv);
agaikwad 1:8384e8b0fc22 737
agaikwad 1:8384e8b0fc22 738 }
agaikwad 1:8384e8b0fc22 739