اطلاعیه

Collapse
No announcement yet.

ساخت ریدر 125khz برای تق های rf id

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ساخت ریدر 125khz برای تق های rf id

    سلام :redface:
    خسته نباشین دوستان
    بعد از روز ها تلاش نتایج تجربه های من اینه
    کسی اطلاعاتی داره که بشه این طرح رو کامل کرد
    طراح سایت روسی می باشد
    لینک سایت
    www.serasidis.gr
    لینک مستقیم مدار ریدر
    http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.htm










    برنامه مورد نظر در اتمل استدیو نوشته شده و به زبان سی می باشد (برای میکرو atiny 13)
    لینک برنامه مکیرو کنترلر atiny 13
    http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.rar
    حالا از دوستان کسی می تونه کمک کنه تا میکرو رو عوض کنیم و بر روی میکرو atmega 8 بزنیم ؟


    اضافه شده در تاریخ :
    هدف:
    ساخت فرکانس 125 کیلو هرتز برای rf id ریدر


    برای ساخت ریدر 125 khz نیاز به سیگنال 125 کیلو هرتز داریم برای این سیگنال میتوان از انواع فیلیپ فلاپ ها استفاده کرد به دلیل فرکانس نسبتا زیاد و عدم پایداری فیلیپ فیلاپ ها استفاده از تایمر 2 میکرو کنترلر برای ساخت این فرکانس توصیه می شود
    بنده با محیط بیسکام برای این قسمت برنامه نوشتم
    اصول کاری به این صورت می باشد که تایمر 2 را در حالت ctc مد راه انداخته و با هر بار رسیدن به فلگ به صورت نرم افزاری باعت تغیر وضعیت پایه oc2 می شویم (toggle)
    کد برنامه به این صورت می باشد

    $regfile = "m8def.dat"

    $crystal = 16000000
    Config Pind.7 = Output
    Config Timer2 = Timer , Compare = Toggle , Prescale = 1 , Clear Timer = 1
    Stop Timer2
    Ocr2 = 62 '62for 125000hz

    Start Timer2
    برنامه در پست بعدی همراه شبیه سازی قرار داده خواهد شد
    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

    #2
    پاسخ : ساخت ریدر 125khz برای تق های rf id

    سلام
    حالا حامد جان چرا اینجا تاپیک رو زدی(توی ARM)؟
    برنامه رو بذار تا در حد سوادمون بهت بگیم چیکار کرده(پ نکن؛ کدهاشو بذار).

    دیدگاه


      #3
      پاسخ : ساخت ریدر 125khz برای تق های rf id

      راس میگی اشتباه کردم هواسم اصلا نبود الان میگم انتقال بدن
      کد برنامه atyni 13
      کد:
      /*
      		125kHz RFID reader. 
      
      		Target: ATtiny13 at 9.6MHz internal RC oscillator.
      
      		- Input pin : PB1 (RFID signal).
      		- Output pin: PB2 (Buzzer) Sounds when an RFID tag is been read successfully.
      		- Output pin: PB4 (TxD) Transmits the RFID tag serial number (2400 bps 8n1).
                    This pin is TTL logic (0 or +5V). Do not connect it direct to RS232 port. Use a voltage shifter such as MAX232. 		
      		
      		
      		Frimware v1.00 was written by Vassilis Serasidis on 18 August 2012. 
      		http://www.serasidis.gr
      		avrsite@yahoo.gr, info@serasidis.gr
      		
      		This code is distributed under GNU GPL V3.
      		Commercial use of this project can be done after the permission of the author (Vassilis Serasidis).
      		
      		
      		There is no warranty for this project. Use it with your own responsibility.
      */
      
      
      
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
      #include <string.h>
      #include <stdio.h>
      #include <stdlib.h>
      #include <stdint.h>
      
      #define COIL   PB0
      #define SIGNAL_IN PB1
      #define BUZZER  PB2
      #define PWM_PIN1 PB3
      #define TXD		 PB4
      #define TIME1   18
      #define TRUE   0
      #define FALSE   1 
      volatile unsigned char counter1 = 0;
      volatile unsigned char receivedBits = 0,startBitCounter = 0; 
      unsigned char dataBuffer[8];// = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88}; //8 bytes * 8 bits = 64 bits received data length from RFID tag.
      unsigned char parity,colParity;
      
      void hex2Ascii (void);
      void delay_time(unsigned long counter);
      void sendTxD (unsigned char txd);
      void init_PWM (void);
      
      int main (void)
      {
      	DDRB |= ((1<<COIL) | (1<<BUZZER) | (1 << PWM_PIN1) |(1<<TXD));
      	DDRB &= ~(1<<SIGNAL_IN); 
      
       	init_PWM();
      
      	unsigned char wrongParity,k = 0,m,n,temp = 0,temp2,p,r;
      	unsigned char i=0;
      
      	sei();          // Enable global interrupts
       
      	startBitCounter = 1;
       
       
        for (;;)
        {  		
      		
      		for(n=0;n<2;n++)
      		{
      			while(counter1 == 255);
      			i=0;
      
      			for(k=0;k<4;k++) 
      			{
      				while(i<250) //Stay here until you find a steady logic '1' to PB1 for some time. 
      				{
      					if(bit_is_set(PINB,PWM_PIN1))
      						i++;
      					else
      						i=0;
      				}
      			}
      		
      			while((bit_is_set(PINB,PWM_PIN1))); //Stay here until you find a logic '0' to PB1.
      			
      
      			parity = 0;
      			for(i=0;i<5;i++) // There is 1 byte (8-bit) for the customer ID (bits 10-13 and bits 15-18) and 4 bytes (32-bit) for the RFID tag serial number (bits 20-24, 26-29, 31-34 and 36-39).
      			{	       // That is (4 bits + 1 parity bit)= 5 bits. 5 bits * 10 
      				dataBuffer[i] = 0;
      			
      				for(m=0;m<2;m++) // 2 times is needed to complete 1 byte (2 * 4 bits)
      				{
      				
      					for(k=0;k<4;k++) // 4 bits of data for each RFID number.
      					{
      						dataBuffer[i] <<= 1;
      				
      						if((bit_is_set(PINB,PWM_PIN1))) //Save the 4-bit part of the 32-bit Tag's serial number.
      							dataBuffer[i] |= (1<<0);
      						else
      							dataBuffer[i] &= ~(1<<0);
      
      						receivedBits++;	
      						_delay_us(TIME1);
      					}
      					parity >>= 1;
      					if((bit_is_set(PINB,PWM_PIN1)))
      						parity |= (1<<7);      //The fifth bit is the parity of the previous 4 bits. Is been stored to the 'parity' variable.
      					_delay_us(TIME1);
      				}			
      			}
      		}
      		colParity = 0;
      		for(k=0;k<4;k++) // Read the 4 bits of column parity (bits 60-64).
      		{
      			colParity <<= 1;
      				
      			if((bit_is_set(PINB,PWM_PIN1))) //Save the 4-bit part of the 32-bit Tag's serial number.
      				colParity |= (1<<0);
      			else
      				colParity &= ~(1<<0);
      			_delay_us(TIME1);
      		}
      		
      		cli(); //Clear interrupts and check the parity of the collected 32 bits from the serial number (4 bytes length).
      		//TCCR0B &= ~(1<<CS00);
      		
      		wrongParity = FALSE; //We give the value of FALSE to the 'wrongParity' variable.
      		p = 1;
      		r = 4;
      		for(m=1;m<5;m++) //Check for parity only the 4 bytes that contain the Tag's serial number.
      		{
      			for(i=0;i<2;i++)
      			{
      				temp = 0;
      				for(n=(r+0);n<(r+4);n++) //Check the parity of the first 4 bits of the Tag's serial number.
      				{						
      					if(bit_is_set(dataBuffer[m],n)) 
      						temp ^= 1;
      				}
      				//temp %= 2; //Find of the 4-bit number has odd or even number of 'Ones'.
      				temp2 =(parity & p); //Compare the calculated parity with the stored one from the 'parity' variable.
      				
      				if(temp2 != 0)
      					temp2 = 1;
      				p <<= 1;	
      
      				//sendTxD(0x30 + temp);
      				//sendTxD(0x30 + temp2);
      				//sendTxD(' ');
      
      				if(temp != temp2) //If the calculated parity is not the same with the stored one,
      				{
      					wrongParity = TRUE; //mark 'wrongParity' variable as TRUE because the parity is wrong and
      					break;       //terminate the 'for' loop.
      				}
      
      				r ^= 0b00000100;
      			}
      
      		}		
      		
      		p = 0b00000001;
      		for(m=0;m<4;m++)
      		{
      			temp = 0;
      			for(i=0;i<5;i++)
      			{
      				if(!(dataBuffer[i] & p)) 	
      					temp ^= 1;
      				p <<= 4;
      				if(!(dataBuffer[i] & p)) 
      					temp ^= 1;	
      				p >>= 4;				
      			}
      			temp2 =(colParity & p); //Compare the calculated parity with the stored one from the 'parity' variable.
      			
      			if(temp2 != 0)
      				temp2 = 1;
      			p <<= 1;
      			
      			if(temp != temp2) //If the calculated parity is not the same with the stored one,
      			{
      				wrongParity = TRUE; //mark 'wrongParity' variable as TRUE because the parity is wrong and
      				break;       //terminate the 'for' loop.
      			}
      		}				
      
      			if(wrongParity == FALSE) //If the parity calculation gives correct parity then
      				hex2Ascii();     //go to send the Tag's serial number as ASCII trough TxD pin.
      
      
      			for(m=0;m<8;m++)
      				dataBuffer[m] = 0; //Clear data buffer.
      			//TCCR0B |= (1<<CS00);
      			sei();			
      
        }
      }
      
      //===================================================================
      // Convert a Hex number into ASCII.
      //===================================================================
      void hex2Ascii (void)
      {
      	uint32_t temp = 0;
      	unsigned char i,buffer[12];
      
      
      	//sendTxD(' '); //send a 'space' character.
      
      	for(i=1;i<5;i++) //Leave the byte 0 (8-bit customer ID) and get the next 32-bit serial number of the Tag.
      	{
      		temp <<= 8;
      		temp |= dataBuffer[i];
      	}
      
      	ultoa(temp,buffer,10); //Convert the 32-bit number 'temp' into ASCII string 'buffer'.
      
      	//PORTB |= (1<<BUZZER);
      	for(i=0;i<strlen(buffer);i++)
      		sendTxD(buffer[i]);
      
      	sendTxD(0x0d);
      	_delay_ms(1000);
      	//PORTB &= ~(1<<BUZZER);
      }
      
      //===================================================================
      // Software based Serial Transmittion.
      // Transmits one character each time it runs.
      // (2400 bps at 9.6MHz internal RC oscillator).
      //===================================================================
      void sendTxD (unsigned char txd)
      {
      	unsigned char bitCounter = 0; 
      
      	PORTB &= ~(1 << TXD);
      		_delay_us(405);
      	for(bitCounter=8; bitCounter>0; bitCounter--)
      	{
      		if (bit_is_clear(txd, 0))
      			PORTB &= ~(1 << TXD);
      		else
      			PORTB |= (1 << TXD);
      
      		_delay_us(405);
      		txd >>= 1;
      	}
      	PORTB |= (1 << TXD);
      	_delay_us(405);
      }
      //==============================================================================
      // Interrupt from INT0 pin.     
      //==============================================================================
      ISR(PCINT0_vect)  ///INT0 Handler
      {
      	if((counter1 > 90)&&(bit_is_set(PINB,SIGNAL_IN)))
      		PORTB |= (1<<PWM_PIN1);
      	else
      	if((counter1 > 90)&&(bit_is_clear(PINB,SIGNAL_IN)))
      		PORTB &= ~(1<<PWM_PIN1);
      		
      
      	counter1 = 0;
      }
      
      //==============================================================================
      //     
      //==============================================================================
      ISR(TIM0_OVF_vect) //Timer0 Overflow Handler
      {
      	if(counter1 < 255)
      		counter1++;
      	else
      		PORTB |= (1<<PWM_PIN1);
      }
      
      
      //===============================================================================
      // PWM function. Is set to produce the 125kHz square wave.
      //===============================================================================
       
      void init_PWM (void)
      {
      	TCCR0A |= (1<<WGM00 | 1<<WGM01 | 1<<COM0A0 | 1<<COM0B0); 
      	TCCR0B |= (1<<WGM02 | 1<<CS00 | 1<<FOC0A | 1<<FOC0B);// Configure timer 1 for CTC mode
      	TIMSK0 |= (1<<TOIE0); //Timer/Counter0 Overflow Interrupt Enable
      	PCMSK |= (1<<PCINT1);// enabele pcint1 inturubt
      	GIMSK |= (1<<PCIE); /// enabel pin intrubt 
      
      	OCR0A  = 38;      // Set CTC compare value38
      	OCR0B  = 38;      // Set CTC compare value38
      //	OCR0A  = 5; 
      //	OCR0A  = 5; 
      	
      }
      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

      دیدگاه


        #4
        پاسخ : ساخت ریدر 125khz برای تق های rf id

        http://freshengineer.com/blog/simple-rfid-reader-module-design/
        لینکی برای دمودلاسیون اطلاعات کارت
        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

        دیدگاه


          #5
          پاسخ : ساخت ریدر 125khz برای تق های rf id

          نوشته اصلی توسط Rohalamin
          سلام
          حالا حامد جان چرا اینجا تاپیک رو زدی(توی ARM)؟
          برنامه رو بذار تا در حد سوادمون بهت بگیم چیکار کرده(پ نکن؛ کدهاشو بذار).
          سلام حامد جان برای دانلود سورس کد غیر ممکنه دانلودش ، وب سایت خرابه

          دیدگاه


            #6
            پاسخ : ساخت ریدر 125khz برای تق های rf id

            سورسشو دانلود کردم ولی جوابی نگرفتم
            چیز ناقصی هست و شاخت ریدر عملا غیر ممکن و سخته
            از ماژول استفاده کنین راحت
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


              #7
              پاسخ : ساخت ریدر 125khz برای تق های rf id

              نوشته اصلی توسط حامد رحیمی
              سورسشو دانلود کردم ولی جوابی نگرفتم
              چیز ناقصی هست و شاخت ریدر عملا غیر ممکن و سخته
              از ماژول استفاده کنین راحت
              یعنی شما ونه دوستان جوابی نگرفتین؟؟

              دیدگاه


                #8
                پاسخ : ساخت ریدر 125khz برای تق های rf id

                نه والا
                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                دیدگاه


                  #9
                  پاسخ : ساخت ریدر 125khz برای تق های rf id

                  سلام اقا حام خوبی ؟

                  آقا من خیلی وقت پیش کلی رو این برد مانور دادم اما جواب نداد که نداد.
                  اگه با اسکوپ خروجی دیتا رو ببینی خیلی با چیزی که اون قرار داده فرق می کنه و اصلا دیتا متقارن نیس.

                  این نمونه ای که من ساختم


                  من مقادیر خازن و سیم پیچ رو به بهترین شکل انتخاب کرده بودم به صورتی که شکل سینوسی بدون اعوجاجی رو در خروجی داشتم.
                  قبل از مانور روی سورس باید ابتدا دیتای تگ رو بتونید درست دریافت کنید و متاسفانه من نتونستم این مشکل رو حل کنم و نشد بیشتر روش وقت بزارم.
                  دوستان پایه باشن ماهم در خدمتیم که یه ریدر سادو و کارآمد بسازیم...

                  موفق باشید
                  چرا ناراحتی پاتریک!
                  + امروز ی بچه دیدم سرچهارراه گل میفروخت
                  - از دیدنش ناراحت شدی؟
                  + نه
                  پس چی ناراحتت کرده
                  + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                  ------------------------------------------------------------------------------------------------------
                  تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                  ------------------------------------------------------------------------------------------------------
                  محصولات

                  دیدگاه


                    #10
                    پاسخ : ساخت ریدر 125khz برای تق های rf id

                    نوشته اصلی توسط سوران آراسته
                    سلام اقا حام خوبی ؟

                    آقا من خیلی وقت پیش کلی رو این برد مانور دادم اما جواب نداد که نداد.
                    اگه با اسکوپ خروجی دیتا رو ببینی خیلی با چیزی که اون قرار داده فرق می کنه و اصلا دیتا متقارن نیس.

                    این نمونه ای که من ساختم


                    من مقادیر خازن و سیم پیچ رو به بهترین شکل انتخاب کرده بودم به صورتی که شکل سینوسی بدون اعوجاجی رو در خروجی داشتم.
                    قبل از مانور روی سورس باید ابتدا دیتای تگ رو بتونید درست دریافت کنید و متاسفانه من نتونستم این مشکل رو حل کنم و نشد بیشتر روش وقت بزارم.
                    دوستان پایه باشن ماهم در خدمتیم که یه ریدر سادو و کارآمد بسازیم...

                    موفق باشید
                    سلام سوران جان
                    من پایه ام ، اما نمیدونم از کجا باید شروع کنم ؟ و با بسکام هم مینویسم .

                    دیدگاه


                      #11
                      پاسخ : ساخت ریدر 125khz برای تق های rf id

                      نوشته اصلی توسط mohamadeng
                      سلام سوران جان
                      من پایه ام ، اما نمیدونم از کجا باید شروع کنم ؟ و با بسکام هم مینویسم .
                      شما تا کجا کار پیش رفتین ؟ مدارو ساختین؟

                      شما پیگیر پیدا کردن مداری باشین که بتونیم مقادیر تگ ها رو تو خروجیش ببینیم با اسکوپ. این رو حل کنیم سورسش حله.

                      در حال حاضر بنده متاسفانه اصلا نمی تونم مجددا رو سخت افزار وقت بزارم.
                      چرا ناراحتی پاتریک!
                      + امروز ی بچه دیدم سرچهارراه گل میفروخت
                      - از دیدنش ناراحت شدی؟
                      + نه
                      پس چی ناراحتت کرده
                      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                      ------------------------------------------------------------------------------------------------------
                      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                      ------------------------------------------------------------------------------------------------------
                      محصولات

                      دیدگاه


                        #12
                        پاسخ : ساخت ریدر 125khz برای تق های rf id

                        نوشته اصلی توسط سوران آراسته
                        شما تا کجا کار پیش رفتین ؟ مدارو ساختین؟

                        شما پیگیر پیدا کردن مداری باشین که بتونیم مقادیر تگ ها رو تو خروجیش ببینیم با اسکوپ. این رو حل کنیم سورسش حله.

                        در حال حاضر بنده متاسفانه اصلا نمی تونم مجددا رو سخت افزار وقت بزارم.
                        مدارو ساختم جواب نگرفتم .
                        به نظر من بهتره از جمع اوری اطلاعات پایه ای شروع کنیم و بهتر بشه یک ریدر قابل ارائه ساخت .

                        دیدگاه


                          #13
                          پاسخ : ساخت ریدر 125khz برای تق های rf id

                          با سلام به همه دوستان
                          من سخت افزار یک ماژول رو شکافتم و شماتیک و pcb اون رو در آوردم که یه سخت افزار کامل و بدون نقص هستش که همه دارن ازش استفاده میکنن و جواب هم میده . فقط مونده که برنامه اش رو کامل کنم .دوستانی که میتونن تو نرم افزار کمک کنن .

                          اضافه شده در تاریخ :
                          http://avr-projrcts.epage.ir/images/...projrcts-3.jpg
                          http://avr-projrcts.epage.ir/images/...projrcts-2.jpg

                          اضافه شده در تاریخ :
                          حالا یک سخت افزار کامل داریم که میتونیم ازش استفاده کنیم.
                          تا جایی که من با اسکوپ گرفتم رو پایه B3 یک فرکانس 128 کیلو هرتز میکرو ایجاد میکنه و خروجی کارت که یک کد منچستر هست رو پایه B0 ایجاد میشه.
                          پس باید از طریق تایمر 1 میکرو فرکانس 128 کیلو رو ،روی پایه B3 ایجاد کنیم و دیتای کارت رو از B0 بخونیم. :wow:
                          http://avr-projrcts.epage.ir/images/...s-IMAG0571.jpg
                          http://avr-projrcts.epage.ir/images/...s-IMAG0573.jpg
                          http://avr-projrcts.epage.ir/images/...s-IMAG0572.jpg
                          من این کارو کردم که با کریستال 10 مگا هرتزی که روی خود ماژول بود و با قرار دادن مقدار 0XFFE8 درون تایمر یک به فرکانس 127 کیلو هرتز برسم.
                          از اونجایی که دوتا ماژول داشتم با یکی فرکانس رو ایجاد کردم و با اونیکی و از طریق آنتن خوندم که متوجه شدم فرکانسک درسته.. :nice:
                          الهم صل علی محمد و آل محمد و عجل فرجهم
                          www.adaksell.com

                          دیدگاه


                            #14
                            پاسخ : ساخت ریدر 125khz برای تق های rf id

                            سلام

                            اقا من با استفاده از تراشه EM4095 مدار ریدر رو ساختم رو برنامه رو هم براش نوشتم.

                            سخت افزار EM18 رو هم مثل شما بیرون کشیدم و مدارش رو چک کردم که دقیقا همینه...

                            سعی می کنم سخت افزار رو پیاده سازی کنم و سورسی که براش نوشتم رو روش تست کنم و نتیجه رو ابلاغ کنم.

                            اگر هم شما سخت افزار اماده دارین بگین تا یه فایل تست ساده رو براتون قرار بدم.
                            چرا ناراحتی پاتریک!
                            + امروز ی بچه دیدم سرچهارراه گل میفروخت
                            - از دیدنش ناراحت شدی؟
                            + نه
                            پس چی ناراحتت کرده
                            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                            ------------------------------------------------------------------------------------------------------
                            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                            ------------------------------------------------------------------------------------------------------
                            محصولات

                            دیدگاه


                              #15
                              پاسخ : ساخت ریدر 125khz برای تق های rf id

                              الان سخت افزار آماده دارم و دارم سعی میکنم برنامه اش رو کامل کنم . اگه شما زودتر به نتیجه ای رسیدید به بنده هم اطلاع بدید ممنون میشم.
                              تنها مشکل من خوندن دیتا ای هست که بر روی پایه میکرو ایجاد شده که کد منچستر هستش
                              الهم صل علی محمد و آل محمد و عجل فرجهم
                              www.adaksell.com

                              دیدگاه

                              لطفا صبر کنید...
                              X