RFID Robootika Kodulaboris

Autor: Raivo Sell

Käesolev õpiobjekt tutvustab RFID moodulite kasutamist Robootika Kodulaboriga.

http://www.ittgroup.ee/components/com_virtuemart/shop_image/product/RFID_lugeja_4de411ebeb60b.jpgRFID on tehnoloogia andmevahetuseks raadiolainete kaudu lugeja ja elektroonilise identiteedi vahel, mis on paigaldatud mõne objekti külge identifitseerimise ja jälgimise eesmärgil. RFID võimaldab iga objektiga siduda unikaalse ID-numbri. Passiivsed identiteedid, millel pole patareid, on võimalik lugeda möödumisel küllalt lähedalt lugejast.

ESF

Õpiobjekti nimi: RFID Robootika Kodulaboris


Õpiväljundid:

Pärast mooduli läbimist õpilane:

  • Kirjeldab RFID mooduli tööprintsiipi
  • Kirjeldab RFID andmevahetusprotokolli
  • Kirjeldab mikrokontrolleri UART käskusid RFID mooduliga suhtlemisel
  • Ühendab Milfare RFID mooduli mikrokontrolleriga õigesti
  • Ühendab vajalikud Robootika Kodulabori moodulid õigesti

Kasutusjuhend:

  • Teoreetilise taustamaterjaliga tutvumine
  • Graafilise materjaliga tutvumine
  • Enesekontrolli küsimustele vastamine

Õpetatav osa: Lugeda teoreetilist ülevaadet enne riistvara reaalset ühendamist ja pingestamist. Vaadata juhendeid korrektse riistvara käsitlemise tagamiseks. Õpitu kinnistamiseks tuleb praktilised näited reaalselt läbi teha.

Seoste loomine: Läbi õppejuhendite ja sõnalise selgituse järgimise.

Kinnistav osa: Iseseisev praktika reaalse riistvarakomplekti baasil.

TEOREETILINE OSA

Mifare SL025M RFID moodul

rfid

Mifare RFID moodul on kõrgsageduslik RFID lugeja, mis töötab sagedusel 13,56 MHz. Samal sagedusel töötvad ka mitmed Eesti koolides ja ettevõtetes kasutatavad id-kaardid ning RFID-nööbid. 

Moodul SL025M (vaata kõrvalolevat pilti)  ühendatakse kontrolleriplaadiga järgmiselt: 

VCC – toide + 3.3 V (sideplaadi Xbee liidesest või kontrolleriplaadi ühendusribast), seda tuleb kindlasti jälgida, et mooduli toiteks mitte suuremat toitepinget kasutada! Siiski mooduli andmeside viigud taluvad ka + 5 V pinget. 

IN – energia säästmiseks saab RFID-mooduli saata uinunud olekusse. Selleks saadetakse talle käsk 0x50. RFID-moodul ärkab üles langeva frondi peale IN sisendis. 

TXD – ühendada kontrolleri RXD viiguga (nt. PE0 USART0 kasutamisel suhtlemiseks)

RXD – ühendada kontrolleri TXD viiguga (nt. PE1) OUT – see väljund näitab, et mõni ID on detekteeritav (kaart mooduli ligidal, väljund all) või mitte (kaarti pole, väljund üleval) GND – maaühendus

USART0 kasutamisel RFID mooduliga suhtlemiseks ei tohi RFID mooduli TXD/RXD viigud ISP programmeerimise ajal olla sideplaadiga ühendatud, sest siis tekib konflikt ja programmeerimine ei õnnestu.

USART seaded SL025M puhul on vaikimise 115200-8-N-1-N. Arvutiga ühendamise puhul, kui RFID-mooduliga suhtlemiseks kasutatakse USART0 liidest, siis jumperid parempoolsel piikribapaaril tuleb tõsta Xbee pealt RS232_2 peale ja arvuti COM port ühendada sideplaadi RS232_2 pistikusse.

Andmevahetuse formaat kontrolleri ja RFID-mooduli vahel koosneb mitmest baidist, mis on kindlas järjekorras. Esimene bait on alati sama (kontrollerist saatmise puhul 0xBA). Teine bait näitab, mitu baiti veel pärast seda saadetakse ja seda on näiteks võimalik kasutada andmevahetuse jälgimiseks, et teada, millal andmed on saadetud. Viimane bait on kontrollsumma, mille järgi saab veenduda vastuvõetud andmete veatus ülekandes. Moodulile saatmiseks on erinevaid käske, mis kirjutavad/loevad andmeid mälus, panevad selle näiteks toite säästmiseks magama jne.

Näiteprogramm saadab iga sekundi järel käsu RFID moodulile, et teada, kas sellel on mõni ID kaart avastataval ligidusel. Kui on, siis kuvab kaardi unikaalset ID-d tablool. Andmevahetuse iga bait on 16-süsteemis arv/kood, mis tuleb ekraanil kuvamiseks teisendada ASCII tähemärkideks. 


  • Mudel: Mifare Module SL025M
  • Sagedus: 13.56MHz
  • Protokoll: ISO14443A
  • Toetatud kaardid: Ultralight, Mifare Mini, Mifare 1k, Mifare 4k, FM11RF08
  • Liides: UART
  • Toide: 4.4 - 12.0 VDC

http://www.ittgroup.ee/components/com_virtuemart/shop_image/product/RFID_4eef098da7d43.png

RFID SM125 moodul

RFID SM125 moodul on madalsageduslik RFID lugeja, mis töötab sagedusel 125 kHz. 

- Sagedus: 125KHz
- UART liides kuni 115200 bps
- I2C liides kunio 400 kHz
- TAGs: Atmel / Temic T55xx and EM4102(unikaalne)
- Antenn: 860 uH 10%, 40 x 15 mm
- Töökaugus: kuni 10 cm (sõltub antenni suurusest)
- Turvalisus: 4 baidine parool
- Unereziim (20uA)
- Modulatsioon: toetab Manchester RF/64, Manchester RF/32

NÄITEKOOD

Mifare näitekood

#include <homelab/usart.h>
#include <homelab/delay.h>
#include <homelab/pin.h>
#include <homelab/module/lcd_gfx.h>
 
usart port = USART(1);	//Mifare RFID ühenduseks
 
// Käsk moodulile - kaardi valimine
// preamble, len, command, data, checksum
char SL031CMD_SelectCard[] = {0xBA,0x02,0x01,0xB9};
 
void hex_to_ascii(char *mass, char byte);
 
int main (void)
{
    char resp[14];
    char str[4];
    int a = 0;
    int bnr = 4;
 
    // USART1 setup
    usart_init_async(port,
	             USART_DATABITS_8,
                     USART_STOPBITS_ONE,
                     USART_PARITY_NONE,
                     USART_BAUDRATE_ASYNC(115200));
 
    // LCD ekraani algseadistamine
    lcd_gfx_init();
 
    // Taustavalgustuse tööle lülitamine
    lcd_gfx_backlight(true);
 
    // Ekraanile teksti kirjutamine
    lcd_gfx_goto_char_xy(3, 0);
    lcd_gfx_write_string("RFID Demo");
    lcd_gfx_goto_char_xy(0, 2);
    lcd_gfx_write_string("ID: ");
 
    while (1)	//infinite loop
    {
        // Saada käsk RFID moodulile
        usart_send_string(port, SL031CMD_SelectCard);
 
        // kuni vastuse andmebaidid kohal
        while (a < bnr)
	{
		// loeb USART-ist andmeid ja salvestab
		if (usart_try_read_char(port, &resp[a]))
		{
		     // järgmine bait
                     a++;
                     // II bait näitab, mitu baiti veel tulemas on
                     if (a == 2) bnr = resp[1] + 2;
		}
	}
 
	// kui ID puudub - "no tag" vastus
	if (resp[3] == 0x01)
	{
		// kirjuta seda
		lcd_gfx_goto_char_xy(4, 2);
	    	lcd_gfx_write_string("puudub   ");
	}
	// ID on olemas ja loetav
	else
	{
		// vaata ainult ID baite
		for (a=4; a<(bnr-2); a++)
		{
			// teisendab loetud andmed stringiks
			hex_to_ascii(str, resp[a]);
			// kirjuta ekraanile
			lcd_gfx_goto_char_xy((a-2)*2, 2);
		    	lcd_gfx_write_string(str);
		}
	}
	// loendurid algusesse
	a = 0;
	bnr = 4;
	// viide uuendamiseks
	hw_delay_ms(1000);
    }
}
 
// Teisendab hex kujul arvu ASCII märkideks ja salvestab stringi
void hex_to_ascii(char *mass, char byte)
{
	unsigned int high = 0;
 
	// leiab esimese numbrikoha hex arvust
	while (byte > 0x0F)
	{
		high++;
		byte -= 0x10;
	}
	// esimene numbrikoht, hex teisendada ASCII-ks
	mass[0] = high + 0x30;
	// kui tähemärk
	if (mass[0] >= 0x3A) mass[0] += 0x07;
	// teine numbrikoht, hex teisendada ASCII-ks
	mass[1] = byte + 0x30;
	if (mass[1] >= 0x3A) mass[1] += 0x07;
	// stringi terminaator
	mass[2] = 0x00;
}

ENESEKONTROLL

Vastates alljärgnevatele küsimustele, saad proovida oma teadmisi antud teema kohta

Mis tüüpi sidet kasutab RFID tehnoloogia?
Vali õige vastus

Juhtmega sidet
Infrapuna sidet
Juhtmevaba sidet
GSM sidet

Milliseid sagedusi RFID tehnoloogia seadmed tavaliselt kasutavad?
Vali õiged vastused

13,56 MHz
125 KHz
2,4 GHz

Millist andmevahetusstandardit kasutab Mifare RFID moodul SL025M?
Vali õiged vastused

UART
USB
RS-422
I2C
SPI

Millist andmevahetusprotokolli kasutatakse Robootika Kodulabori mikrokontrolleris RFID moodulitega suhtlemisel?
Vali õige vastus

SPI
UART

Milleks kasutatakse RFID mooduleid?
Vali õiged vastused

Inimeste identifitseerimiseks läbipääsusüsteemides
Kiireks ja mahukaks andmevahetuseks
Loomade identifitseerimiseks
Video juhtmevabaks ülekandmiseks

LISAMATERJAL

  1. Robootika Kodulabor - RFID
  2. RFID SM125 mooduli andmeleht
  3. RFID Mifare SL025M andmeleht

Teoreetilise osa algtekstide autor: Raivo Sell ja Eero Väljaots