#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>
#include <SPI.h> // SPI
#include <MFRC522.h> // RFID
#define SS_PIN 10
#define RST_PIN 9
// Déclaration
MFRC522 rfid(SS_PIN, RST_PIN);
DFRobot_SIM808 sim808(&Serial);
// Tableau contentent l'ID
byte nuidPICC[4];
String A,B,C,D,E,F;
char web_hook[75];
//#define PIN_TX 10
//#define PIN_RX 11
//SoftwareSerial mySerial(PIN_TX,PIN_RX);
//DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,
//make sure that the baud rate of SIM900 is 9600!
//you can use the AT Command(AT+IPR=9600) to set it through SerialDebug
char buffer[512];
void setup(){
//RFID
// Init RS232
Serial.begin(9600);
// Init SPI bus
SPI.begin();
// Init MFRC522
rfid.PCD_Init();
//mySerial.begin(9600);
Serial.begin(9600);
}
void loop(){
// Initialisé la boucle si aucun badge n'est présent
if ( !rfid.PICC_IsNewCardPresent())
return;
// Vérifier la présence d'un nouveau badge
if ( !rfid.PICC_ReadCardSerial())
return;
// Enregistrer l'ID du badge (4 octets)
for (byte i = 0; i < 4; i++)
{
nuidPICC[i] = rfid.uid.uidByte[i];
}
// Affichage de l'ID
Serial.println("Un badge est détecté");
Serial.println(" L'UID du tag est:");
for (byte i = 0; i < 4; i++)
{
Serial.print(nuidPICC[i], HEX);
Serial.print("");
}
Serial.println();
A=nuidPICC[0];
B=nuidPICC[1];
C=nuidPICC[2];
D=nuidPICC[3];
E=nuidPICC[4];
F=A+B+C+D+E;
Serial.println(F);
String http_cmd = "GET /api/verifier-agent/" + F + " HTTP/1.0\r\n\r\n";
//*** Initialize sim808 module ******
while(!sim808.init()) {
delay(1000);
Serial.print("Sim808 init error\r\n");
}
delay(3000);
//**** Attempt DHCP ********
while(!sim808.join(F("cmnet"))) {
Serial.println("Sim808 join network error");
delay(2000);
}
//**** Successful DHCP ******
Serial.print("IP Address is ");
Serial.println(sim808.getIPAddress());
//**** Establish a TCP connection *****
if(!sim808.connect(TCP,"telepointage.tech.com", 80)) {
Serial.println("Connect error");
}else{
Serial.println("Connect success");
}
//**** Send a GET request ******
Serial.println("waiting to fetch...");
String_to_Char(http_cmd, 75, web_hook);
sim808.send(web_hook, sizeof(web_hook)-1);
while (true) {
int ret = sim808.recv(buffer, sizeof(buffer)-1);
if (ret <= 0){
Serial.println("fetch over...");
break;
}
buffer[ret] = '\0';
Serial.print("Recv: ");
Serial.print(ret);
Serial.print(" bytes: ");
Serial.println(buffer);
break;
}
//***** Close TCP or UDP connections ****
sim808.close();
//* Disconnect wireless connection, Close Moving Scene ***
sim808.disconnect();
// Re-Init RFID
rfid.PICC_HaltA(); // Halt PICC
rfid.PCD_StopCrypto1(); // Stop encryption on PCD
}
void String_to_UnChar(String _String, int _size, unsigned char _convert[]){
for(int i=0;i<_size;i++){
_convert[i] = _String[i];
}
}
void String_to_Char(String _String, int _size, char _convert[]){
for(int i=0;i<_size;i++){
_convert[i] = _String[i];
}
}