Wiegand çıkış hakkinda [ÇÖZÜLDÜ]

Başlatan ByTEK, 21 Ağustos 2016, 20:28:03

ByTEK

Arduino nano ile wiegand okuyucudan data alabiliyorum. Gelen datayi wiegand formatında belirlediğim  iki pinden cikariyorum. Nette buldugum wiegand formatına uygun olarak kodu yazdım.

Fakat zk teco scr100 cihazın wiegand girişine girdiğimde çalışmadı. Çok denesemde olmadı.

Okuyucuyu direkt scr100 cihaza takınca çalışıyor.

Başka bir arduino uno ile ayni kodu kullanarak nanoyu bağladım ve kartı okutunca uno okuyup seri porttan datayi yazdı.  Buda nano nun doğru çıkış verdiğini gösteriyor.

Pc yanımda değil. Kodlari pc ye ulaşınca ekleyeceğim

Osilaskobum olmadığı için sinyal şeklini göremiyorum.

Sormak istedigim aslında wiegand çıkış verebileceğim bir lib yada örnek kod varmıdır.

Amacım veriyi wiegand formatında dışarı çıkartmak. Belki Puls süreleri ile ilgili problem olabilir. Nette low süresi 50us iki Puls arası 1 ms olarak görmüştüm. Ona göre yazdım.


ByTEK

#1
unsigned long Ham_veri; // 0000000011111001110100101101011100
int Wiegand_Tipi; // 34
boolean wd_bit;

void wiegand_output()
{   
    for (int wbit = 0;wbit < Wiegand_Tipi; wbit++)
     {
        wd_bit = bitRead(Ham_veri,(Wiegand_Tipi-1)-wbit);
        
              if (wd_bit==1)
              {
               digitalWrite(WD1,LOW); //6.pin//beyaz
               delayMicroseconds(100);
               digitalWrite(WD1,HIGH);
              }
              else
              {
               digitalWrite(WD0,LOW); //5.pin//yeşil
               delayMicroseconds(100); 
               digitalWrite(WD0,HIGH);
              }       
          delay(1);
         
     }
     }


yazdığım kod budur.

Burada  Ham_Veri değişkeni karttan okunan ham veridir. Wiegand 34 formatındadır.

örnek aldığım sinyal formatı aşağıdaki gibidir.





mesaj birleştirme:: 23 Ağustos 2016, 09:06:58

Aynı Kod yüklü olan Unonun girişne nanonun wiegand çıkışını bağladım ve kartımı okutunca nano okuyup datayı wiegand olarak çıkışa veriyor ve uno datayı okuyor. okuma işlemi için wiegand kütüphanesi kullandım. Sorun gözükmüyor gibi duruyor ama asıl wiegand girişi olan SCR100 cihazım bu datayı okumuyor. Neyi Atlıyorum ?



Wiegand okuma için : http://www.sercanca.com/arduino-wiegand-kart-okuyucu-kullanimi/

mesaj birleştirme:: 23 Ağustos 2016, 09:35:25

Cihazı PC ye bağladığımda ayarlar kısmından aşağıdaki bilgileri edindim. Kodu düzenledim ama gene olmadı.



KR500 okuyucuyu takınca direk çalışıyor.

mesaj birleştirme:: 22 Ağustos 2016, 11:09:50

İşin içinden çıkamadım ve sahibindende satışta olan basit bir logic analyzer satın aldım. ürün elime geçince wiegand çıkışlara bakıp sinyal şekillerini analiz edeceğim.

ByTEK

Logic analyzer elime ulaştı ve KR500 ün çıkışını inceledim. puls genişliği 380us ve puls tekrarı 1.96 ms olduğunu gördüm.

ilavetten data nın en basındaki parity bitinin olduğunu ama benim gönderdiğim data da onun olmadığını gördüm.

hazır kullandığım kütüphaneyi kullanmayıp edindiğim bilgilerle işimi çözecek kodu yazdım ve datayı bit dizisine aktardım.

bit dizisini aşağıdaki şekilde çıkışa veriyorum.

void wiegand_output(int out_WD0, int out_WD1, char wiegand_type)
{   
  pinMode(out_WD0,OUTPUT);
  pinMode(out_WD1,OUTPUT);

  digitalWrite(out_WD0,HIGH);
  digitalWrite(out_WD1,HIGH);

  int Puls_width = 370;
  int Puls_inverval = 1900;

    for (int wbit = 0;wbit < (wiegand_type); wbit++)
     {
         if (Ham_Veri[wbit]==1)
           digitalWrite(out_WD1,LOW); 
             else
           digitalWrite(out_WD0,LOW); 
           
       delayMicroseconds(Puls_width);      
       digitalWrite(out_WD1,HIGH);
       digitalWrite(out_WD0,HIGH);     
       delayMicroseconds(Puls_inverval);                
     }

 }


çıkış pinlerini ve wiegand formatını parametre olarak verip wiegand çıkış elde ediyorum.