programme intégré

Dependencies:   MODSERIAL Servo mbed

Committer:
matth420
Date:
Wed May 23 17:33:36 2018 +0000
Revision:
0:d811d2c0da76
Child:
1:ca1ad3dc37b3

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
matth420 0:d811d2c0da76 1 #include "mbed.h" //
matth420 0:d811d2c0da76 2 #include <iostream> //
matth420 0:d811d2c0da76 3 #include <string> //
matth420 0:d811d2c0da76 4 #include <fstream> //Déclaration des librairies utilisées
matth420 0:d811d2c0da76 5 #include "MODSERIAL.h" //
matth420 0:d811d2c0da76 6 #include "Servo.h" //
matth420 0:d811d2c0da76 7 #include <Serial.h>
matth420 0:d811d2c0da76 8 #include "stdio.h"
matth420 0:d811d2c0da76 9
matth420 0:d811d2c0da76 10 Serial pc(USBTX, USBRX);
matth420 0:d811d2c0da76 11 Serial rfid1(p9, NC);
matth420 0:d811d2c0da76 12 Serial rfid2(NC, p10);
matth420 0:d811d2c0da76 13 MODSERIAL esp(p28, p27); // tx, rx
matth420 0:d811d2c0da76 14 DigitalOut reset(p26);
matth420 0:d811d2c0da76 15 Timer t; //Timer
matth420 0:d811d2c0da76 16 Servo myservo(p21); //Servomoteur
matth420 0:d811d2c0da76 17 DigitalIn manuel1 (p20); //Mode manuel position n°1 (entrée seulement)
matth420 0:d811d2c0da76 18 DigitalIn manuel2 (p19); //Mode manuel position n°2 (sortie seulement)
matth420 0:d811d2c0da76 19 DigitalOut ledmm (p18); //Led indiquant si le mode manuel est activé
matth420 0:d811d2c0da76 20 DigitalIn manuel3 (p17); //Mode manuel position n°3 (entréé ou sortie)
matth420 0:d811d2c0da76 21 DigitalIn manuel4 (p16); //Mode manuel position n°4 (verrouillage complet)
matth420 0:d811d2c0da76 22 DigitalIn bpmanuel (p15); //Bouton ON/OFF du mode manuel
matth420 0:d811d2c0da76 23 DigitalIn capteurfermeture (p14);
matth420 0:d811d2c0da76 24 DigitalIn capext (p12) ; //Capteur de présence extérieur
matth420 0:d811d2c0da76 25 DigitalIn capint (p11) ; //Capteur de présence intérieur //Capteur détectant la fermeture
matth420 0:d811d2c0da76 26 DigitalIn CTS(p8);
matth420 0:d811d2c0da76 27 DigitalIn F411 (p7); //Detection alimentation servomoteur (CHALLENGE LEGRAND !!!!!!!!!!!)
matth420 0:d811d2c0da76 28
matth420 0:d811d2c0da76 29 DigitalOut led1(LED1); //Led n°1 du mbed
matth420 0:d811d2c0da76 30 DigitalOut led2(LED2); //Led n°2 du mbed
matth420 0:d811d2c0da76 31 DigitalOut led3(LED3); //Led n°3 du mbed
matth420 0:d811d2c0da76 32 DigitalOut led4(LED4); //Led n°4 du mbed
matth420 0:d811d2c0da76 33
matth420 0:d811d2c0da76 34 int egal1 = 0; //tag1
matth420 0:d811d2c0da76 35 int egal2 = 0;
matth420 0:d811d2c0da76 36 int egal3 = 0;
matth420 0:d811d2c0da76 37 int egal4 = 0;
matth420 0:d811d2c0da76 38 int egal5 = 0;
matth420 0:d811d2c0da76 39 int tag1[4]= {0xAE,0xFB,0x63,0x10};
matth420 0:d811d2c0da76 40 int tag2[4]= {0x25,0x02,0x64,0x10};
matth420 0:d811d2c0da76 41 int tag3[4]= {0x3F,0xFC,0x63,0x10};
matth420 0:d811d2c0da76 42 int tag4[4]= {0xCE,0xEE,0x63,0x10};
matth420 0:d811d2c0da76 43 int tag5[4]= {0xD6,0xD9,0x63,0x10};
matth420 0:d811d2c0da76 44 int tag[4]= {0x00,0x00,0x00,0x00};
matth420 0:d811d2c0da76 45 int reponse_rfid[5];
matth420 0:d811d2c0da76 46 int reponse_rfid1[255];
matth420 0:d811d2c0da76 47 int lireuid[8]= {0x52,0x00};
matth420 0:d811d2c0da76 48 //int trame_rfid[8]={0x7A};
matth420 0:d811d2c0da76 49 //int tag_rfid[8]={0x76,0x01};
matth420 0:d811d2c0da76 50 //int uid[8]={0x55};
matth420 0:d811d2c0da76 51
matth420 0:d811d2c0da76 52 int position ; //Position de la chatière
matth420 0:d811d2c0da76 53
matth420 0:d811d2c0da76 54 int i = 0;
matth420 0:d811d2c0da76 55 int e = 0;
matth420 0:d811d2c0da76 56 int count,ended,timeout;
matth420 0:d811d2c0da76 57
matth420 0:d811d2c0da76 58 char buf[1024];
matth420 0:d811d2c0da76 59 char snd[255];
matth420 0:d811d2c0da76 60
matth420 0:d811d2c0da76 61 char ssid[32] = "IOP_LEGRAND_2"; //Nom du WIFI IOP
matth420 0:d811d2c0da76 62 char pwd [32] = "legrandMDP"; //Mot de passe du WIFI IOP
matth420 0:d811d2c0da76 63
matth420 0:d811d2c0da76 64 char ECHA[5] = "ECHA"; //Le chat vient de l'extérieur
matth420 0:d811d2c0da76 65 char ICHA[5] = "ICHA"; //Le chat vient de l'intérieur
matth420 0:d811d2c0da76 66
matth420 0:d811d2c0da76 67
matth420 0:d811d2c0da76 68 char tcpip[14] = "192.168.10.14"; //Adresse IP du module ESP8666
matth420 0:d811d2c0da76 69 char tcpport[3] = "23";
matth420 0:d811d2c0da76 70
matth420 0:d811d2c0da76 71 int longueur_recue = 0;
matth420 0:d811d2c0da76 72 int nouvelle_reception = 0;
matth420 0:d811d2c0da76 73 int a = 0;
matth420 0:d811d2c0da76 74 int b = 0;
matth420 0:d811d2c0da76 75
matth420 0:d811d2c0da76 76 char recept[18];
matth420 0:d811d2c0da76 77 char tabconnect[10] = {0};
matth420 0:d811d2c0da76 78 char tabclosed[9] = {0};
matth420 0:d811d2c0da76 79 char tabrec[5] = {0};
matth420 0:d811d2c0da76 80 char connect[10] = "0,CONNECT";
matth420 0:d811d2c0da76 81 char closed[9] = "0,CLOSED";
matth420 0:d811d2c0da76 82
matth420 0:d811d2c0da76 83 void HandShake();
matth420 0:d811d2c0da76 84 void Antenna();
matth420 0:d811d2c0da76 85 void field();
matth420 0:d811d2c0da76 86 void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(),WIFI(), Donnee(); //Déclaration des voids
matth420 0:d811d2c0da76 87
matth420 0:d811d2c0da76 88 using namespace std;
matth420 0:d811d2c0da76 89
matth420 0:d811d2c0da76 90 int main() //Début du int main
matth420 0:d811d2c0da76 91 {
matth420 0:d811d2c0da76 92
matth420 0:d811d2c0da76 93 reset=0; //Reset du module ESP8266
matth420 0:d811d2c0da76 94 pc.baud(9600); //Vitesse de transmission du terminal
matth420 0:d811d2c0da76 95 pc.printf("\f\n\r--------------- Demarrage du module WIFI ---------------\n\r"); //Démarrage du module WIFI ESP8266
matth420 0:d811d2c0da76 96 wait(0.5);
matth420 0:d811d2c0da76 97 reset=1;
matth420 0:d811d2c0da76 98 timeout=2;
matth420 0:d811d2c0da76 99 getreply();
matth420 0:d811d2c0da76 100
matth420 0:d811d2c0da76 101 esp.baud(115200); //Vitesse de transmission du module WIFI ESP8266
matth420 0:d811d2c0da76 102
matth420 0:d811d2c0da76 103 ESPconfig(); //Configuration du module WIFI ESP8266
matth420 0:d811d2c0da76 104
matth420 0:d811d2c0da76 105 pc.printf("\f\n\r- Module pret -\n\r"); //Le module WIFI ESP8266
matth420 0:d811d2c0da76 106
matth420 0:d811d2c0da76 107 while(1)
matth420 0:d811d2c0da76 108 {
matth420 0:d811d2c0da76 109 // Partie RFID
matth420 0:d811d2c0da76 110
matth420 0:d811d2c0da76 111 egal1=0;
matth420 0:d811d2c0da76 112 egal2=0;
matth420 0:d811d2c0da76 113 egal3=0;
matth420 0:d811d2c0da76 114 egal4=0;
matth420 0:d811d2c0da76 115 egal5=0;
matth420 0:d811d2c0da76 116
matth420 0:d811d2c0da76 117
matth420 0:d811d2c0da76 118
matth420 0:d811d2c0da76 119 if (CTS == 0)
matth420 0:d811d2c0da76 120 {
matth420 0:d811d2c0da76 121 // pc.printf("- [CTS = 0] -");
matth420 0:d811d2c0da76 122 // pc.printf("\n\r");
matth420 0:d811d2c0da76 123 //HandShake();
matth420 0:d811d2c0da76 124 for (int i=0; i<2; i++)
matth420 0:d811d2c0da76 125 {
matth420 0:d811d2c0da76 126 rfid2.putc(lireuid[i]);
matth420 0:d811d2c0da76 127 }
matth420 0:d811d2c0da76 128 wait_ms(25);
matth420 0:d811d2c0da76 129 for (int e=0; e<1; e++)
matth420 0:d811d2c0da76 130 {
matth420 0:d811d2c0da76 131 reponse_rfid1[e]=(rfid1.getc());
matth420 0:d811d2c0da76 132 led1=1;
matth420 0:d811d2c0da76 133 }
matth420 0:d811d2c0da76 134 if (reponse_rfid1[0] == 0xD6)
matth420 0:d811d2c0da76 135 {
matth420 0:d811d2c0da76 136 for (int i=0; i<2; i++)
matth420 0:d811d2c0da76 137 {
matth420 0:d811d2c0da76 138 rfid2.putc(lireuid[i]);
matth420 0:d811d2c0da76 139 led2=1;
matth420 0:d811d2c0da76 140 }
matth420 0:d811d2c0da76 141 wait_ms(50);
matth420 0:d811d2c0da76 142 for (int e=1; e<5; e++) {
matth420 0:d811d2c0da76 143 reponse_rfid[e]=(rfid1.getc());
matth420 0:d811d2c0da76 144 led3=1;
matth420 0:d811d2c0da76 145 }
matth420 0:d811d2c0da76 146 /*for(int i=0;i<5;i++){
matth420 0:d811d2c0da76 147 tag[i] = {0};
matth420 0:d811d2c0da76 148 }*/
matth420 0:d811d2c0da76 149 pc.printf("---------------------------------------");
matth420 0:d811d2c0da76 150 pc.printf("\n\r");
matth420 0:d811d2c0da76 151 pc.printf("Trame de reponse du PCB en hexa : ");
matth420 0:d811d2c0da76 152 for (int i=0; i<2; i++) pc.printf("%X ",lireuid[i]);
matth420 0:d811d2c0da76 153 pc.printf("\n\r");
matth420 0:d811d2c0da76 154 pc.printf("Status = %X\n\r",reponse_rfid1[0]);
matth420 0:d811d2c0da76 155 pc.printf("UID = ");
matth420 0:d811d2c0da76 156 for (int i=1; i<5; i++) pc.printf("%X ",reponse_rfid[i]);
matth420 0:d811d2c0da76 157 pc.printf("\n\r");
matth420 0:d811d2c0da76 158 pc.printf("---------------------------------------");
matth420 0:d811d2c0da76 159 pc.printf("\n\r");
matth420 0:d811d2c0da76 160 }
matth420 0:d811d2c0da76 161 else if (reponse_rfid1[0] == 0xC0)
matth420 0:d811d2c0da76 162 {
matth420 0:d811d2c0da76 163 field();
matth420 0:d811d2c0da76 164 }
matth420 0:d811d2c0da76 165 if (reponse_rfid1[0] == 0xE0)
matth420 0:d811d2c0da76 166 {
matth420 0:d811d2c0da76 167 Antenna();
matth420 0:d811d2c0da76 168 }
matth420 0:d811d2c0da76 169 //reponse_rfid[1]=0x00;
matth420 0:d811d2c0da76 170
matth420 0:d811d2c0da76 171 for(int i=1; i<5; i++)
matth420 0:d811d2c0da76 172 {
matth420 0:d811d2c0da76 173 tag[i-1] = reponse_rfid[i];
matth420 0:d811d2c0da76 174 }
matth420 0:d811d2c0da76 175 if(tag[0] != 0x00)
matth420 0:d811d2c0da76 176 {
matth420 0:d811d2c0da76 177 pc.printf("\n\r");
matth420 0:d811d2c0da76 178 pc.printf("tableau de 0: %X", tag[0]);
matth420 0:d811d2c0da76 179 pc.printf("\n\r");
matth420 0:d811d2c0da76 180
matth420 0:d811d2c0da76 181 for(int i=0; i<4; i++)
matth420 0:d811d2c0da76 182 {
matth420 0:d811d2c0da76 183 if(tag[i] == tag1[i])
matth420 0:d811d2c0da76 184 {
matth420 0:d811d2c0da76 185 egal1 = 1;
matth420 0:d811d2c0da76 186 pc.printf("Tag1 - OK ");
matth420 0:d811d2c0da76 187 pc.printf("\n\r");
matth420 0:d811d2c0da76 188 break;
matth420 0:d811d2c0da76 189 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 190 }
matth420 0:d811d2c0da76 191 else if(tag[i] != tag1[i])
matth420 0:d811d2c0da76 192 {
matth420 0:d811d2c0da76 193 pc.printf("Tag1 - NOK ");
matth420 0:d811d2c0da76 194 pc.printf("\n\r");
matth420 0:d811d2c0da76 195 egal1 = 0;
matth420 0:d811d2c0da76 196 break;
matth420 0:d811d2c0da76 197 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 198 }
matth420 0:d811d2c0da76 199 }
matth420 0:d811d2c0da76 200 for(int i=0; i<4; i++)
matth420 0:d811d2c0da76 201 {
matth420 0:d811d2c0da76 202 if(tag[i] == tag2[i])
matth420 0:d811d2c0da76 203 {
matth420 0:d811d2c0da76 204 egal2 = 1;
matth420 0:d811d2c0da76 205 pc.printf("Tag2 - OK ");
matth420 0:d811d2c0da76 206 pc.printf("\n\r");
matth420 0:d811d2c0da76 207 break;
matth420 0:d811d2c0da76 208 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 209 }
matth420 0:d811d2c0da76 210 else if(tag[i] != tag2[i])
matth420 0:d811d2c0da76 211 {
matth420 0:d811d2c0da76 212 pc.printf("Tag2 - NOK ");
matth420 0:d811d2c0da76 213 pc.printf("\n\r");
matth420 0:d811d2c0da76 214 egal2 = 0;
matth420 0:d811d2c0da76 215 break;
matth420 0:d811d2c0da76 216 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 217 }
matth420 0:d811d2c0da76 218 }
matth420 0:d811d2c0da76 219 for(int i=0; i<4; i++)
matth420 0:d811d2c0da76 220 {
matth420 0:d811d2c0da76 221 if(tag[i] == tag3[i])
matth420 0:d811d2c0da76 222 {
matth420 0:d811d2c0da76 223 egal3 = 1;
matth420 0:d811d2c0da76 224 pc.printf("Tag3 - OK ");
matth420 0:d811d2c0da76 225 pc.printf("\n\r");
matth420 0:d811d2c0da76 226 break;
matth420 0:d811d2c0da76 227 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 228 }
matth420 0:d811d2c0da76 229 else if(tag[i] != tag3[i])
matth420 0:d811d2c0da76 230 {
matth420 0:d811d2c0da76 231 pc.printf("Tag3 - NOK ");
matth420 0:d811d2c0da76 232 pc.printf("\n\r");
matth420 0:d811d2c0da76 233 egal3 = 0;
matth420 0:d811d2c0da76 234 break;
matth420 0:d811d2c0da76 235 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 236 }
matth420 0:d811d2c0da76 237 }
matth420 0:d811d2c0da76 238 for(int i=0; i<4; i++)
matth420 0:d811d2c0da76 239 {
matth420 0:d811d2c0da76 240 if(tag[i] == tag4[i])
matth420 0:d811d2c0da76 241 {
matth420 0:d811d2c0da76 242 egal4 = 1;
matth420 0:d811d2c0da76 243 pc.printf("Tag4 - OK ");
matth420 0:d811d2c0da76 244 pc.printf("\n\r");
matth420 0:d811d2c0da76 245 break;
matth420 0:d811d2c0da76 246 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 247 }
matth420 0:d811d2c0da76 248 else if(tag[i] != tag4[i])
matth420 0:d811d2c0da76 249 {
matth420 0:d811d2c0da76 250 pc.printf("Tag4 - NOK ");
matth420 0:d811d2c0da76 251 pc.printf("\n\r");
matth420 0:d811d2c0da76 252 egal4 = 0;
matth420 0:d811d2c0da76 253 break;
matth420 0:d811d2c0da76 254 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 255 }
matth420 0:d811d2c0da76 256 }
matth420 0:d811d2c0da76 257 for(int i=0; i<4; i++)
matth420 0:d811d2c0da76 258 {
matth420 0:d811d2c0da76 259 if(tag[i] == tag5[i])
matth420 0:d811d2c0da76 260 {
matth420 0:d811d2c0da76 261 egal5 = 1;
matth420 0:d811d2c0da76 262 pc.printf("Tag5 - OK ");
matth420 0:d811d2c0da76 263 pc.printf("\n\r");
matth420 0:d811d2c0da76 264 break;
matth420 0:d811d2c0da76 265 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 266 }
matth420 0:d811d2c0da76 267 else if(tag[i] != tag5[i])
matth420 0:d811d2c0da76 268 {
matth420 0:d811d2c0da76 269 pc.printf("Tag5 - NOK ");
matth420 0:d811d2c0da76 270 pc.printf("\n\r");
matth420 0:d811d2c0da76 271 egal5 = 0;
matth420 0:d811d2c0da76 272 break;
matth420 0:d811d2c0da76 273 //pc.printf(tag[i]);
matth420 0:d811d2c0da76 274 }
matth420 0:d811d2c0da76 275 }
matth420 0:d811d2c0da76 276 reponse_rfid[1]=0x00;
matth420 0:d811d2c0da76 277 }
matth420 0:d811d2c0da76 278
matth420 0:d811d2c0da76 279 led1=0;
matth420 0:d811d2c0da76 280 led2=0;
matth420 0:d811d2c0da76 281 led3=0;
matth420 0:d811d2c0da76 282
matth420 0:d811d2c0da76 283 wait_ms(500);
matth420 0:d811d2c0da76 284
matth420 0:d811d2c0da76 285 }
matth420 0:d811d2c0da76 286
matth420 0:d811d2c0da76 287
matth420 0:d811d2c0da76 288 if(capext >=1 & egal1 ==1) //Si le capteur extérieur est à 1
matth420 0:d811d2c0da76 289 {
matth420 0:d811d2c0da76 290 pc.printf("---------- Envoi de donnees au serveur ----------\r\n"); //Envoi de données au serveur
matth420 0:d811d2c0da76 291 strcpy(snd, "AT+CIPSEND=4\r\n"); //Commande envoyant le nombre de bytes voulu
matth420 0:d811d2c0da76 292 SendCMD();
matth420 0:d811d2c0da76 293 timeout=5;
matth420 0:d811d2c0da76 294 getreply();
matth420 0:d811d2c0da76 295 pc.printf(buf);
matth420 0:d811d2c0da76 296 strcpy(snd, "ECHA\r\n"); //Le chat vient de l'extérieur
matth420 0:d811d2c0da76 297 SendCMD();
matth420 0:d811d2c0da76 298 timeout=5;
matth420 0:d811d2c0da76 299 getreply();
matth420 0:d811d2c0da76 300 pc.printf(buf); //Statut de l'étape (OK/ERROR)
matth420 0:d811d2c0da76 301 }
matth420 0:d811d2c0da76 302
matth420 0:d811d2c0da76 303 if(capint >=1 & egal1 ==1) //Si le capteur intérieur est à 1
matth420 0:d811d2c0da76 304 {
matth420 0:d811d2c0da76 305 pc.printf("---------- Envoi de donnees au serveur ----------\r\n"); //Envoi de données au serveur
matth420 0:d811d2c0da76 306 strcpy(snd, "AT+CIPSEND=4\r\n"); //Commande envoyant le nombre de bytes voulu
matth420 0:d811d2c0da76 307 SendCMD();
matth420 0:d811d2c0da76 308 timeout=5;
matth420 0:d811d2c0da76 309 getreply();
matth420 0:d811d2c0da76 310 pc.printf(buf);
matth420 0:d811d2c0da76 311 strcpy(snd, "ICHA\r\n"); //Le chat vient de l'intérieur
matth420 0:d811d2c0da76 312 SendCMD();
matth420 0:d811d2c0da76 313 timeout=5;
matth420 0:d811d2c0da76 314 getreply();
matth420 0:d811d2c0da76 315 pc.printf(buf); //Statut de l'étape (OK/ERROR)
matth420 0:d811d2c0da76 316 }
matth420 0:d811d2c0da76 317
matth420 0:d811d2c0da76 318
matth420 0:d811d2c0da76 319
matth420 0:d811d2c0da76 320 if (bpmanuel ==1) //Activation du mode manuel
matth420 0:d811d2c0da76 321 {
matth420 0:d811d2c0da76 322 ledmm = 1 ; //Allumage Led indiquant que le mode manuel est activé
matth420 0:d811d2c0da76 323
matth420 0:d811d2c0da76 324 switch(position) //Switch en fonction de la position de la chatière pour le mode manuel
matth420 0:d811d2c0da76 325 {
matth420 0:d811d2c0da76 326 case 1 : //Mode manuel position n°1 (entrée seulement)
matth420 0:d811d2c0da76 327 if (F411 ==1) //Vérification alimentation servo par F411
matth420 0:d811d2c0da76 328 {
matth420 0:d811d2c0da76 329 myservo = 0.25; //Position du servomoteur n°1
matth420 0:d811d2c0da76 330 if(capteurfermeture==1) //Vérification de la fermeture de la chatière
matth420 0:d811d2c0da76 331 {
matth420 0:d811d2c0da76 332 position = 1; //La chatière est en position n°1 (entrée seulement)
matth420 0:d811d2c0da76 333 }
matth420 0:d811d2c0da76 334 }
matth420 0:d811d2c0da76 335 break; //Fin du case n°1
matth420 0:d811d2c0da76 336 case 2 : //Mode manuel position n°2 (sortie seulement)
matth420 0:d811d2c0da76 337 if (F411 ==1) //Vérification alimentation servo par F411
matth420 0:d811d2c0da76 338 {
matth420 0:d811d2c0da76 339 myservo = 0.5; //Position du servomoteur n°2
matth420 0:d811d2c0da76 340 if(capteurfermeture==1) //Vérification de la fermeture de la chatière
matth420 0:d811d2c0da76 341 {
matth420 0:d811d2c0da76 342 position = 2; //La chatière est en position n°2 (sortie seulement)
matth420 0:d811d2c0da76 343 }
matth420 0:d811d2c0da76 344 }
matth420 0:d811d2c0da76 345 break; //Fin du case n°2
matth420 0:d811d2c0da76 346 case 3 : //Mode manuel position n°3 (entréé ou sortie)
matth420 0:d811d2c0da76 347 if (F411 ==1) //Vérification alimentation servo par F411
matth420 0:d811d2c0da76 348 {
matth420 0:d811d2c0da76 349 myservo = 0.75 ; //Position du servomoteur n°3
matth420 0:d811d2c0da76 350 if(capteurfermeture==1) //Vérification de la fermeture de la chatière
matth420 0:d811d2c0da76 351 {
matth420 0:d811d2c0da76 352 position = 3; //La chatière est en position n°3 (entréé ou sortie)
matth420 0:d811d2c0da76 353 }
matth420 0:d811d2c0da76 354 }
matth420 0:d811d2c0da76 355 break; //Fin du case n°3
matth420 0:d811d2c0da76 356 case 4 : //Mode manuel position n°4 (verrouillage complet)
matth420 0:d811d2c0da76 357 if (F411 ==1) //Vérification alimentation servo par F411
matth420 0:d811d2c0da76 358 {
matth420 0:d811d2c0da76 359 myservo = 1 ; //Position du servomoteur n°4
matth420 0:d811d2c0da76 360 if(capteurfermeture==1) //Vérification de la fermeture de la chatière
matth420 0:d811d2c0da76 361 {
matth420 0:d811d2c0da76 362 position = 4; //La chatière est en position n°4 (verrouillage complet)
matth420 0:d811d2c0da76 363 }
matth420 0:d811d2c0da76 364 }
matth420 0:d811d2c0da76 365 break; //Fin du case n°4
matth420 0:d811d2c0da76 366 default : //Fin du mode manuel
matth420 0:d811d2c0da76 367 } //Fin du switch
matth420 0:d811d2c0da76 368 } //Fin du mode manuel
matth420 0:d811d2c0da76 369 }
matth420 0:d811d2c0da76 370 } //Fin du int main
matth420 0:d811d2c0da76 371 //+++++++++++++++++++++++++++++ Voids RFID +++++++++++++++++++++++++++++
matth420 0:d811d2c0da76 372 /*void HandShake(){
matth420 0:d811d2c0da76 373 pc.printf("\n\r");
matth420 0:d811d2c0da76 374 pc.printf("CTS IS TO 0");
matth420 0:d811d2c0da76 375 pc.printf("\n\r");
matth420 0:d811d2c0da76 376 }*/
matth420 0:d811d2c0da76 377
matth420 0:d811d2c0da76 378 void Antenna()
matth420 0:d811d2c0da76 379 {
matth420 0:d811d2c0da76 380 pc.printf("\n\r");
matth420 0:d811d2c0da76 381 pc.printf("ANTENNA NOT DETECTED");
matth420 0:d811d2c0da76 382 pc.printf("\n\r");
matth420 0:d811d2c0da76 383 }
matth420 0:d811d2c0da76 384
matth420 0:d811d2c0da76 385 void field()
matth420 0:d811d2c0da76 386 {
matth420 0:d811d2c0da76 387 pc.printf("\n\r");
matth420 0:d811d2c0da76 388 pc.printf("NOT TAG IN FIELD");
matth420 0:d811d2c0da76 389 pc.printf("\n\r");
matth420 0:d811d2c0da76 390 }
matth420 0:d811d2c0da76 391
matth420 0:d811d2c0da76 392 // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++
matth420 0:d811d2c0da76 393 void ESPconfig()
matth420 0:d811d2c0da76 394 {
matth420 0:d811d2c0da76 395 wait(5);
matth420 0:d811d2c0da76 396 strcpy(snd,"AT\r\n");
matth420 0:d811d2c0da76 397 SendCMD();
matth420 0:d811d2c0da76 398 timeout=1;
matth420 0:d811d2c0da76 399 getreply();
matth420 0:d811d2c0da76 400 wait(1);
matth420 0:d811d2c0da76 401 pc.printf("-------------- Redemarrage du module --------------\r\n"); //Redémarrage du module WIFI ESP8266
matth420 0:d811d2c0da76 402 strcpy(snd,"AT+RST\r\n"); //Commande redémarrage du module WIFI ESP8266
matth420 0:d811d2c0da76 403 SendCMD();
matth420 0:d811d2c0da76 404 timeout=5;
matth420 0:d811d2c0da76 405 getreply();
matth420 0:d811d2c0da76 406 pc.printf(buf);
matth420 0:d811d2c0da76 407
matth420 0:d811d2c0da76 408 wait(3); //Délai inter-étape
matth420 0:d811d2c0da76 409
matth420 0:d811d2c0da76 410 pc.printf("\n---------- Mode Wifi ----------\r\n"); //Initialisation du mode WIFI
matth420 0:d811d2c0da76 411 strcpy(snd, "AT+CWMODE=3\r\n"); //Commande initialisation du module WIFI ESP8266
matth420 0:d811d2c0da76 412 SendCMD();
matth420 0:d811d2c0da76 413 timeout=4;
matth420 0:d811d2c0da76 414 getreply();
matth420 0:d811d2c0da76 415 pc.printf(buf);
matth420 0:d811d2c0da76 416
matth420 0:d811d2c0da76 417 wait(2); //Délai inter-étape
matth420 0:d811d2c0da76 418
matth420 0:d811d2c0da76 419 pc.printf("\n---------- Connexion au point d acces ----------\r\n"); //Connection au serveur IOP
matth420 0:d811d2c0da76 420 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
matth420 0:d811d2c0da76 421 strcpy(snd, "AT+CWJAP=\""); //Commande de connection au serveur IOP
matth420 0:d811d2c0da76 422 strcat(snd, ssid);
matth420 0:d811d2c0da76 423 strcat(snd, "\",\"");
matth420 0:d811d2c0da76 424 strcat(snd, pwd);
matth420 0:d811d2c0da76 425 strcat(snd, "\"\r\n");
matth420 0:d811d2c0da76 426 SendCMD();
matth420 0:d811d2c0da76 427 timeout=10;
matth420 0:d811d2c0da76 428 getreply();
matth420 0:d811d2c0da76 429 pc.printf(buf); //Statut de l'étape (OK/ERROR)
matth420 0:d811d2c0da76 430
matth420 0:d811d2c0da76 431 wait(5); //Délai inter-étape
matth420 0:d811d2c0da76 432
matth420 0:d811d2c0da76 433 pc.printf("\n---------- Adresse IP local ----------\r\n"); //Adressage IP
matth420 0:d811d2c0da76 434 strcpy(snd, "AT+CIFSR\r\n"); //Commande affichant adresse IP et MAC du PC ainsi que du module WIFI ESP8266
matth420 0:d811d2c0da76 435 SendCMD();
matth420 0:d811d2c0da76 436 timeout=3;
matth420 0:d811d2c0da76 437 getreply();
matth420 0:d811d2c0da76 438 pc.printf(buf); //Statut de l'étape (OK/ERROR)
matth420 0:d811d2c0da76 439
matth420 0:d811d2c0da76 440 wait(5); //Délai inter-étape
matth420 0:d811d2c0da76 441
matth420 0:d811d2c0da76 442 pc.printf("\n---------- TCP Client ----------\r\n"); //Connection au serveur en tant que client
matth420 0:d811d2c0da76 443 strcpy(snd, "AT+CIPSTART=\"TCP\",\"192.168.10.12\",55555\r\n"); //Commande connection au serveur : Protocol , Adresse IP serveur , port
matth420 0:d811d2c0da76 444 SendCMD();
matth420 0:d811d2c0da76 445 timeout=5;
matth420 0:d811d2c0da76 446 getreply();
matth420 0:d811d2c0da76 447 pc.printf(buf); //Statut de l'étape (OK/ERROR)
matth420 0:d811d2c0da76 448
matth420 0:d811d2c0da76 449 wait(5); //Délai inter-étape
matth420 0:d811d2c0da76 450
matth420 0:d811d2c0da76 451
matth420 0:d811d2c0da76 452 } //Fin du void config
matth420 0:d811d2c0da76 453
matth420 0:d811d2c0da76 454 void SendCMD()
matth420 0:d811d2c0da76 455 {
matth420 0:d811d2c0da76 456 esp.printf("%s", snd);
matth420 0:d811d2c0da76 457 }
matth420 0:d811d2c0da76 458
matth420 0:d811d2c0da76 459 void getreply()
matth420 0:d811d2c0da76 460 {
matth420 0:d811d2c0da76 461 memset(buf, '\0', sizeof(buf));
matth420 0:d811d2c0da76 462 t.start();
matth420 0:d811d2c0da76 463 ended=0;
matth420 0:d811d2c0da76 464 count=0;
matth420 0:d811d2c0da76 465 while(!ended) {
matth420 0:d811d2c0da76 466 if(esp.readable()) {
matth420 0:d811d2c0da76 467 buf[count] = esp.getc();
matth420 0:d811d2c0da76 468 count++;
matth420 0:d811d2c0da76 469 }
matth420 0:d811d2c0da76 470 if(t.read() > timeout) {
matth420 0:d811d2c0da76 471 ended = 1;
matth420 0:d811d2c0da76 472 t.stop();
matth420 0:d811d2c0da76 473 t.reset();
matth420 0:d811d2c0da76 474 }
matth420 0:d811d2c0da76 475 }
matth420 0:d811d2c0da76 476 }