{"id":147,"date":"2010-04-15T19:57:00","date_gmt":"2010-04-15T19:57:00","guid":{"rendered":"https:\/\/ibex.tech\/open-source\/?p=147"},"modified":"2022-02-18T15:15:03","modified_gmt":"2022-02-18T15:15:03","slug":"htrc110-em4102-rfid-reader-driver","status":"publish","type":"post","link":"https:\/\/ibex.tech\/open-source\/rfid\/125khz-rfid-readers\/htrc110-em4102-rfid-reader-driver","title":{"rendered":"HTRC110 EM4102 125kHz RFID Reader Driver"},"content":{"rendered":"<p>\n<em><strong><span style=\"color:#FF0000;\">Great news &#8211; we have decided to open source this project!&nbsp; It can be downloaded for free from GitHub &#8211; please follow this <\/span><a href=\"https:\/\/github.com\/ibexuk\/C_RFID_125khz_Readers_HTRC110\" target=\"_blank\" rel=\"noopener\">link<\/a><span style=\"color:#FF0000;\">.<\/span><br \/>\nPrevious customers may continue to use the project under the embedded-code.com licence they purchased under, or apply the new MIT licence we have now released the project under.<\/strong><\/em>\n<\/p>\n<p>\nLow cost 125kHz passive RFID tags are the ideal choice for all sorts of identification applications. &nbsp;However many engineers view the task of designing a 125kHz RFID reader as too daunting a job involving dabbling in the black arts of radio frequency design. &nbsp;Instead an engineer will typically opt for the safe approach of using one of the many off the shelf but expensive RFID reader OEM modules.\n<\/p>\n<p>\nActually designing a 125KHz RFID reader is very straightforward if a good RFID reader IC is used and this driver is designed to work with the excellent NXP (formerly Philips) HTRC110 RFID Reader Chip.\n<\/p>\n<p>\n&nbsp;\n<\/p>\n<p>\nThis driver provides complete functionality to read EM Marin EM4102 (previously named H4001\/H4102) and compatible RFID transponders. &nbsp;The EM4100 is one of the more common data formats for RFID transponders, so named because the microchip at the heart of compatible tags are based on a controller chip originally made by the company EM Microelectronic. &nbsp;The protocol is typically used by the many types of generic 125kHz read only passive RFID tags available from a huge range of suppliers. &nbsp;These simple RFID transponders carry 40 bits of read only memory and are typically supplied with a globally unique ID value (the 40 bits provide1,099,511,627,776&nbsp;combinations).\n<\/p>\n<p>\nThe driver provides the following main features:-\n<\/p>\n<ul>\n<li>\nAutomatically handles the 64, 32 or 16 period data rates and Manchester or Biphase encoding methods used by EM4102 based tags. &nbsp;Most tags use Manchester encoding due to many RFID readers only supporting Manchester encoded tags.\n<\/li>\n<li>\nOptimised for small code footprint embedded designs.\n<\/li>\n<li>\nState machine and interrupt based implementation to avoid your application stalling while tags are read and the modulated data stream decoded.\n<\/li>\n<li>\nAutomatically switches the HTRC110 to&nbsp;low power mode between reading tags.\n<\/li>\n<li>\nNo reliance on compiler specific libraries.\n<\/li>\n<li>\nFull source code supplied for you to use and modify as required.\n<\/li>\n<\/ul>\n<p>\n[product_section_start:product_page_section_specifications.png]\n<\/p>\n<p>\n<strong>Hardware Specifications<\/strong>\n<\/p>\n<p>\nThe driver is designed to support the NXP HTRC110 RFID reader chip. &nbsp;The driver has been designed to work with 8-bit, 16-bit and 32-bit microcontrollers.\n<\/p>\n<p>\nIn order to decode the modulated RFID tag data stream the driver requires the RFID Dout connection to be made to a microcontroller rising edge interrupt pin. &nbsp;The driver carries out all other&nbsp;communications&nbsp;by driving and reading the microcontroller pins directly.\n<\/p>\n<p>\n&nbsp;\n<\/p>\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n<tbody>\n<tr>\n<td align=\"left\" height=\"15\" valign=\"middle\">\n&nbsp;\n<\/td>\n<td width=\"10\">\n&nbsp;\n<\/td>\n<td>\n&nbsp;\n<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" height=\"50\" valign=\"middle\" width=\"140\">\n<div>\n<img loading=\"lazy\" decoding=\"async\" alt=\"\" border=\"0\" height=\"40\" src=\"\/images\/compilers\/ansi_c_compiler.jpg\" width=\"140\" \/>\n<\/div>\n<\/td>\n<td class=\"main\">\n&nbsp;\n<\/td>\n<td class=\"main\">\n<div>\nThis source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors \/ microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n<tbody>\n<tr>\n<td align=\"left\" height=\"15\" valign=\"middle\">\n&nbsp;\n<\/td>\n<td width=\"10\">\n&nbsp;\n<\/td>\n<td>\n&nbsp;\n<\/td>\n<\/tr>\n<tr>\n<td align=\"center\" height=\"50\" valign=\"middle\" width=\"140\">\n<div>\n<a href=\"http:\/\/www.microchip.com\/\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" border=\"0\" height=\"39\" src=\"\/images\/compilers\/microchip_small_logo.gif\" width=\"37\" \/><\/a>\n<\/div>\n<\/td>\n<td class=\"main\">\n&nbsp;\n<\/td>\n<td class=\"main\">\n<div>\nTested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers with sample project included. Free version of the compiler available from Microchip.\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\n&nbsp;\n<\/p>\n<p>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Great news &#8211; we have decided to open source this project!&nbsp; It can be downloaded for free from GitHub &#8211; please follow this link. Previous customers may continue to use the project under the embedded-code.com licence they purchased under, or apply the new MIT licence we have now released the project under. Low cost 125kHz [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-125khz-rfid-readers"],"_links":{"self":[{"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":33,"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"predecessor-version":[{"id":602,"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/posts\/147\/revisions\/602"}],"wp:attachment":[{"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ibex.tech\/open-source\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}