programme intégré
Dependencies: MODSERIAL Servo mbed
main.cpp@0:d811d2c0da76, 2018-05-23 (annotated)
- Committer:
- matth420
- Date:
- Wed May 23 17:33:36 2018 +0000
- Revision:
- 0:d811d2c0da76
- Child:
- 1:ca1ad3dc37b3
Who changed what in which revision?
User | Revision | Line number | New 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 | } |