Bonjour, je débute avec l'arduino yun, et j'aimerais créer une interface web pour enregistrer des badges RFID.
Le problème est que pour l'instant, je n'arrive même pas à me connecter à celle ci.
Voici mon code:
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <SPI.h>
#include <RFID.h>
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
#include <FileIO.h>
#include<Servo.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
Adafruit_PCD8544 display = Adafruit_PCD8544(7,6,5,4,3);
Servo porte;
YunServer server;
void setup() {
SerialUSB.begin(9600);
porte.attach(9);
porte.write(0);
SPI.begin();
rfid.init();
Bridge.begin();
FileSystem.begin();
display.begin();
display.setContrast(65);
display.setRotation(2);
display.clearDisplay();
display.display();
server.listenOnLocalhost();
server.begin();
}
void loop() {
testRfid();
testServeur();
}
void ouvrePorte(){
for(int i = 0;i<150;i++){
porte.write(i);
delay(10);
}
delay(3000);
for(int i = 150;i>0;i--){
porte.write(i);
delay(10);
}
}
void testRfid(){
display.clearDisplay();
display.println("Veuillez");
display.println("Passer le");
display.println("badge. SVP");
display.display();
//on test si un badge est present
if(rfid.isCard()){
//on lit le code
if(rfid.readCardSerial()){
display.clearDisplay();
display.println("Analyse du");
display.println("badge en cours");
for(int i = 0; i< 14;i++)
{
display.print(".");
display.display();
delay(200);
}
display.println();
display.display();
//on recupere le fichier RFID pour compter le nombre de ligne
File file = FileSystem.open("/mnt/sda1/RFID",FILE_READ);
int nombre_ligne = 0;
while(file.available()){
char c = file.read();
if(c == ']')nombre_ligne++;
}
bool badge_correct = false;
String label = "";
//on test pour chaque ligne si le badge est correcte
File RFID = FileSystem.open("/mnt/sda1/RFID",FILE_READ);
for(int i = 0; i < nombre_ligne;i++){
int nombre_correct = 0;
RFID.readStringUntil('[');
for(int j = 0; j < 5 ; j++){
int nombre;
String chiffre;
if(j < 4)chiffre = RFID.readStringUntil('.');
else chiffre = RFID.readStringUntil(':');
nombre = chiffre.toInt();
if(nombre == rfid.serNum[j])nombre_correct++;
else nombre_correct = 0;
}
label = RFID.readStringUntil(']');
if(nombre_correct == 5){
badge_correct = true;
break;
}
}
if(badge_correct == true){
display.clearDisplay();
display.println("Bonjour");
display.println(label);
display.println("Vous etes");
display.println("autorise a");
display.println("entrer");
display.display();
delay(3000);
ouvrePorte();
}
else {
display.clearDisplay();
display.println("Bonjour");
display.println("Vous n etes");
display.println("pas autorise");
display.println("a entrer");
display.display();
delay(3000);
}
delay(1000);
}
}
}
void testServeur(){
YunClient client = server.accept();
if (client.connected()) {
while(client.available()){
String cmd = client.readStringUntil('/');
SerialUSB.println(cmd);
if(cmd == "formu")addBadgePage(client);
else if(cmd == "add")saveBadge(client);
else client.stop();
SerialUSB.print("/");
}
client.stop();
}
}
void addBadgePage(YunClient client){
client.println("Status: 200");
client.println("Content-type: text/html");
client.println();
client.println("<SCRIPT LANGUAGE='JavaScript'>");
client.println("function add(){");
client.println("var code = document.getElementById('code').value;");
client.println("var label = document.getElementById('label').value;");
client.println("document.location.href='/add/'+code+'/'+label;");
client.println("}");
client.println("</SCRIPT>");
client.println("<form name=formu>");
client.println("<p><h1>Ajout d'un badge RFID</h1></p>");
client.println("<fieldset><legend>Information</legend>");
client.println("<input type=text id=label name=label placeholder='Nom du badge...'><p>");
client.println("<input type=text id=code name=code placeholder='ID du badge...'>
");
client.println("<i>Pour connaitre le code d'un badge
appuyez sur le bouton add.</i><p>");
client.println("<input type=button value='Ajouter le badge' onclick=add()>");
client.println("</fieldset></form>");
client.stop();
}
void saveBadge(YunClient client){
String code = client.readStringUntil('/');
String label = client.readStringUntil('/');
SerialUSB.print("Code: ");
SerialUSB.println(code);
SerialUSB.print("Label: ");
SerialUSB.println(label);
SerialUSB.println();
}
Je vous remercie d'avance