Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 11

Θέμα: Πρόβλημα με arduino σε κύκλωμα ελέγχου της πρόσβασης με ibuttons !!

  1. #1
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή Πρόβλημα με arduino σε κύκλωμα ελέγχου της πρόσβασης με ibuttons !!

    Προσπαθώ να φτιάξω ένα κύκλωμα ελέγχου πρόσβασης με Arduino και ibuttons DS1990A .Το κύκλωμα ενώ είναι σχετικά εύκολο, τόσο από άποψη κώδικα όσο και από υλικά(μια αντίσταση και ένα υποδοχέα ανάγνωσης του ibutton) και το τμήμα της εξόδου, ότι θέλουμε εμείς,servo,τρανζίστορ με ρελέ και τα λοιπά.Χρειάζεται 2 σκετς arduino.Ένα για να διαβάσεις τους μοναδικούς σειριακούς από το κάθε ibutton που θα χρησιμοποιήσεις.Το άλλο για το κύκλωμα ελέγχου τις πρόσβασης,που έχει αποθηκευμένους τους κωδικούς των ibuttons και τους ελέγχει με τους κωδικούς των ibuttons που τοποθετούμε στον υποδοχέα-αναγνώστη του ibutton.Μόνο αν ταιριάζουν ενεργοποιεί την έξοδο.

    Τα λινκ του προγράμματος είναι εδώ.

    Read Dallas iButton Arduino Ανάγνωση των κωδικών
    http://elimelecsarduinoprojects.blog...n-arduino.html

    και το κύκλωμα ελέγχου της πρόσβασης
    Door Open with Dallas iButton Arduino
    http://elimelecsarduinoprojects.blog...n-arduino.html

    Το πρόβλημά μου είναι στο κύκλωμα ελέγχου της πρόσβασης,σε αυτό το κομμάτι του κώδικα


    byte ibuttonid[10] = {1,144,74,165,21,0,0,143}; // Ibutton ID must be typed in Decimal in the following order: Family code (01 for DS1990); numbers from R. to L.; CRC.

    Ενώ διαβάζω τον σειριακό του κουμπιού-iButton π.χ 1 23 7C 48 0 0 5 FC μετατρέπω το 7C σε 124,το FC σε 252,οπότε γίνεται 1 23 124 48 0 0 5 252

    byte ibuttonid[10] = {1,23,124,48,0,0,5,252};
    είτε το βάλω ανάποδα όπως λέει byte ibuttonid[10] = {1,252,5,0,0,48,124,23};
    πάλι δεν δουλεύει.....
    Έχει ασχοληθεί κανείς για να με βοηθήσει είτε ξέρει κανείς τι κάνω λάθος ;

    Ευχαριστώ εκ των προτέρων.



    0 Not allowed! Not allowed!

  2. #2
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή

    εδώ όλος ο κώδικας του κυκλώματος ελέγχου της πρόσβασης είναι πολύ λίγος.

    #include <OneWire.h>

    OneWire ibutton (2); // I button connected on PIN 2.

    byte ibuttonid[10] = {1,144,74,165,21,0,0,143}; // Ibutton ID must be typed in Decimal in the following order: Family code (01 for DS1990); numbers from R. to L.; CRC.
    byte buffer[10]; //array to store the readed Ibutton ID.

    boolean result; // this variable will hold the compare result

    int doorpin = 13; // the output pin to activate the door.

    void setup(){
    Serial.begin(9600);
    pinMode(doorpin,OUTPUT);

    }

    void loop(){

    if (!ibutton.search (buffer)){//read attached ibutton and asign value to buffer
    ibutton.reset_search();
    delay(200);
    return;
    }

    for (int x = 0; x<8; x++){
    Serial.print(buffer[x],HEX); //print the buffer content in LSB. For MSB: for (int x = 8; x>0; x--)
    Serial.print(" "); // print a space
    }
    Serial.println("\n"); // print new line

    // compare the ibutton id

    result = true; // set variable equal to one.
    for (int x=0; x<10; x++){
    int compare1 = ibuttonid[x];// asign each index of arrays to test, one by one and compare
    int compare2 = buffer[x];


    if(compare1 != compare2){ // if any index comparison is not equal, then the arrays are not equal and result will be 0.
    result = false;
    }

    }
    if(result == true){ // if the arrays are equal, do something.
    Serial.println("Door open for 5 seconds.");
    digitalWrite(doorpin,HIGH); // Turn on LED on pin 13 (build-in on the Arduino board)
    delay(5000); // wait five seconds. (1 second = 1000 milliseconds)
    Serial.println("Door closed");
    digitalWrite(doorpin,LOW); // turn off LED.
    }

    //set buffer back to cero.

    for (int x=0; x<10; x++){
    buffer[x] = 0 ;
    }
    }



    /* by ElimelΓ©c
    Jun-07-2013 *//

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Δεν λυνονται ετσι τα προβληματα μικροελεγκτων.


    Εχεις ενα μεγαλο εργαλειο, την εμφανιση στην σειριακη.Εμφανισε διαδοχικα σε διαφορα κομματια του κωδικα για να βρεις τη λυση..

    0 Not allowed! Not allowed!

  4. #4
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή

    το έχω κάνει αυτό, μάλιστα πρόσθεσα και ένα else για να δω αν συγκρίνοντας τον αποθηκευμένο αριθμό με αυτόν που διαβάζει ταιριάζει ή όχι.Πάντα μου βγάζει wrong key

    ιf(result == true){ // if the arrays are equal, do something.
    Serial.println("Door open for 5 seconds.");
    digitalWrite(doorpin,HIGH); // Turn on LED on pin 13 (build-in on the Arduino board)
    delay(5000); // wait five seconds. (1 second = 1000 milliseconds)
    Serial.println("Door closed");
    digitalWrite(doorpin,LOW); // turn off LED.
    }

    else {
    Serial.println("wrong key");
    }

    γι αυτό πιστεύω ότι το λάθος βρίσκεται στο πως τοποθετώ τον σειριακό αριθμό στο
    byte ibuttonid[10] = {1,144,74,165,21,0,0,143};

    0 Not allowed! Not allowed!

  5. #5
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    if (!ibutton.search (buffer))
    {
    //read attached ibutton and asign value to buffer

    ibutton.
    reset_search();
    delay(200);
    return;
    // edw exeis ton kwdiko ston buffer..
    for (int x = 0; x<8; x++)
    {

    Serial.print(buffer[x],DEC); //print the buffer content in LSB. For MSB: for (int x = 8; x>0; x--)
    Serial.print(" "); // print a space
    }

    while(1); // meine edw

    }



    Δηλαδη οταν πατηθει το button τι κωδικο σου εμφανιζει ;


    Αστο DEC:

    Serial.print(buffer[x],DEC);

    0 Not allowed! Not allowed!

  6. #6
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή

    Εντάξει βρήκα τι έφταιγε,θέλανε όλοι οι αριθμοί μετατροπή σε DEC.Αντικατέστησα στο πρόγραμμα ανάγνωσης των αριθμών το HEX με DEC και όλα δουλεύουν ρολόι.Ευχαριστώ πολύ για την βοήθειά σας.

    0 Not allowed! Not allowed!

  7. #7
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή

    Σάββα τώρα είδα το μήνυμά σου,αυτό έφταιγε τελικά.Σ'ευχαριστώ πολύ.

    0 Not allowed! Not allowed!

  8. #8
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Το 11111111b,255,0xFF ειναι ολα το ιδιο.


    Τιποτα Ανδρεα

    0 Not allowed! Not allowed!

  9. #9
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή

    Πρόγραμμα του αναγνώστη του ibutton.

    #include <OneWire.h>


    OneWire ibutton (2); // I button connected on PIN 2.


    byte buffer[20]; //array to store the Ibutton ID.


    void setup(){
    Serial.begin(9600);

    }


    void loop(){

    if (!ibutton.search (buffer)){//read attached ibutton and asign value to buffer
    ibutton.reset_search();
    delay(200);
    return;
    }
    for (int x = 0; x<8; x++){
    Serial.print(buffer[x],DEC); //print the buffer content in LSB. For MSB: for (int x = 8; x>0; x--)
    Serial.print(" "); // print a space
    }
    Serial.println("\n"); // print new line



    //crc compute//
    byte crc;
    crc = ibutton.crc8(buffer, 7);
    Serial.println(crc,DEC);



    }

    0 Not allowed! Not allowed!

  10. #10
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    855

    Προεπιλογή

    όταν διάβαζε ένα ibutton σε HEΧ μου εμφάνιζε 1 F2 78 48 4 0 0 10.Τώρα σε DEC το προηγούμενο το εμφανίζει ως 1 242 120 72 4 0 0 16!!! Εκεί έκανα το λάθος!!!Εγώ μετέτρεπα μόνο το F2!!Αλλά άμα προσέξεις αλλάζουν 4 αριθμοί και το F2 μένει το ίδιο 242.
    Και εδώ πάει ο αριθμός όπως μου το εμφανίζει η σειριακή σε DEC.

    byte ibuttonid[10] = {1,242,120,72,4,0,0,16};

    0 Not allowed! Not allowed!

Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Απαντήσεις: 33
    Τελευταίο Μήνυμα: 01-11-11, 14:56
  2. Κύκλωμα ελέγχου γκαραζόπορτας
    By Ulysses in forum Διάφορα Κυκλώματα
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 17-10-11, 23:26
  3. Απαντήσεις: 17
    Τελευταίο Μήνυμα: 19-08-11, 03:40
  4. Κύκλωμα ελέγχου ρεύματος σε μοτέρ DC
    By hatziman in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 17
    Τελευταίο Μήνυμα: 25-03-11, 11:37
  5. κύκλωμα ελέγχου ανεμιστήρων κουτιού ...
    By kingor83 in forum Κυκλώματα για Η/Υ
    Απαντήσεις: 48
    Τελευταίο Μήνυμα: 09-07-07, 21:41

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας