Me disculpo enormemente por demorarme tanto, nos centramos en otras cosas pensando que el código de arduino sería un poco menos complejo, ya veo el error...
De antemano, probé diferentes formas y al parecer no fui capaz de hacer una conexión entre el MEGA y el ESP8266, por lo cual me decanté por usar exclusivamente el ESP8266 junto al AS608, como me había comentado Surbyte; aunque proximamente agregaré un pequeño display para mostrar la información.
Tengo actualmente un código un poco simple para la lectura y el envío de datos; el envío se realizará mediante una conexión entre el ESP y PHP intermediario, pero el código me causó un error 301:
//(Hago pequeña aclaración, y pregunta: Mi host está comprado en hostinger.com. ¿Esto podría causar algún problema?) De antemano, agradezco si podrían comentar si hay alguna variable o qué podría estar mal, dado que no puedo encontrar el problema. Linda noche.
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFiMulti.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
//CREDENCIALES DE INTERNET
const char* ssid = "WIFI_ESP";
const char* psswrd = "ESP8266_bst";
WiFiClient client;
//DEFINICION DEL AS608 Y VARIABLES REFERIDAS A ÉL
#define FING_RX 14 //D5
#define FING_TX 12 //D6
SoftwareSerial mySerial(FING_RX, FING_TX);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int FingerID = 0;
uint8_t id;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, psswrd);
Serial.print("\nConectando a..."); Serial.print(ssid);
while(WiFi.status() != WL_CONNECTED) {
delay(700);
Serial.print("/");
}
Serial.println("\n\nByteSync - TECH");
Serial.println("\nConectado correctamente");
Serial.println("Red: "); Serial.print(ssid);
Serial.println("\nDireccion IP: "); Serial.print(WiFi.localIP());
finger.begin(57600);
Serial.println("\n\n\nDetectando el sensor");
if (finger.verifyPassword()) {
Serial.println("AS608 Detectado");
} else {
Serial.println("No se detecto el sensor");
while(1) { delay(1); }
}
finger.getTemplateCount();
Serial.println("El sensor cuenta con... "); Serial.print(finger.getTemplateCount()); Serial.println(" plantillas");
Serial.println("esperando por una huella valida...");
}
void loop() {
getFingerprintEnroll();
FingerID = id;
EnviarDatos(FingerID);
}
void EnviarDatos(int finger) {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String datos_a_enviar = "fingTemplate" + String(finger);
http.begin(client, "http://bst-proyecto.com/ESP_Post.php");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int codigo_respuesta = http.POST(datos_a_enviar);
if(codigo_respuesta > 0) {
Serial.println("Codigo HTTP: " + String(codigo_respuesta));
if(codigo_respuesta == 200) {
String cuerpo_respuesta = http.getString();
Serial.println("\nRespuesta del servidor: ");
Serial.println(cuerpo_respuesta);
}
} else {
Serial.println("\nError enviado POST, codigo: ");
Serial.println(codigo_respuesta);
}
http.end();
} else {
Serial.println("Error en la conexion WiFi");
}
delay(3000);
}
uint8_t getFingerprintEnroll() {
int p = -1;
Serial.println("Esperando una huella para guardar como... #"); Serial.println(id);
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen tomada");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Error de comunicacion");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Error con la imagen");
break;
default:
Serial.println("Error desconocido");
break;
}
}
// OK success!
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen convertida");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Imagen con movimiento");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Error de comunicacion");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("No se encontraron caracteristicas dactilares");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("No se encontraron caracteristicas dactilares");
return p;
default:
Serial.println("Error desconocido");
return p;
}
Serial.println("Retira tu dedo");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Coloca de nuevo el mismo dedo");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen tomada");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Error de comunicacion");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Error de imagen");
break;
default:
Serial.println("Error desconocido");
break;
}
}
// OK success!
p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen convertida");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Imagen con movimiento");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Error de comunicacion");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("No se encontraron caracteristicas dactilares");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("No se encontraron caracteristicas dactilares");
return p;
default:
Serial.println("Error desconocido");
return p;
}
// OK converted!
Serial.print("Creando modelo para... #"); Serial.println(id);
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Coincidencia encontrada");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Error de comunicacion");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("No se encontro coincidencia");
return p;
} else {
Serial.println("Error desconocida");
return p;
}
Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Huella almacenada");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Error de comunicacion");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("No se puede almacenar en esa ubicacion");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error escribiendo a la memoria");
return p;
} else {
Serial.println("Error desconocido");
return p;
}
return true;
}
Y al momento de ejecutar el código pasa lo siguiente:
EDIT:
Olvidé adjuntar el significado del error 301: Indica que el host ha sido capaz de comunicarse con el servidor, pero que el recurso solicitado ha sido movido a otra dirección permanentemente
