ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

esp8266 ต่อกับโมดูลสแกนนิ้ว fingerprint โค้ดไม่error แต่ข้อความไม่ออก

Muk Chanapa

ต่อวงจรด้วย esp8266 ต่อกับโมดูลสแกนนิ้ว fingerprint  พออัพโหลดโค้ดไม่มี error ค่ะ แต่ข้อความที่ serial.print ออกทาง serial monitor ไม่ออก พอจะทราบสาเหตุไหมค่ะ

โค้ดที่ใช้ได้ดัดแปลงเอาการแสดงค่าออกจอแสดงผล OLED ออกค่ะ

QUOTE 
ความคิดเห็นที่ #1
Muk Chanapa

นี้โค้ดที่ใช้ค่ะ

//*******************************libraries********************************
#include <SPI.h>
#include <Wire.h>
#include <WiFiClient.h>
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include <Adafruit_Fingerprint.h> //https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library
//************************************************************************
//Fingerprint scanner Pins
#define Finger_Rx D5
#define Finger_Tx D6

//************************************************************************
SoftwareSerial mySerial(2,3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
//************************************************************************
/* Set these to your desired credentials. */
const char *ssid = "hello"; //ENTER YOUR WIFI SETTINGS
const char *password = "12345678";
//************************************************************************
String postData ; // post array that will be send to the website
String link = "http://YourComputerIP/biometricattendance/getdata.php"; //computer IP or the server domain
int FingerID = 0; // The Fingerprint ID from the scanner
uint8_t id;

//************************************************************************
void setup() {

Serial.begin(115200);
//---------------------------------------------

connectToWiFi();

//---------------------------------------------

// set the data rate for the sensor serial port

finger.begin(57600);
Serial.println("\n\nAdafruit finger detect test");

if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");

} else {
Serial.println("Did not find fingerprint sensor :(");

while (1) { delay(1); }
}
//---------------------------------------------

finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");

//------------*test the connection*------------

SendFingerprintID( FingerID );

}
//************************************************************************
void loop() {

//check if there's a connection to WiFi or not
if(WiFi.status() != WL_CONNECTED){
connectToWiFi();
}
//---------------------------------------------
//If there no fingerprint has been scanned return -1 or -2 if there an error or 0 if there nothing, The ID start form 1 to 127
FingerID = getFingerprintID(); // Get the Fingerprint ID from the Scanner
delay(50); //don't need to run this at full speed.

//---------------------------------------------

DisplayFingerprintID();

//---------------------------------------------

ChecktoAddID();

//---------------------------------------------

ChecktoDeleteID();

//---------------------------------------------
}
//************Display the fingerprint ID state on the OLED*************
void DisplayFingerprintID(){
//Fingerprint has been detected
if (FingerID > 0){

SendFingerprintID( FingerID ); // Send the Fingerprint ID to the website.

}
//---------------------------------------------
//No finger detected
else if (FingerID == 0){

Serial.print("No");
}
//---------------------------------------------
//Didn't find a match
else if (FingerID == -1){

Serial.print("don'tfind");
}
//---------------------------------------------
//Didn't find the scanner or there an error
else if (FingerID == -2){

Serial.print("error");
}
}
//************send the fingerprint ID to the website*************
void SendFingerprintID( int finger ){

HTTPClient http; //Declare object of class HTTPClient
//Post Data
postData = "FingerID=" + String(finger); // Add the Fingerprint ID to the Post array in order to send it
// Post methode

http.begin(link); //initiate HTTP request, put your Website URL or Your Computer IP
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header

int httpCode = http.POST(postData); //Send the request
String payload = http.getString(); //Get the response payload

Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
Serial.println(postData); //Post Data
Serial.println(finger); //Print fingerprint ID

if (payload.substring(0, 5) == "login") {
String user_name = payload.substring(5);
Serial.println(user_name);


}
else if (payload.substring(0, 6) == "logout") {
String user_name = payload.substring(6);
Serial.println(user_name);

}
delay(1000);

postData = "";
http.end(); //Close connection
}
//********************Get the Fingerprint ID******************
int getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println("No finger detected");
return 0;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return -2;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return -2;
default:
Serial.println("Unknown error");
return -2;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return -1;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return -2;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return -2;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return -2;
default:
Serial.println("Unknown error");
return -2;
}
// OK converted!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return -2;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return -1;
} else {
Serial.println("Unknown error");
return -2;
}
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);

return finger.fingerID;
}
//******************Check if there a Fingerprint ID to delete******************
void ChecktoDeleteID(){

HTTPClient http; //Declare object of class HTTPClient
//Post Data
postData = "DeleteID=check"; // Add the Fingerprint ID to the Post array in order to send it
// Post methode

http.begin(link); //initiate HTTP request, put your Website URL or Your Computer IP
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header

int httpCode = http.POST(postData); //Send the request
String payload = http.getString(); //Get the response payload

if (payload.substring(0, 6) == "del-id") {
String del_id = payload.substring(6);
Serial.println(del_id);
deleteFingerprint( del_id.toInt() );
}

http.end(); //Close connection
}
//******************Delete Finpgerprint ID*****************
uint8_t deleteFingerprint( int id) {
uint8_t p = -1;

p = finger.deleteModel(id);

if (p == FINGERPRINT_OK) {
Serial.println("Deleted!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");

return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not delete in that location");

return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");

return p;
} else {
Serial.print("Unknown error: 0x"); Serial.println(p, HEX);

return p;
}
}
//******************Check if there a Fingerprint ID to add******************
void ChecktoAddID(){

HTTPClient http; //Declare object of class HTTPClient
//Post Data
postData = "Get_Fingerid=get_id"; // Add the Fingerprint ID to the Post array in order to send it
// Post methode

http.begin(link); //initiate HTTP request, put your Website URL or Your Computer IP
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header

int httpCode = http.POST(postData); //Send the request
String payload = http.getString(); //Get the response payload

if (payload.substring(0, 6) == "add-id") {
String add_id = payload.substring(6);
Serial.println(add_id);
id = add_id.toInt();
getFingerprintEnroll();
}
http.end(); //Close connection
}
//******************Enroll a Finpgerprint ID*****************
uint8_t getFingerprintEnroll() {

int p = -1;

while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");

break;
case FINGERPRINT_NOFINGER:
Serial.println(".");

break;
case FINGERPRINT_PACKETRECIEVEERR:

break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}

// OK success!

p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("OK");

break;
case FINGERPRINT_IMAGEMESS:
Serial.println(".");

return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

Serial.println("Remove finger");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;

while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");

break;
case FINGERPRINT_NOFINGER:
Serial.println(".");

break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}

// OK success!

p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");

break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

// OK converted!
Serial.print("Creating model for #"); Serial.println(id);

p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}

Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");

confirmAdding();
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}
//******************Check if there a Fingerprint ID to add******************
void confirmAdding(){

HTTPClient http; //Declare object of class HTTPClient
//Post Data
postData = "confirm_id=" + String(id); // Add the Fingerprint ID to the Post array in order to send it
// Post methode

http.begin(link); //initiate HTTP request, put your Website URL or Your Computer IP
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header

int httpCode = http.POST(postData); //Send the request
String payload = http.getString(); //Get the response payload

delay(1000);
Serial.println(payload);

http.end(); //Close connection
}
//********************connect to the WiFi******************
void connectToWiFi(){
WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect)
delay(1000);
WiFi.mode(WIFI_STA);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected");

Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP

}

QUOTE 
ความคิดเห็นที่ #2
เจ้าของร้าน

เท่าที่ทดลอง fingerprint รองรับ esp32 ยังไม่รองรับ esp8266

สาเหตุเพราะติดปัญหาทางการสื่อสารแบบ Serial กับ esp8266

อาจจะต้องหาข้อมูลเพิ่มเติมครับ

แสดงความคิดเห็นที่ 1-2 จากทั้งหมด 2 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม