#php #arduino
#php #arduino
Вопрос:
Я использую датчик отпечатков пальцев AS608 с платой arduino uno R3, чтобы вставить отпечаток пальца в базу данных с помощью php. Библиотека, которую я использую, — это библиотека датчиков отпечатков пальцев Adafruit. Что я хочу сделать, так это использовать свой датчик отпечатков пальцев для сохранения отпечатков пальцев в базе данных, а не просто хранить их в датчике отпечатков пальцев. Но проблема в том, что он всегда показывает сбой подключения, и отпечаток пальца не вставляется в базу данных. Может ли кто-нибудь помочь мне в решении этой проблемы? Спасибо.
Вот исходный код для моего arduino.
#include lt;Adafruit_Fingerprint.hgt; #include lt;SPI.hgt; #include lt;Ethernet.hgt; #include lt;SoftwareSerial.hgt; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1,177); //IP address for your arduino. char server[] = "192.168.1.106"; //IP address of your computer. int interrupt=0; //Variable to control the iterations of void loop(). String mod=""; //Variable to be written on the database. String rcv=""; //Variable in which the server response is recorded. EthernetClient client; SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(amp;mySerial); uint8_t id; void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... delay(100); Serial.println("nnAdafruit Fingerprint sensor enrollment"); // set the data rate for the sensor serial port finger.begin(57600); Ethernet.begin(mac, ip); delay(5000); //Wait for ethernet to connect. if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1) { delay(1); } } } void httpRequest() {// Connect to the server (your computer or web page) if (client.connect(server, 80)) { client.print("GET /fingerprint/fingerprint.php?"); // This client.print("ID_S="); // This client.print(id); // And this is what we did in the testing section above. We are making a GET request just like we would from our browser but now with live data from the sensor client.println(" HTTP/1.1"); // Part of the GET request client.println("Host: 192.168.1.106"); // IMPORTANT: If you are using XAMPP you will have to find out the IP address of your computer and put it here (it is explained in previous article). If you have a web page, enter its address (ie.Host: "www.yourwebpage.com") client.println("Connection: close"); // Part of the GET request telling the server that we are over transmitting the message client.println(); // Empty line client.println(); // Empty line client.stop(); // Closing connection to server } else { // If Arduino can't connect to the server (your computer or web page) Serial.println("--gt; connection failedn"); } } uint8_t readnumber(void) { uint8_t num = 0; while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); } return num; } void loop() // run over and over again { Serial.println("Ready to enroll a fingerprint!"); Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as..."); id = readnumber(); if (id == 0) {// ID #0 not allowed, try again! return; } Serial.print("Enrolling ID #"); Serial.println(id); while (! getFingerprintEnroll() ); } uint8_t getFingerprintEnroll() { int p = -1; Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id); 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(1); 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; } Serial.println("Remove finger"); delay(2000); p = 0; while (p != FINGERPRINT_NOFINGER) { p = finger.getImage(); } Serial.print("ID "); Serial.println(id); p = -1; Serial.println("Place same finger again"); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.print("."); 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) { httpRequest(); Serial.println ("Stored!"); } 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; } delay(10000); }
Вот мой php-код.
lt;?php include ('connection.php'); $sql_insert = "INSERT INTO student (ID_S) VALUES ('".$_GET["ID_S"]."')"; if(mysqli_query($con,$sql_insert)) { echo "Done"; mysqli_close($con); } else { echo "error is ".mysqli_error($con ); } ?gt;
Вот ошибка, которая отображается в arduino.
Вот ошибка, которая отображается на моей веб-странице.
Может кто-нибудь сказать мне, в чем моя проблема, потому что я в первый раз делаю arduino, спасибо.
Комментарии:
1. Есть ли
$sql_insert = "INSERT INTO student (ID_S) VALUES ('".$_GET["ID_S"]."')";
этот код в вашемfingerprint.php
файле?2. Да, этот код находится в fingerprint.php файл.