logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Zlecę] Zlecę wykonanie/modyfikację skryptu dla Arduino Uno

marcin5545 09 Wrz 2020 12:19 546 0
REKLAMA
  • #1 18914875
    marcin5545
    Poziom 1  
    Zlecę wykonanie/modyfikację skryptu dla Arduino Uno

    Hardware:
    - Arduino Uno
    - Ethernet Shield W5100 dla Arduino
    - Czytnik RFID ID-12LA 125kHz SparkFun SEN-11827

    Software:
    - Debian 10.5.0
    - MySQL 10.3.23-MariaDB

    Działanie skryptu:

    - Odczyt 12-znakowego tagu RFID
    - Porównanie odczytanego tagu z listą tagów w tabeli "uprawnienia" bazy MySQL
    - W przypadku zgodności odczytanego tagu z tagiem, znajdującym się w tabeli "uprawienia" - podanie na jeden z pinów Arduino na X sekund stanu wysokiego, w celu wysterowania przekaźnika 5V zamka elektromagnetycznego
    - Zapis odczytanego tagu bezpośrednio do tabeli "zdarzenia" w bazie MySQL wraz z aktualną datą i godziną

    Połączenie pomiędzy Arduino a bazą MySQL musi odbywać się z wykorzystaniem bibliotek MySQL_Connection.h i MySQL_Cursor.h (nie poprzez skrypt PHP).

    Dołączam skrypt kod.txt, który do tej pory udało mi się "wdrożyć". Odczyt RFID i zapis tagu do bazy MySQL działa, jednakże na końcu tagu doklejają się jakieś śmieci w stylu 010AC7973863⸮⸮⸮ i taki zapis idzie do bazy. W skrypcie brakuje odczytu z bazy "uprawnienia" i sterowania pinem wyjściowym.

    Oferty z ceną i terminem realizacji proszę przesłać na adres: audionet99(_at_)gmail.com


    #include <SPI.h>
    #include <Ethernet.h>
    #include <MySQL_Connection.h>
    #include <MySQL_Cursor.h>

    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress server_addr(192,168,1,14); // IP of the MySQL *server* here
    char user[] = "test"; // MySQL user login username
    char password[] = "test"; // MySQL user login password

    EthernetClient client;
    MySQL_Connection conn((Client *)&client);

    void setup() {
    Serial.begin(9600);
    if (Ethernet.begin(mac) == 0) {
    Ethernet.begin(mac);
    }
    }

    void loop() {
    char tagString[12];
    int index = 0;
    boolean reading = false;

    while (Serial.available()) {
    int readByte = Serial.read(); //read next available byte
    if (readByte == 2) reading = true; //begining of tag
    if (readByte == 3) reading = false; //end of tag
    if (reading && readByte != 2 && readByte != 10 && readByte != 13) {
    //store the tag
    tagString[index] = readByte;
    index ++;
    }
    }
    checkTag(tagString);
    clearTag(tagString);
    delay(500);
    }

    void checkTag(char tag[]) {
    if (strlen(tag) == 0) return;
    if (conn.connect(server_addr, 3306, user, password)) {
    Serial.println(tag);
    char INSERT_SQL[] = "INSERT INTO rfid.zdarzenia (RFID_odczytany, date, time) VALUES ('%s', curdate(), curtime())";
    char query[255];
    sprintf(query, INSERT_SQL, tag);
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
    cur_mem->execute(query);
    delete cur_mem;
    }
    }

    void clearTag(char one[]) {
    ///////////////////////////////////
    //clear the char array by filling with null - ASCII 0
    //Will think same tag has been read otherwise
    ///////////////////////////////////
    for (int i = 0; i < strlen(one); i++) {
    one[i] = 0;
    }
    }
  • REKLAMA
REKLAMA