<?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>RFID Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/rfid/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/rfid/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sat, 27 Aug 2022 10:12:10 +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>RFID Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/rfid/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arduino leggere tag rfid con ID-12</title>
		<link>https://logicaprogrammabile.it/arduino-leggere-tag-rfid-id-12/</link>
					<comments>https://logicaprogrammabile.it/arduino-leggere-tag-rfid-id-12/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 19 Sep 2014 08:00:32 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[ID-12]]></category>
		<category><![CDATA[RFID]]></category>
		<category><![CDATA[Tag]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=4307</guid>

					<description><![CDATA[<p>Come acquisire un tag rfid tramite lettore ID12 In un vecchio articolo avevamo visto come utilizzare il lettore ID-12 impiegando la scheda Netduino, per acquisire il codice di un tag 125KHz. Ho ricevuto diverse richieste per creare un piccolo tutorial che prevedesse l&#8217;uso di una...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-leggere-tag-rfid-id-12/">Arduino leggere tag rfid con ID-12</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come acquisire un tag rfid tramite lettore ID12</h1>
<p>In <a href="https://logicaprogrammabile.it/netduino-gestire-lettore-rfid-id-12/">un vecchio articolo</a> avevamo visto come <a href="https://amzn.to/3QWlRqf" target="_blank" rel="noopener">utilizzare il<strong> lettore ID-12</strong></a> impiegando la scheda Netduino, per acquisire il codice di un<strong> tag 125KHz</strong>. Ho ricevuto diverse richieste per creare un piccolo tutorial che prevedesse l&#8217;uso di una scheda <strong>Arduino</strong>.<br />
La parte teorica, relativa alla tecnologia rfid e alle caratteristiche del lettore ID-12, rimane pressoché invariata. Anche lo schema elettrico è identico dato che il Netduino possiede la stessa disposizione dei pin <a href="https://amzn.to/3ALRIU3" target="_blank" rel="noopener">come una Arduino UNO</a>.</p>
<p>Per chiarezza riporto comunque i collegamenti tra la UNO ed il lettore di tag.</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2014/09/ArduinoID12.gif"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-4308" src="https://logicaprogrammabile.it/wp-content/uploads/2014/09/ArduinoID12.gif" alt="Arduino ID-12LA" width="562" height="402" /></a></p>
<p>Nella tabella seguente trovate l&#8217;elenco dei collegamenti tra Arduino UNO e lettore ID-12:</p>
<table border="0">
<tbody>
<tr>
<td>Pin Arduino UNO</td>
<td>pin ID-12</td>
</tr>
<tr>
<td> 5V dc</td>
<td> pin 11 (Vcc)</td>
</tr>
<tr>
<td> Gnd</td>
<td> pin 1 (Gnd)</td>
</tr>
<tr>
<td> 5V dc</td>
<td>pin 2 (Res)</td>
</tr>
<tr>
<td>pin 0 (RX)</td>
<td>pin 9 (D0)</td>
</tr>
<tr>
<td>Gnd</td>
<td>pin 7 (+/-)</td>
</tr>
<tr>
<td></td>
<td>pin 10 (Led)</td>
</tr>
</tbody>
</table>
<p>il pin 10 (led) del<strong> lettore ID-12</strong> può essere collegato ad un <strong>led</strong> o ad un piccolo <strong>buzzer</strong>. Ogni volta che avvicineremmo un tag rfid, sul pin 10 avremmo un segnale ad onda quadra che permette appunto di illuminare un led o di far suonare un piccolo buzzer.</p>
<h3>Il codice dello sketch</h3>
<p>A questo punto dovremmo scrivere alcune righe di codice che ci permetteranno semplicemente di leggere i byte in arrivo sulla seriale della UNO.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="c">void setup()
{
  //init seriale a 9600 bps
  Serial.begin(9600);
}

void loop()
{
  //verifico la presenza di dati in arrivo
  if (Serial.available() == 16) 
  {
    //leggo i dati presenti sulla seriale e
    //gli invio sul serial monitor
    for (int i = 0; i &lt; 16; i++) 
    {
      Serial.print(Serial.read());
      Serial.print(" ");
    }
    Serial.println();
  }
}</pre>
<p>per verificare tutto il sistema apriamo il serial monitor, impostiamo la velocità di trasmissione a 9600 baud, e avviciniamo un tag rfid al lettore. Se non ci sono stati errori otterremo l&#8217;accensione del led collegato all&#8217;ID-12 e la rappresentazione sul serial monitor di un codice alfanumerico. Avvicinando più volte il tag dovremmo ottenere sempre lo stesso codice.</p>
<p>Il codice precedente non considera però i caratteri speciali che vengono inviati dal lettore ID-12, infatti se modifichiamo il codice in modo da restituire tutti i valori che arrivano sulla porta seriale di Arduino UNO ci accorgeremmo che oltre al codice del tag sono presenti anche dei caratteri speciali aggiuntivi, che il serial monitor non mostra:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="c">void setup()
{
  //init seriale a 9600 bps
  Serial.begin(9600);
}

void loop()
{
  //verifico la presenza di dati in arrivo
  if(Serial.available() &gt; 0)
  {
    //leggo e spedisco al serial monitor tutto cio
    //che arriva alla porta seriale
    //ad ogni lettura invio anche un ritorno a capo
    //in modo da mostrare tutti i singoli valori
    //uno in ogni riga 
    Serial.println(Serial.read());
  }
}</pre>
<p>avvicinando nuovamente il tag rfid otteniamo dei valori decimali che rispecchiano questo schema:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID121.gif"><img decoding="async" class="aligncenter size-full wp-image-1052" 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="(max-width: 650px) 100vw, 650px" /></a></p>
<p>nella figura seguente viene mostrato il serial monitor con tutti i byte letti dal lettore:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2014/09/Rfid.gif"><img decoding="async" class="aligncenter size-full wp-image-4323" src="https://logicaprogrammabile.it/wp-content/uploads/2014/09/Rfid.gif" alt="schema rfid" width="409" height="405" /></a></p>
<p>il primo carattere che viene inviato all&#8217;Arduino UNO è sempre identico per ogni tag rfid letto e ha il valore decimale 2, successivamente vengono spediti 10 caratteri che formano il codice del tag rfid, poi vengono spediti 2 caratteri che permettono di verificare il dato letto, tramite un semplice calcolo crc.<br />
Infine viene spedito un carattere di ritorno a capo e di nuova linea, e per ultimo il carattere di chiusura 3 decimale.</p>
<p>Questo piccolo sistema ci permette di creare applicazioni più evolute e utili. Ad esempio per creare un piccolo sistema di controllo, per il quale se il tag rfid corrisponde ad un dato codice viene attivata un&#8217;uscita di Arduino UNO (per accendere una lampada o attivare un relè), possiamo modificare il codice in questo modo:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="c">byte datarfid[16];
byte index = 0;

String tag ="";

void setup()
{
  //init seriale a 9600 bps
  Serial.begin(9600);

  delay(100);
}

void loop()
{
  //attendo la presenza di tutti e 16 byte provenienti
  //dal lettore id-12
  if(Serial.available() &gt;= 16)
  {
    //leggo ogni byte e lo memorizo nell'array
    //precedentemente definito
    for(index = 0; index &lt;= 15; index++)
    {
      datarfid[index] = Serial.read();
    }

    //ora ricavo i 10 byte che compongono il codice del tag
    //e li concateno in un ogetto stringa
    //da notare la conversione dei byte in char
    for(index = 1; index &lt;= 10; index++)
    {
      //concateno la stringa convertendo i byte in char
      tag += (char)datarfid[index];
    }

    //ora verifico se il codice del tag corrisponde
    //a quello memorizzato nel sistema
    if(tag == "44118837F4")
    {
      //se il codice è identico allora esegui qualcosa!
      Serial.println("Codice OK");
      tag="";
    }
  }
}</pre>
<p>La gestione di tag rfid sta diventando sempre più massiccia e credo che diverrà un perno delle applicazioni legate all&#8217;IOT. L&#8217;implementazione di questi sistemi è semplice ed anche il costo dei tag e dei lettori è molto economico.</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-leggere-tag-rfid-id-12/">Arduino leggere tag rfid con ID-12</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-leggere-tag-rfid-id-12/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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 loading="lazy" 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="auto, (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 loading="lazy" 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>Come calcolare il crc del tag con Netduino e lettore RFID ID-12</title>
		<link>https://logicaprogrammabile.it/calcolare-il-crc-tag-netduino-lettore-rfid-id12/</link>
					<comments>https://logicaprogrammabile.it/calcolare-il-crc-tag-netduino-lettore-rfid-id12/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Thu, 13 Oct 2011 16:48:11 +0000</pubDate>
				<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[ID-12]]></category>
		<category><![CDATA[Lettore ID-12]]></category>
		<category><![CDATA[Netduino]]></category>
		<category><![CDATA[RFID]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2080</guid>

					<description><![CDATA[<p>Utilizzare il Netduino per calcolare il crc del tag rfid Nell&#8217;articolo scritto qualche tempo, che mostrava come impiegare un Netduino ed un lettore rfid ID-12 della Innovations, ho descritto solamente la parte che acquisiva l&#8217;id del tag, senza analizzare come calcolare il crc indispensabile per...</p>
<p>The post <a href="https://logicaprogrammabile.it/calcolare-il-crc-tag-netduino-lettore-rfid-id12/">Come calcolare il crc del tag con Netduino e lettore RFID ID-12</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare il Netduino per calcolare il crc del tag rfid</h1>
<p><a title="Netduino gestire lettore RFID ID-12" href="https://logicaprogrammabile.it/netduino-gestire-lettore-id-12/">Nell&#8217;articolo scritto qualche tempo</a>, che mostrava come impiegare un <strong>Netduino</strong> ed un lettore <strong>rfid ID-12</strong> della Innovations, ho descritto solamente la parte che acquisiva l&#8217;id del tag, senza analizzare come calcolare il crc indispensabile per avere la certezza che il dato letto fosse corretto.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1051" title="DataStructureID12" src="https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID12.gif" alt="" width="650" height="61" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID12.gif 650w, https://logicaprogrammabile.it/wp-content/uploads/2011/05/DataStructureID12-300x28.gif 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<p>Riprendo questo argomento su segnalazione di una gentilissima visitatrice <a href="http://community.dotnetwork.it/Sabrina/default.aspx" target="_blank">Sabrina Cosolo</a>, che ringrazio per avermi fatto notare un errore nell&#8217;illustrazione del <a href="http://it.wikipedia.org/wiki/Cyclic_redundancy_check" target="_blank">calcolo del crc</a>, infatti scrissi che i due byte del crc fossero ottenuti ponendo in OR i 10 byte dell&#8217;id del tag.<br />
Questo non è vero in quanto bisogna mettere in XOR i valori esadecimali ottenuti dalla conversione in ASCII dei byte letti dal lettore.</p>
<p><span id="more-2080"></span>Mi spiego meglio impiegando l&#8217;illustrazione seguente</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2083" title="Calcolo CRC lettore tag RFFID ID-12" src="https://logicaprogrammabile.it/wp-content/uploads/2011/10/ID12_CRC.gif" alt="calcolare il crc lettore Innovations ID-12" width="638" height="380" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/10/ID12_CRC.gif 638w, https://logicaprogrammabile.it/wp-content/uploads/2011/10/ID12_CRC-300x178.gif 300w" sizes="auto, (max-width: 638px) 100vw, 638px" /></p>
<p>i 10 byte rappresentano l&#8217;id del tag, mentre i due byte rappresentano il valore di crc. Il calcolo viene eseguito convertendo i singoli byte in valori ASCII, per ottenere 5 valori esadecimali prendendo 2 byte alla volta, come visibile in figura. Eseguendo un calcolo XOR di questi valori esadecimali otteniamo il calore del CRC.</p>
<p>Ora la difficoltà che ho riscontrato è quella di convertire un byte in un valore esadecimale, semplicissimo da fare con il .Net framework ma non altrettanto con la versione micro (non sono riuscito a trovare delle risorse che svolgessero questo compito!), quindi ho scritto un po di codice per arrangiarmi, mi rendo conto che non è il massimo ma diciamo che per questo esempio funziona!!</p>
<p>Ho commentato il codice per spiegare meglio il funzionamento.</p>
<pre class="lang:c# decode:true ">using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

using System.IO.Ports;
using System.Text;

namespace Netduino_ID12Reader
{
public class Program
{
    public static Byte ConvHexToByte(String Value)
    {
      if (Value.Length == 2)
      {
        String str1 = Value.Substring(0, 1);
        String str2 = Value.Substring(1, 1);

        if (str1.ToUpper() == "A")
          str1 = "10";

        if (str1.ToUpper() == "B")
          str1 = "11";

        if (str1.ToUpper() == "C")
          str1 = "12";

        if (str1.ToUpper() == "D")
          str1 = "13";

        if (str1.ToUpper() == "E")
          str1 = "14";

        if (str1.ToUpper() == "F")
          str1 = "15";

        //###########################
        if (str2.ToUpper() == "A")
          str2 = "10";

        if (str2.ToUpper() == "B")
          str2 = "11";

        if (str2.ToUpper() == "C")
          str2 = "12";

        if (str2.ToUpper() == "D")
          str2 = "13";

        if (str2.ToUpper() == "E")
          str2 = "14";

        if (str2.ToUpper() == "F")
          str2 = "15";

        //converto i singoli caratteri in valori byte
        Byte b1 = Byte.Parse(str1);
        Byte b2 = Byte.Parse(str2);
        //onverto i duebyte in un valore hex
        Byte cv = (Byte)(b1 * 16 + b2);

        //Debug.Print(cv.ToString());

        return cv;

      }

      return 0;
    }

    public static void Main()
    {
      SerialPort sp = new SerialPort("COM1", 9600, Parity.None, 8);
      OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
      UTF8Encoding asen = new UTF8Encoding();

      //apro la oprta seriale per acquisire i dati dal lettore id-12
      sp.Open();

      while (true)
      {
        Thread.Sleep(200);
        led.Write(false);

        //controllo ciclicamente che arrivino tutti i
        //byte dal lettore
        if (sp.BytesToRead == 16)
        {
          Byte[] b = new Byte[sp.BytesToRead];
          Byte[] tag = new Byte[10];

          Byte Hex01, Hex02, Hex03, Hex04, Hex05, crc;

          //leggo tutti i byte provenienti dal lettore
          sp.Read(b, 0, b.Length);

          //copio i 10 byte dell'ID del tag in un array dedicato
          Array.Copy(b, 1, tag, 0, 10);

          //converto i byte in una stringa ASCII
          String ValoriAsc = new String(UTF8Encoding.UTF8.GetChars(tag));

          //ottengo i valori esadecimali dalla coppia di byte Ascii
          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));

          //calcolo il crc mettendo in xor i valori hex
          crc = (byte)(Hex01 ^ Hex02 ^ Hex03 ^ Hex04 ^ Hex05);

          //printo il valore di crc
          Debug.Print(crc.ToString());

          if (b[0] == 0x02 &amp;&amp; b[13] == 0xD &amp;&amp; b[14] == 0xA &amp;&amp; b[15] == 0x03)
            led.Write(true);

        }

      }

    }
}
}</pre>
<p>&nbsp;</p>
<p>Il calcolo del crc può risultare utile nel caso di applicazioni dove la certezza di aver letto bene l&#8217;id del tag è fondamentale, come, per esempio in applicazioni come alcune delle applicazioni illustrate <a href="http://it.wikipedia.org/wiki/Radio_Frequency_IDentification#Applicazioni_RFID">nella pagina di wikipedia</a> dedicata al sistema RFID.</p>
<p>Per considerazioni e spiegazioni aggiuntive vi invito a scrivermi nei commenti o tramite mail</p>
<p>al prossimo articolo&#8230;</p>
<p>The post <a href="https://logicaprogrammabile.it/calcolare-il-crc-tag-netduino-lettore-rfid-id12/">Come calcolare il crc del tag con Netduino e 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/calcolare-il-crc-tag-netduino-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 loading="lazy" 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>
		<item>
		<title>Cosa posso fare con Arduino Netduino?</title>
		<link>https://logicaprogrammabile.it/cosa-posso-fare-con-arduino-netduino/</link>
					<comments>https://logicaprogrammabile.it/cosa-posso-fare-con-arduino-netduino/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Tue, 29 Mar 2011 09:11:24 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Tutorial Netduino]]></category>
		<category><![CDATA[.Net micro framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Esperimenti]]></category>
		<category><![CDATA[Progetti]]></category>
		<category><![CDATA[RFID]]></category>
		<category><![CDATA[Utilizzo]]></category>
		<category><![CDATA[Visual C#]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=618</guid>

					<description><![CDATA[<p>Idee sull&#8217;uso delle schede Netduino ed Arduino Era il 1999 quando acquistai il libro Programmare Microsoft Visual Basic 6.0, di Francesco Balena, quello fu il mio ingresso nel mondo della programmazione. Ancora non sapevo cosa potessi fare, che programmi potessi sviluppare, quali problemi sarei riuscito...</p>
<p>The post <a href="https://logicaprogrammabile.it/cosa-posso-fare-con-arduino-netduino/">Cosa posso fare con Arduino Netduino?</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Idee sull&#8217;uso delle schede Netduino ed Arduino</h1>
<p>Era il 1999 quando acquistai il libro Programmare Microsoft Visual Basic 6.0, di Francesco Balena, quello fu il mio ingresso nel mondo della programmazione. Ancora non sapevo cosa potessi fare, che programmi potessi sviluppare, quali problemi sarei riuscito a risolvere. Ero entusiasta di quel libro, tutto veniva spiegato accuratamente e con grande precisione e professionalità. Sognavo di realizzare software di ogni tipo, di aiutare amici e parenti con i miei programmi.</p>
<p>La cosa che più mi intrigava fu la possibilità che il software potesse interagire con il mondo esterno. Sfruttando la porta seriale oppure quella parallela, avevo l&#8217;intenzione di costruire piccoli dispositivi per acquisire segnali da sensori e pilotare attuatori. La cosa che però mi impedì di realizzare questi circuiti, fu l&#8217;ingombro fisico del pc. Non potevo creare un sistema di irrigazione automatizzato poiché era improbabile mettere un pc nei pressi di un giardino e farlo funzionare costantemente evitando malfunzionamenti. Senza pensare ai costi realizzazione di un sistema di questo tipo!</p>
<p>Passarono gli anni e la parte &#8216;hardware&#8217; dei miei progetti fu sopraffatta da quella software&#8230; Nel mentre nacque il .Net Framework e incominciai a migrare, dopo tanto codice vb6, verso il  nuovo linguaggio C#.</p>
<p>Ogni tanto sentivo parlare su vari forum e blog del .Net micro framework e di alcuni (pochi) dispositivi che potevano essere programmati utilizzando Visual C#, ma ormai ero lanciato verso lo sviluppo desktop e web e la voglia di riprendere in mano il saldatore era <del>quasi</del> svanita.</p>
<p>Successivamente il mondo dello sviluppo software ha iniziato ad entrare nelle case, nelle auto, nei dispositivi portatili, nel controllo accessi ed in generale ha ridato linfa al mondo embedded che era una nicchia riservato all&#8217;industria e alle medio-grandi imprese.<span id="more-618"></span>Alche io ho iniziato a domandarmi se i programmatori desktop e web potessero lavorare non solo con i pc ed i server ma anche con questi piccoli dispositivi che ormai potevano essere paragonati a dei pc in miniatura.<br />
La risposta giunse quando scoprii l&#8217;esistenza di Arduino e di Netduino poi. L&#8217;idea di poter scrivere codice per queste piattaforme era sorprendentemente fantastica! Potevo riprendere a sperimentare con i dispositivi hardware è creare nuove applicazioni.</p>
<p>Ma la domanda principale che mi sono posto è, <strong>cosa posso fare con Arduino Netduino</strong>?</p>
<p>Sicuramente trovo che questi dispositivi siano davvero versatili e duttili, ma certamente penso che non possano essere impiegati ovunque. In base alla mia esperienza professionale credo che gli ambiti migliori dove utilizzare Arduino e Netduino sono:</p>
<ul>
<li>Domotica</li>
<li>Agricoltura</li>
<li>Controllo accessi</li>
<li>Robotica amatoriale</li>
<li>Dispositivi di allarme</li>
<li>Stazioni meteo</li>
<li>Sistemi di controllo, anche remoti (esclusi quelli real time)</li>
<li>Dispositivi wireless</li>
<li>Dispositivi con accesso LAN</li>
<li>Utilizzo per scopi didattici e sperimentali</li>
</ul>
<p>certamente esistono altri impieghi, ma questa lista nasce secondo le mie esperienze, secondo quello che io potrei realmente realizzare con questi dispositivi. Non mi sembra giusto scrivere una serie di applicazioni, solo per avere un elenco più lungo e importante, che poi non saprei giustificare!</p>
<p>Analizzo meglio queste voci per dare un&#8217;idea più precisa sui vari punti</p>
<p><strong>Domotica</strong>:</p>
<p style="padding-left: 30px;">Circuiti elettronici che riguardano l&#8217;ambito domestico come controllo del sistema di illuminazione, gestione dell&#8217;impianto di riscaldamento, rivelazione fumi e gas, azionamento sistemi di irrigazione del giardino.</p>
<p><strong>Agricoltura:</strong></p>
<p style="padding-left: 30px;">Sistemi automatici di irrigazione, riscaldamento e refrigerazione serre.</p>
<p><strong>Controllo Accessi</strong>:</p>
<p style="padding-left: 30px;">Gestione lettori RFID per apertura ingressi, sistemi i accesso basati su tastiere o lettori di schede magnetiche. Possibilità di interfacciamento del sistema alla rete Lan.</p>
<p><strong>Robotica Amatoriale</strong>:</p>
<p style="padding-left: 30px;">Creazione automi basati sulla gestione di diversi sensori e attuatori. Creazione di piccoli robot autonomi che svolgono compiti predefiniti.</p>
<p><strong>Dispositivi di Allarme</strong>:</p>
<p style="padding-left: 30px;">Gestione di sensori di movimento e interruttori, attivazione sirene e segnalazione intrusione via rete gsm o internet.</p>
<p><strong>Stazione Meteo</strong>:</p>
<p style="padding-left: 30px;">Controllo di sensori di temperatura, pressione, umidità, anemometri e pluviometri e possibilità di registrare tutti i dati su memoria solida o invio tramite lan.</p>
<p><strong>Sistemi di Controllo</strong>:</p>
<p style="padding-left: 30px;">Controllo e gestione di sistemi numerici, acquisizione segnali, elaborazione e attuazione. Escluderei però sistemi real-time, e impieghi in ambito industriale.</p>
<p><strong>Dispositivi Wireless</strong>:</p>
<p style="padding-left: 30px;">Comunicazioni e controllo di dispositivi senza file utilizzando trasmettitori RF.</p>
<p><strong>Dispositivi con Accesso Lan</strong>:</p>
<p style="padding-left: 30px;">Creazione di sistemi con controllo remoto del dispositivo, piccoli server web, comunicazione con protocolli UDP e TCP/IP</p>
<p><strong>Utilizzo per scopi didattici</strong>:</p>
<p style="padding-left: 30px;">Realizzazione di semplici esperimenti per iniziare a imparare il funzionamento dei sistemi di controllo, dell&#8217;acquisizione segnali e loro elaborazione. Come sistema sperimentale per iniziare ad esplorare il mondo dell&#8217;elettronica.</p>
<p>La mia considerazione non vuole dare una  risposta definitiva alla domanda, ma penso che aiuti molti principianti, che ancora stanno valutando se acquistare questi dispositivi piuttosto che altri.<br />
Il mio consiglio è, visto il basso costo delle schede e la disponibilità di ambienti di sviluppo gratuiti, di investire un po di denaro per poter provare a sperimentare e creare piccoli circuiti. La pratica fa subito capire la potenzialità di queste schede e ci fa entrare in un mondo sicuramente interessante che puo dare tante soddisfazioni.<br />
Buona sperimentazione a tutti!</p>
<p>The post <a href="https://logicaprogrammabile.it/cosa-posso-fare-con-arduino-netduino/">Cosa posso fare con Arduino Netduino?</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/cosa-posso-fare-con-arduino-netduino/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
