<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Controllo Accessi Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/controllo-accessi/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/controllo-accessi/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Mon, 13 Feb 2017 19:07:04 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Controllo Accessi Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/controllo-accessi/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Controllo accessi rfid con Netduino</title>
		<link>https://logicaprogrammabile.it/controllo-accessi-rfid-netduino/</link>
					<comments>https://logicaprogrammabile.it/controllo-accessi-rfid-netduino/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Wed, 13 Jun 2012 13:04:09 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Controllo Accessi]]></category>
		<category><![CDATA[ID-12]]></category>
		<category><![CDATA[RFID]]></category>
		<category><![CDATA[Tag]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2837</guid>

					<description><![CDATA[<p>Realizzare un semplice apri porta utilizzando tag rfid La realizzazione di sistemi basati sulla tecnologia rfid è oggi alla portata di tutti vista la disponibilità di componenti a basso costo necessaria alla produzione di un prodotto completo. Il prototipo che ho realizzato per questo articolo...</p>
<p>The post <a href="https://logicaprogrammabile.it/controllo-accessi-rfid-netduino/">Controllo accessi rfid con Netduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Realizzare un semplice apri porta utilizzando tag rfid</h3>
<p>La realizzazione di sistemi basati sulla <strong>tecnologia rfid</strong> è oggi alla portata di tutti vista la disponibilità di componenti a basso costo necessaria alla produzione di un prodotto completo. Il prototipo che ho realizzato per questo articolo si basa principalmente su un Netduino, versione standard, e sul lettore rfid<strong> ID-12</strong> della <strong>Innovations</strong>, utilizzato in un <a title="Netduino gestire lettore RFID ID-12" href="https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/">precedente articolo</a>.</p>
<p>Lo scopo del progetto è quello di permettere l&#8217;accesso controllato in una particolare area utilizzando unicamente il <strong>Netduino</strong> per memorizzare una lista di utenti autorizzati. In caso di riconoscimento il circuito azionare un classico relè che potrebbe essere collegato ad un apri porta elettromeccanico tipico dei sistemi citofonici.</p>
<p><span id="more-2837"></span></p>
<p>Il circuito è il seguente:</p>
<p style="text-align: center;"><a href="https://logicaprogrammabile.it/controllo-accessi-rfid-netduino/apriportasalaapp_bb-2/" rel="attachment wp-att-2844"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-2844" title="ApriportaSalaApp_bb" src="https://logicaprogrammabile.it/wp-content/uploads/2012/06/ApriportaSalaApp_bb1.png" alt="" width="478" height="492" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/06/ApriportaSalaApp_bb1.png 478w, https://logicaprogrammabile.it/wp-content/uploads/2012/06/ApriportaSalaApp_bb1-291x300.png 291w" sizes="(max-width: 478px) 100vw, 478px" /></a></p>
<p>Per quanto riguarda il codice caricato sul Netduino osserviamo che i codici dei tag rfid sono memorizzati in un array di stringhe. Questi valori vengono confrontati con il codice ottenuto dal lettore ID-12 e quando si verifica un&#8217;uguaglianza viene attivato il relè che andrà a comandare l&#8217;apri porta.<br />
Nel codice è presente anche il calcolo del crc che permette di ottenere una maggiore sicurezza nella lettura ed interpretazione del codice del tag.</p>
<p>[csharp]<br />
public static Byte ConvHexToByte(String Value)<br />
{<br />
  if (Value.Length == 2)<br />
  {<br />
    String str1 = Value.Substring(0, 1);<br />
    String str2 = Value.Substring(1, 1);</p>
<p>    if (str1.ToUpper() == &quot;A&quot;)<br />
      str1 = &quot;10&quot;;</p>
<p>    if (str1.ToUpper() == &quot;B&quot;)<br />
      str1 = &quot;11&quot;;</p>
<p>    if (str1.ToUpper() == &quot;C&quot;)<br />
      str1 = &quot;12&quot;;</p>
<p>    if (str1.ToUpper() == &quot;D&quot;)<br />
      str1 = &quot;13&quot;;</p>
<p>    if (str1.ToUpper() == &quot;E&quot;)<br />
      str1 = &quot;14&quot;;</p>
<p>    if (str1.ToUpper() == &quot;F&quot;)<br />
      str1 = &quot;15&quot;;</p>
<p>    //###########################<br />
    if (str2.ToUpper() == &quot;A&quot;)<br />
      str2 = &quot;10&quot;;</p>
<p>    if (str2.ToUpper() == &quot;B&quot;)<br />
      str2 = &quot;11&quot;;</p>
<p>    if (str2.ToUpper() == &quot;C&quot;)<br />
      str2 = &quot;12&quot;;</p>
<p>    if (str2.ToUpper() == &quot;D&quot;)<br />
      str2 = &quot;13&quot;;</p>
<p>    if (str2.ToUpper() == &quot;E&quot;)<br />
      str2 = &quot;14&quot;;</p>
<p>    if (str2.ToUpper() == &quot;F&quot;)<br />
      str2 = &quot;15&quot;;</p>
<p>    //converto i singoli caratteri in valori byte<br />
    Byte b1 = Byte.Parse(str1);<br />
    Byte b2 = Byte.Parse(str2);<br />
    //onverto i duebyte in un valore hex<br />
    Byte cv = (Byte)(b1 * 16 + b2);</p>
<p>    //Debug.Print(cv.ToString());<br />
    return cv;</p>
<p>  }</p>
<p>  return 0;</p>
<p>}</p>
<p>public static void Main()<br />
{</p>
<p>  String[] Codice = { &quot;06003906B1&quot;,<br />
                      &quot;060030EF42&quot;,<br />
                      &quot;060039EF42&quot;,<br />
                      &quot;060038EF42&quot;,<br />
                      &quot;060037EF42&quot;,<br />
                      &quot;060036EF42&quot;,<br />
                      &quot;060035EF42&quot;,<br />
                      &quot;060034EF42&quot;,<br />
                      &quot;060033EF42&quot;,<br />
                      &quot;060032EF42&quot;,<br />
                      &quot;060031EF42&quot;,<br />
                      &quot;060038EF02&quot;,<br />
                      &quot;060038EF92&quot;,<br />
                      &quot;060038EF82&quot;,<br />
                      &quot;060038EF72&quot;,<br />
                    };</p>
<p>  //Creao un oggetto per lavorare con<br />
  //la porta seriale<br />
  SerialPort sp = new SerialPort(&quot;COM1&quot;, 9600, Parity.None, 8, StopBits.One);<br />
  OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);<br />
  OutputPort Porta = new OutputPort(Pins.GPIO_PIN_D7, false);<br />
  OutputPort LedAut = new OutputPort(Pins.GPIO_PIN_D8, false);<br />
  OutputPort LedNoAut = new OutputPort(Pins.GPIO_PIN_D9, false);</p>
<p>  //Apro la porta<br />
  sp.Open();</p>
<p>  while (true)<br />
  {<br />
    //Attesa di 200 millisecondi<br />
    Thread.Sleep(200);</p>
<p>    //aspetto la lettura di tutti i 16 byte<br />
    if (sp.BytesToRead == 16)<br />
    {<br />
      led.Write(true);<br />
      //creo un buffer di 16 byte<br />
      Byte[] b = new Byte[sp.BytesToRead];<br />
      Byte[] crcTag = new Byte[2];<br />
      Byte[] tag = new Byte[10];<br />
      Byte Hex01, Hex02, Hex03, Hex04, Hex05, crcRfid, crc;</p>
<p>      //leggo dalla seriale i dati inviati dall&#8217;ID-12<br />
      sp.Read(b, 0, b.Length);</p>
<p>      //copio i 10 byte dell&#8217;ID del tag in un array dedicato<br />
      Array.Copy(b, 1, tag, 0, 10);<br />
      Array.Copy(b, 11, crcTag, 0, 2);</p>
<p>      //converto i byte in una stringa ASCII<br />
      String ValoriAsc = new String(UTF8Encoding.UTF8.GetChars(tag));<br />
      String ValoreCrc = new String(UTF8Encoding.UTF8.GetChars(crcTag));</p>
<p>      //ottengo i valori esadecimali dalla coppia di byte Ascii<br />
      Hex01 = ConvHexToByte(ValoriAsc.Substring(0, 2));<br />
      Hex02 = ConvHexToByte(ValoriAsc.Substring(2, 2));<br />
      Hex03 = ConvHexToByte(ValoriAsc.Substring(4, 2));<br />
      Hex04 = ConvHexToByte(ValoriAsc.Substring(6, 2));<br />
      Hex05 = ConvHexToByte(ValoriAsc.Substring(8, 2));<br />
      crcRfid = ConvHexToByte(ValoreCrc.Substring(0, 2));</p>
<p>      //calcolo il crc mettendo in xor i valori hex<br />
      crc = (byte)(Hex01 ^ Hex02 ^ Hex03 ^ Hex04 ^ Hex05);</p>
<p>      //printo il valore di crc<br />
      Debug.Print(crcRfid.ToString());<br />
      Debug.Print(crc.ToString());</p>
<p>      if (crcRfid == crc)<br />
      {<br />
        //eseguo un ciclo che mi printa tutti i singoli<br />
        //byte del buffer<br />
        Int32 strNumber;<br />
        Int32 strIndex = 0;<br />
        Boolean Acc = false;</p>
<p>        for (strNumber = 0; strNumber &lt; Codice.Length; strNumber++)<br />
        {<br />
          strIndex = Codice[strNumber].IndexOf(ValoriAsc);<br />
          if (strIndex &gt;= 0)<br />
          {<br />
            Porta.Write(true);<br />
            Thread.Sleep(100);<br />
            Porta.Write(false);</p>
<p>            LedAut.Write(true);<br />
            Thread.Sleep(200);<br />
            LedAut.Write(false);</p>
<p>            Acc = true;</p>
<p>            break;</p>
<p>          }<br />
        }</p>
<p>        if (Acc == false)<br />
        {<br />
          LedNoAut.Write(true);<br />
          Thread.Sleep(200);<br />
          LedNoAut.Write(false);<br />
        }</p>
<p>      }<br />
      Debug.Print(ValoriAsc);</p>
<p>      Thread.Sleep(150);<br />
      led.Write(false);<br />
    }<br />
  }<br />
}</p>
<p>[/csharp]</p>
<p>Il codice per far funzionare il sistema è molto semplice. Con poco hardware è con una spesa inferiore ai 100€ possiamo costruire veramente prodotti basati su tecnologia rfid. Sostituendo il Netduino con il fratello maggiore (Netduino Plus) potremmo dotare il sistema di una memoria SD per il log degli accessi ed un webserver per leggere i file di log.</p>
<p>The post <a href="https://logicaprogrammabile.it/controllo-accessi-rfid-netduino/">Controllo accessi rfid con Netduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/controllo-accessi-rfid-netduino/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Calcolare il checksum del tag tramite lettore RFID ID-12 (versione vb.net)</title>
		<link>https://logicaprogrammabile.it/calcolare-il-checksum-tag-lettore-rfid-id12/</link>
					<comments>https://logicaprogrammabile.it/calcolare-il-checksum-tag-lettore-rfid-id12/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 25 Oct 2011 10:29:38 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Controllo Accessi]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[RFID]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2150</guid>

					<description><![CDATA[<p>Programmare il Netduino con codice vb.net per calcolare il checksum del tag RFID Per chi lavora con vb.net vi allego il codice scritto da Alberto De Luca che gentilmente mi ha concesso per condividerlo con voi. Il listato seguente esegue il calcolo del checksum del...</p>
<p>The post <a href="https://logicaprogrammabile.it/calcolare-il-checksum-tag-lettore-rfid-id12/">Calcolare il checksum del tag tramite lettore RFID ID-12 (versione vb.net)</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Programmare il Netduino con codice vb.net per calcolare il checksum del tag RFID</h1>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2011/04/TagRfid.jpg"><img decoding="async" class="aligncenter size-full wp-image-1029" title="TagRfid" src="https://logicaprogrammabile.it/wp-content/uploads/2011/04/TagRfid.jpg" alt="" width="181" height="185" /></a></p>
<p>Per chi lavora con <strong>vb.net</strong> vi allego il codice scritto da <strong>Alberto De Luca</strong> che gentilmente mi ha concesso per condividerlo con voi. Il listato seguente esegue il calcolo del checksum<br />
del tag acquisito con il lettore RFID ID-12 come <a href="https://logicaprogrammabile.it/calcolare-il-crc-tag-netduino-lettore-rfid-id12/" target="_blank">spiegato nell&#8217;articolo precedente</a>.</p>
<p><span id="more-2150"></span></p>
<pre class="lang:vbnet decode:true ">Public Shared Function VerifyCheckSum(b As Byte()) As Boolean

Dim RetValue As Boolean
Dim tag As [Byte]() = New [Byte](9) {}
Dim Hex01 As [Byte], Hex02 As [Byte], Hex03 As [Byte],
Hex04 As [Byte], Hex05 As [Byte], crc As [Byte]

Array.Copy(b, 1, tag, 0, 10)

Dim ValoriAsc As New [String](UTF8Encoding.UTF8.GetChars(tag))

Hex01 = ConvHexToByte(ValoriAsc.Substring(0, 2))
Hex02 = ConvHexToByte(ValoriAsc.Substring(2, 2))
Hex03 = ConvHexToByte(ValoriAsc.Substring(4, 2))
Hex04 = ConvHexToByte(ValoriAsc.Substring(6, 2))
Hex05 = ConvHexToByte(ValoriAsc.Substring(8, 2))

crc = CByte(Hex01 Xor Hex02 Xor Hex03 Xor Hex04 Xor Hex05)

Debug.Print(crc.ToString())

RetValue = (b(0) = &amp;H2 AndAlso b(13) = &amp;HD AndAlso b(14) = &amp;HA AndAlso b(15) = &amp;H3)

Return RetValue

End Function

Private Shared Function ConvHexToByte(Value As String) As Byte

If Value.Length = 2 Then
Dim str1 As [String] = Value.Substring(0, 1)
Dim str2 As [String] = Value.Substring(1, 1)

If str1.ToUpper() = "A" Then
str1 = "10"
End If

If str1.ToUpper() = "B" Then
str1 = "11"
End If

If str1.ToUpper() = "C" Then
str1 = "12"
End If

If str1.ToUpper() = "D" Then
str1 = "13"
End If

If str1.ToUpper() = "E" Then
str1 = "14"
End If

If str1.ToUpper() = "F" Then
str1 = "15"
End If

If str2.ToUpper() = "A" Then
str2 = "10"
End If

If str2.ToUpper() = "B" Then
str2 = "11"
End If

If str2.ToUpper() = "C" Then
str2 = "12"
End If

If str2.ToUpper() = "D" Then
str2 = "13"
End If

If str2.ToUpper() = "E" Then
str2 = "14"
End If

If str2.ToUpper() = "F" Then
str2 = "15"
End If

Dim b1 As [Byte] = [Byte].Parse(str1)
Dim b2 As [Byte] = [Byte].Parse(str2)
Dim cv As [Byte] = CByte(b1 * 16 + b2)

Return cv

End If

Return 0

End Function</pre>
<p>&nbsp;</p>
<p>Potete visitare il blog di <a href="http://community.dotnetwork.it/alberto/Default.aspx" target="_blank">Alberto</a> ed il suo progetto di <a href="http://community.dotnetwork.it/alberto/archive/2011/10/20/netduino-plus-rilevazione-presenze-con-rfid.aspx" target="_blank">Rivelatore presenze con RFID</a>.</p>
<p>The post <a href="https://logicaprogrammabile.it/calcolare-il-checksum-tag-lettore-rfid-id12/">Calcolare il checksum del tag tramite lettore RFID ID-12 (versione vb.net)</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/calcolare-il-checksum-tag-lettore-rfid-id12/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Netduino gestire lettore RFID ID-12</title>
		<link>https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/</link>
					<comments>https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 02 May 2011 10:16:05 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[Controllo Accessi]]></category>
		<category><![CDATA[ID-12]]></category>
		<category><![CDATA[RFID]]></category>
		<category><![CDATA[Tag]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1022</guid>

					<description><![CDATA[<p>Esperimenti con il lettore Innovations RFID ID-12. L&#8217;identificazione a frequenza (RFID) è un sistema molto interessante che permette, appunto, di identificare gli oggetti a distanza, in modo automatico. Questa tecnologia si basa sull&#8217;uso di transponder, definiti tag, che permettono di trasmettere al lettore (nel nostro...</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/">Netduino gestire lettore RFID ID-12</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Esperimenti con il lettore Innovations RFID ID-12.</h1>
<p>L&#8217;identificazione a frequenza (RFID) è un sistema molto interessante che permette, appunto, di identificare gli oggetti a distanza, in modo automatico. Questa tecnologia si basa sull&#8217;uso di transponder, definiti tag, che permettono di trasmettere al lettore (nel nostro caso il reader RFID ID-12), tramite onde radio, i dati contenuti al loro interno.</p>
<p>Possiamo pensare a questa tecnologia come un&#8217;evoluzione dei codici a barre, ma che presenta notevoli vantaggi come, la lettura simultanea di tag (anche 200 tag al secondo), una maggiore resistenza all&#8217;usura e la capacità di memorizzare diverse informazioni nel loro chip integrato.</p>
<p>I tag presenti in commercio sono di diverso tipo e si presentano spesso come smart card, portachiavi e bande adesive. La figura seguente mostra come è strutturato un tag RFID</p>
<p><img decoding="async" class="aligncenter wp-image-1029 size-full" title="TagRfid" src="https://logicaprogrammabile.it/wp-content/uploads/2011/04/TagRfid.jpg" width="181" height="185" /><span id="more-1022"></span>La frequenza di funzionamento dei tag può essere tipicamente di 125KHz o 13.56MHz, ma esistono modelli che utilizzano frequenze dell&#8217;ordine dei GHz (&gt;2.4GHz).<br />
Le parti principali che lo compongono sono l&#8217;antenna è il microchip. L&#8217;antenna ha il compito di alimentare il microchip sfruttando il campo elettromagnetico generato dal lettore, e di veicolare verso il lettore il segnale del microchip.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1028 size-full" title="ID12RFIDReader" src="https://logicaprogrammabile.it/wp-content/uploads/2011/04/ID12RFIDReader.jpg" alt="ID-12 lettore rfid" width="387" height="197" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/04/ID12RFIDReader.jpg 387w, https://logicaprogrammabile.it/wp-content/uploads/2011/04/ID12RFIDReader-300x152.jpg 300w" sizes="auto, (max-width: 387px) 100vw, 387px" /></p>
<p>In commercio esistono vari dispositivi evoluti che permettono con poca spesa di creare il proprio sistema RFID. Il dispositivo ID-12 con cui ho avuto esperienza è prodotto dalla Innovations, ha un costo di circa 25-30€ è il suo impiego risulta semplice ed intuitivo. Di seguito la pin function del dispositivo:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1032 size-full" title="ID-12_Pin_Function" src="https://logicaprogrammabile.it/wp-content/uploads/2011/04/ID-12_Pin_Function.gif" width="357" height="239" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/04/ID-12_Pin_Function.gif 357w, https://logicaprogrammabile.it/wp-content/uploads/2011/04/ID-12_Pin_Function-300x200.gif 300w" sizes="auto, (max-width: 357px) 100vw, 357px" /></p>
<p>Nel lettore <strong>ID-12</strong> abbiamo un&#8217;antenna integrata che genera un segnale capace di fornire l&#8217;alimentazione al tag. Quando avviciniamo il tag al lettore, il microchip viene alimentato ed invia il suo identificativo.<br />
Per lavorare con il lettore possiamo collegare l&#8217;<strong>ID-12</strong> in questo modo</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1033 size-full" title="UsoID12" src="https://logicaprogrammabile.it/wp-content/uploads/2011/04/UsoID12.gif" alt="Utilizzo del reader ID-12" width="383" height="306" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/04/UsoID12.gif 383w, https://logicaprogrammabile.it/wp-content/uploads/2011/04/UsoID12-300x239.gif 300w" sizes="auto, (max-width: 383px) 100vw, 383px" /></p>
<p>L&#8217;alimentazione di 5Vdc viene fornita tramite i pin 11 e la massa tramite il pin1. Il pin2 (Reset) viene collegato alla 5Vdc, ponendolo a massa otteniamo il reset dell&#8217;ID-12.<br />
Il pin10 (LED/Beeper) viene utilizzato per pilotare un bepper(cicalino); questa funzione è molto interessante poiché il segnale viene generato solo quando il tag è letto correttamente.<br />
Il pin7 (Format Selector) gestisce il formato del dato in uscita al pin10; nel mio caso collegandolo a massa ottengo un uscita ASCII (gli altri formati supportati sono Magnet Emulation, collegando il pin7 al pin10 e Wiegand26 collegando il pin7 alla 5Vdc)<br />
Sul pin9 (data pin D0) è disponibile il segnale TTL contenente il dato memorizzato nel tag. Il pin8 (data pin D1) fornisce lo stesso dato ma il segnale è RS232 compatibile, ed quindi possibile collegare questo pin direttamente alla porta seriale del pc.</p>
<p>La portata dell&#8217;antenna integrata dell&#8217;ID-12 è di qualche centimetro, sufficiente per il nostro esperimento (ma è possibile portare il range di lettura a circa 10-12 cm collegando un&#8217;antenna esterna sui pin 3 e 4).<br />
Lo schema successivo mostra i collegamenti da effettuare con il Netduino:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1040 size-full" title="NetduinoID12_bb" src="https://logicaprogrammabile.it/wp-content/uploads/2011/04/NetduinoID12_bb.jpg" alt="Netduino ID12 Reader" width="409" height="348" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/04/NetduinoID12_bb.jpg 409w, https://logicaprogrammabile.it/wp-content/uploads/2011/04/NetduinoID12_bb-300x255.jpg 300w" sizes="auto, (max-width: 409px) 100vw, 409px" /></p>
<p>Il circuito è identico allo schema base visto precedentemente, l&#8217;uscita dell&#8217;ID-12 (pin9) è collegata al pin0 (UART RX) del <strong>Netduino</strong>.</p>
<p>Alimentiamo il Netduino e proviamo ad avvicinare un tag al dispositivo per verificare che il led sul pin10 si accenda, dandoci conferma della corretta lettura del tag.<br />
Il formato ASCII del dato restituito dal lettore ID-12 è composto da 16 byte ed è rappresentato in figura:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1052 size-full" title="DataStructureID12" src="https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID121.gif" alt="Struttura dati ID-12 reader" width="650" height="61" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID121.gif 650w, https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID121-300x28.gif 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<ul>
<li>Il primo byte rappresenta lo <strong>Start TX</strong> e vale 0x02</li>
<li><strong>Data</strong> è composto da 10 byte che rappresentano l&#8217;<strong>ID</strong> del tag</li>
<li><strong>Checksum</strong> vale 2 byte e si ottiene ponendo in XOR i 10 byte di dati</li>
<li>Il byte 14 è un <strong>Carrier Return</strong> e vale 0x13</li>
<li>il byte 15 è un <strong>Line Feed</strong> e vale 0x10</li>
<li>il byte 16 rappresenta l&#8217;<strong>End TX</strong> e vale 0x03</li>
</ul>
<p>Ora passiamo scrivere il codice C# per questo circuito</p>
<pre class="lang:c# decode:true ">Int32 Ciclo = 0;
//Creao un oggetto per lavorare con
//la porta seriale
SerialPort sp = new SerialPort("COM1", 9600, Parity.None, 8);

//Apro la porta
sp.Open();

while (true)
{
//Attesa di 200 millisecondi
Thread.Sleep(200);

//aspetto la lettura di tutti i 16 byte
if (sp.BytesToRead == 16)
{
//creo un buffer di 16 byte
Byte[] b = new Byte[sp.BytesToRead];

//leggo dalla seriale i dati inviati dall'ID-12
sp.Read(b, 0, b.Length);

//eseguo un ciclo che mi printa tutti i singoli
//byte del buffer
for (Ciclo = 0; Ciclo &lt; b.Length; Ciclo++)
{
Debug.Print(b[Ciclo].ToString());
}
}
}</pre>
<p>&nbsp;</p>
<p>Il codice precedente ha evidenziato come leggere i dati provenienti dal lettore ID-12. L&#8217;esempio è molto semplice e non ha bisogno di grosse descrizioni.<br />
In questo modo possiamo realizzare qualsiasi applicazione basata sulla tecnologia RFID.</p>
<p>&nbsp;</p>
<p>The post <a href="https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/">Netduino gestire lettore RFID ID-12</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
