
Come far comunicare un lettore badge con Arduino + Microsoft Dynamics Nav
- On 17 Luglio, 2017
- arduino, automation, dynamics nav, hr, iot, microsoft dynamics, nav
L’automatizzazione ed il controllo dei processi di un’azienda sono sicuramente i principali aspetti su cui oggi possiamo puntare per aumentare l’efficienza, in termini di costi e tempi di produzione, dell’azienda stessa.
Ma come si può interfacciare un software gestionale, come ad esempio Microsoft Dynamics Nav, con un macchinario esterno, o un qualunque device, che in maniera del tutto asincrona ed indipendente effettua le proprie misurazioni o i propri controlli?
Oggi vedremo ad esempio come riportare le letture di un lettore di badge in una tabella creata appositamente su Microsoft Dynamics Nav per la gestione degli ingressi e le uscite dei dipendenti in un’azienda.
Questo piccolo progetto ovviamente può essere realizzato con molteplici modalità ognuna con la propria efficienza e il proprio tempo di realizzazione. Di seguito vedremo come realizzarlo utilizzando il microcontrollore ATmega328 presente sulla board di prototipizzazione Arduino, il modulo mifare RC522 e naturalmente Microsoft Nav 2017.
Lo scambio dati avverrà in maniera asincrona e quindi non in real-time, tramite file di testo .txt.
Come collegare il dispositivo ad Arduino
Il collegamento da effettuare dal dispositivo di letture delle tessere ed Arduino è abbastanza semplice, basta collegare i PIN come riportato nella seguente tabella:
RC522 | SDA | SCK | MOSI | MISO | IRQ | GND | RST | 3.3V |
ARDUINO | D10 | D13 | D11 | D12 | N/A | GND | D9 | 3.3V |
CODICE ARDUINO
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10 // 53 per Mega
#define RESET_DIO 9
#define delayRead 1000 // Time of delay
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO);
void setup()
{
Serial.begin(9600);
/* Abilita SPI*/
SPI.begin();
/* Viene inizilizzato RFID reader */
RC522.init();
Serial.println(“Setup”);
}
void loop()
{
/* Temporary loop counter */
byte i;
// Se viene letta una tessera
if (RC522.isCard())
{
// Viene letto il suo codice
RC522.readCardSerial();
String codiceLetto =””;
Serial.println(“Codice delle tessera letto:”);
// Viene caricato il codice della tessera, all’interno di una Stringa
for(i = 0; i <= 4; i++)
{
codiceLetto+= String (RC522.serNum[i],HEX);
codiceLetto.toUpperCase();
}
Serial.println(codiceLetto);
delay(delayRead);
}
}
Se si dispone di arduino Yun, o di una SHIELD con scheda SD, è facile salvare i codici letti dal badge direttamente in un file .txt. In alternativa si può utilizzare Processing per leggere i dati dalla seriale di arduino (con la funzione “println” della classe “Serial”) e salvarli successivamente in un file .txt.
A questo punto bisognerà importare le informazioni contenute nel file di testo .txt su Nav. Creando una semplice tabella:
Si potrà aggiungere una funzione che permette di leggere i dati presenti sul file .txt e scriverli nella tabella stessa:
COME SCRIVERE LA FUNZIONE SU NAV
VARIABILI NECESSARIE:
“MyFile” di tipo File.
“StreamInTest” di tipo InStream.
“Buffer” di tipo Text.
“Position”, “Position2”, “Length”, “Length2”, di tipo Integer.
CODICE NAV:
MyFile.OPEN(‘c:\MyFolder\MyText.txt’);
MyFile.CREATEINSTREAM(StreamInTest);
WHILE NOT StreamInTest.EOS DO BEGIN
StreamInTest.READTEXT(Buffer);
// Do some processing.
TabellaRegistrazioni.INIT();
//impostare le variabili Position e Length in base alla sintassi utilizzata
//nella scrittura dei dati nel file txt (nome dipendente e data)
TabellaRegistrazioni.Dipendente:= COPYSTR(Buffer, Position, Length);
TabellaRegistrazioni.DataEora:= COPYSTR(Buffer, Position2, Length2);
END;
MyFile.CLOSE;
Quando la funzione verrà richiamata i dati presenti nel file di testo saranno inseriti nella tabella di Nav come nell’esempio sottostante:
File di testo:
Su Nav vedremo i risultati dell’importazione:
Naturalmente vanno gestite le relazioni che ci sono tra i codici letti da arduino e il nome del dipendente, creando magari una tabella di conversione da cui si evinca a quale dipendente è associato un determinato codice di badge.
Tutto ciò è un semplice esempio che mostra come sia possibile utilizzare Microsoft Dynamics Nav per progetti di automazione e controllo.
Troppo banale? Sarebbe meglio una soluzione Real-Time? Meglio un WebService?
Allora attendete il mio prossimo articolo!
Stay Tuned!
0 Comments