Arduino читает данные карты RFID и сохраняет в MySQL (xampp)

Я воссоздаю программу, которую нашел на этом сайте. Я редактировал некоторые части кода на PHP и Arduino. Но код Arduino для выполнения HTTP-запросов не работает, потому что в таблице в базе данных нет новой добавленной строки. Я знаю, что код PHP работает хорошо, потому что, когда я делаю это вручную, как это

localhost/thesisbla/trials_rfid/rfid_read2.php?allow=1&id=67656

новая строка будет добавлена ​​в мою базу данных. Я использую xampp в качестве своего веб-сервера.

Код PHP:

<?php
class rfid {
    public $link='';
    function __construct($allow, $id) {
        $this->connect();
        $this->storeInDB($allow, $id);
    }
    function connect() {
        $mysqli = mysqli_connect('localhost','admin2','qazwsx','deligenc_rfid') or die($mysqli->error);
        $this->link = mysqli_connect('localhost','admin2','qazwsx','deligenc_rfid') or die('Cannot connect to the DB');
        mysqli_select_db($mysqli, 'deligenc_rfid') or die('Cannot select the DB');
    }
    function storeInDB($allow, $id) {
        $mysqli = mysqli_connect('localhost','admin2','qazwsx','deligenc_rfid') or die($mysqli->error);
        $query = "insert into rfid set rfid='".$id."', allow='".$allow."'";
        $result = mysqli_query($mysqli, $query) or die('Errant query:  '.$query);
        if($result) {
            echo "Added successfully";
        }
    }
}
if($_GET['allow'] != '' and $_GET['id'] != '') {
    $rfid=new rfid($_GET['allow'],$_GET['id']);
}
?>

Код Arduino:

#include<SPI.h>
#include<MFRC522.h>
#include<SoftwareSerial.h>
#include <Ethernet.h>
#include <HttpClient.h>

#define SS_PIN 4 //FOR RFID SS PIN BECASUSE WE ARE USING BOTH ETHERNET SHIELD AND RS-522
#define RST_PIN 5
#define No_Of_Card 3

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "localhost";   //YOUR SERVER
IPAddress ip(192, 168, 137, 2);
EthernetClient client;
SoftwareSerial mySerial(8,9);     
MFRC522 rfid(SS_PIN,RST_PIN);
MFRC522::MIFARE_Key key; 
byte id[No_Of_Card][4]={
  {44,153,22,219},             //RFID NO-1
  {112,224,72,84},             //RFID NO-2
  {151,94,80,84}              //RFID NO-3
};
byte id_temp[3][3];
byte i;
int j=0;

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  for(byte i=0;i<6;i++) {
    key.keyByte[i]=0xFF;
  }
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.println("connecting...");
 }

void loop() {
  int m=0;
  if(!rfid.PICC_IsNewCardPresent())
    return;
  if(!rfid.PICC_ReadCardSerial())
    return;
  for(i=0;i<4;i++) {
    id_temp[0][i]=rfid.uid.uidByte[i]; 
    delay(50);
  }
  for(i=0;i<No_Of_Card;i++) {
    if(id[i][0]==id_temp[0][0]) {
      if(id[i][1]==id_temp[0][1]) {
        if(id[i][2]==id_temp[0][2]) {
          if(id[i][3]==id_temp[0][3]) {
            Serial.print("your card no :");
            for(int s=0;s<4;s++) {
              Serial.print(rfid.uid.uidByte[s]);
              Serial.print(" ");
            }
            Serial.println("\nVALID");
            Sending_To_DB();
            j=0;
            rfid.PICC_HaltA();
            rfid.PCD_StopCrypto1();
            return;
          }
        }
      }
    } else {
      j++;
      if(j==No_Of_Card) {
        Serial.println("inVALID");
        Sending_To_DB();
        j=0;
      }
    }
  }
  // Halt PICC
  rfid.PICC_HaltA();
  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}

void Sending_To_DB() {
  //CONNECTING WITH MYSQL
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.print("GET /rfid_read2.php?allow="); //YOUR URL
    if(j!=No_Of_Card) {
      client.print('1');
    } else {
      client.print('0');
    }
    client.print("&id=");
    for(int s=0;s<4;s++) {
      client.print(rfid.uid.uidByte[s]);
    }
    client.print(" "); // SPACE BEFORE HTTP/1.1
    client.print("HTTP/1.1");
    client.println();
    client.println("Host: localhost");
    client.print("User-Agent: arduino-ethernet");
    client.println("Connection: close");
    client.println();
    printDec(rfid.uid.uidByte,rfid.uid.size);
    Serial.println();
    Serial.println("added to database");
  } else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
  client.stop();
}

void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}

0 ответов

Другие вопросы по тегам