L’objectif de cet atelier est de créer un système de contrôle d’accès au domicile et parking en se basent sur des cartes RFID pour l’identification et wifi pour la liaison avec une base de donnée MySQL

Fonctions :
Setup() :
La fonction setup () ne fonctionnera qu'une seule fois, après chaque mise sous tension ou réinitialisation de la carte Arduino. Utilisez-le pour initialiser les variables, les modes broches, commencer à utiliser les bibliothèques, etc.
Loop() :
Fonction fait précisément ce que son nom suggère et effectue des boucles consécutives, permettant à votre programme de changer et de répondre. Utilisez-le pour contrôler activement la carte Arduino.
delay(ms) :
Met le programme en pause pour la durée (en millisecondes) spécifiée en paramètre. (Il y a 1000 millisecondes par seconde.)
ms: le nombre de millisecondes à suspendre
connect() :
Connectez-vous à l'adresse IP et au port spécifiés dans le constructeur. La valeur de retour indique le succès ou l'échec.
client .connect (ip, port)
client .connect (URL, port)
ip: l'adresse IP à laquelle le client se connectera (tableau de 4 octets)
URL: le nom de domaine auquel le client se connectera (string, ex.:"arduino.cc ")
port: le port auquel le client se connectera (int)
attach() :
Prend en argument un unique paramètre obligatoire correspond au numéro de broche sur laquelle le servomoteur est câblé
Servo.attach(PIN)
write() :
Permet de modifier l'angle du bras du servomoteur en donnant en paramètre l'angle en question, sous la forme d'un nombre entier compris entre 0° et 180°
Servo.write (N)
Matériels :
BreadBoard : permet de réaliser le prototype d'un circuit électronique et de le tester, sans aucune soudure.

Figure 1: BreadBoard
Câbles : pour la liaison des différents composants du système (dans cet atelier nous allons utiliser les câbles de type male-male)

Figure 2: Câbles
ESP8266 v3 : carte interactif basé sur LUA Wi-Fi Expressif ESP8622, contrairement aux modules Wi-Fi ESP8266, inclut une puce CPL2102 TTL to USB pour la programmation et le débogage via pc, et peut simplement être alimenté via son port USB.

Figure 3: ESP8266 v3
RFID-RC522 : détecte des badges ou des cartes magnétiques à moins de 10 cm. Le passage d’un composant magnétique permet de lire l’identifiant de l'UID de la carte, ainsi que les données enregistrées.

Figure 4: RFID-RC522
Servomotor : moteur un peu particulier, qui peut tourner avec une liberté d'environ 180° et garder de manière relativement précise l'angle de rotation que l'on souhaite obtenir.

Figure 5: Servomotor
Code Source:
//librairies
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
// Pin assignment
#define SS_PIN D4
#define RST_PIN D3
const char* ssid = " "; // your ssid example: AndroidAP
const char* password = " "; // your password example: 12345
WiFiClient client; // Use this for WiFi instead of EthernetClient
WiFiServer server(80);
const char* host = "192.168.43.2"; // IP address of your Host
char user[] = " "; // MySQL user login username
char pass[] = " "; // MySQL user login password
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
Servo monServomoteur; // Create a servo object
String path= "/projects/light.json"; // json file containing the data collected from the data base
void setup()
{
Serial.begin(115200); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
monServomoteur.attach(D2);
Serial.println();
WiFi.mode(WIFI_STA);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
server.begin();
Serial.println("Server started");
Serial.println(WiFi.localIP());
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] );
content.concat(mfrc522.uid.uidByte[i] );
}
Serial.println();
String data = "NCard=";
data += content;
if(client.connect(host,80)) {
client.println("GET /projects/verification.php?"+ data +" HTTP/1.1");
client.println("Host: 192.168.43.2" );
client.println("Connection: close");
client.println();
delay(2000);
}
if(client.connect(host,80)) {
client.print(String("GET ") + path + " HTTP/1.1\r\n" + "Host: " + host
+ "\r\n" + "Connection: keep-alive\r\n\r\n");
delay(500);
String section="header";
while(client.available()){
String line = client.readStringUntil('\r');
if (section=="header") { // headers..
Serial.print(".");
if (line=="\n") { // skips the empty space at the beginning
section="json";
}
}
else if (section=="json") { // print the good stuff
section="ignore";
String result = line.substring(1); // Parse JSON
int size = result.length() + 1;
char json[size];
result.toCharArray(json, size);
StaticJsonBuffer<200> jsonBuffer;
JsonObject& json_parsed = jsonBuffer.parseObject(json);
if (!json_parsed.success())
{
Serial.println("parseObject() failed");
return;
}
if (strcmp(json_parsed["statut"], "1") == 0) {
monServomoteur.write(0);
delay(1000);
monServomoteur.write(90);
}
}
} }}
Tables de correspondance :
|
RFID RC522 |
ESP8266 v3 |
|
SDA |
D4 |
|
SCK |
D5 |
|
MOSI |
D7 |
|
MISO |
D6 |
|
IRC |
- |
|
GND |
GND |
|
RST |
D3 |
|
3.3v |
3v |
Tableau 1: Correspondance entre ESP8266 v3 et RFID-RC522
|
ServoMotor |
ESP8266 v3 |
|
- |
GND |
|
+ |
5v |
|
Signal |
D2 |
Tableau 2: Correspondance entre ESP8266 v3 et ServoMotor
Auteur:
Fatima Zahra Fagroud, Student
HASSAN 2 University, Casablanca,
Faculty of Sciences Ben M'Sik. Morocco











