A sensor bus with multiple sensors, and sending its data to ThingSpeak Cloud

Dependencies:   DHT ESP8266 GT511C3 mbed

Fork of FRDM_K64F_Ammeter_Voltmeter_PIR_Motion_Sensor_ESP8266_Finger_print_DHT_Thermocouple_light_sensor_combined_code by Akash Gaikwad

Committer:
architmuchhal
Date:
Thu May 04 00:51:29 2017 +0000
Revision:
3:821e3b624560
Parent:
2:de62e3947c87
Remote Sensor Bus for FRDM K64F

Who changed what in which revision?

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