Bi-Card: l’Arduino in formato Business Card

Un biglietto da visita elettronico che può parlare di noi a chi lo riceve…

Da tempo è di moda, per chi opera nell’elettronica e in special modo presso le aziende produttrici di circuiti stampati, fornire il proprio biglietto da visita inciso su un PCB.

Partendo da questa idea, noi siamo andati oltre e ci siamo detti: “perché visto che facciamo un PCB, non stamparne uno che corrisponda a un circuito reale, programmabile, ed eventualmente completarlo dei componenti per farne un dispositivo che parli di noi”. Detto…fatto!

Così è nata Bi-Card, la scheda che qui vi presentiamo, considerabile un biglietto da visita elettronico che, completato con i componenti e collegato via USB a un PC, punta al browser web o ad altre applicazioni.

Si tratta, insomma, di un circuito in formato business card il cui tracciato non è fittizio ma è effettivamente quello di un circuito elettronico, il cui schema elettrico è quello visibile in questo post.

Lo spessore risulta ridottissimo grazie all’adozione di pochi componenti, tutti SMD a profilo bassissimo (il più spesso è il connettore micro USB, almeno se non si montano i connettori di espansione).

Grazie all’architettura Arduino Leonardo (il micro è un ATmega 32u4) su cui il circuito si basa e che in questo caso che simula la tastiera (periferica HID), alla connessione dell’USB, dopo aver aperto a mano il browser, viene digitato il comando per ognuno dei tasti premuti apre il sito Internet, il client di posta elettronica con predefinito l’indirizzo e-mail, la pagina Facebook, Twitter, …i tasti sono comunque personalizzabili per implementare altre funzioni quali la visualizzazione di pdf contenenti il proprio curriculum o propri lavori, relazioni, collegamenti a filmati di presentazione su YouTube, link ad altri social come Linkedin.

Schema elettrico della Bi-Card


Come detto, il circuito realizzato dalla nostra business card è una scheda Arduino Leonardo con formato compatibile Arduino e connettori laterali (può quindi ospitare i connettori strip per supportare gli shield) più quello per l’ICSP, ma le manca sezione alimentazione Vin, quindi riceve 5V. La Vin sui connettori non è portata. I 3,3 volt necessari alla logica degli eventuali shield e riportati sul contatto laterale 3V3, sono ricavati dai 5V dell’USB mediante un regolatore di tensione, che nello specifico è U1.

Il cuore del circuito è il microcontrollore U2, che è appunto l’Atmel 32u4 e che dispone internamente dell’interfaccia USB di tipo Device; questo micro è alimentato con i 5 volt dell’USB e ricava internamente 3 volt per la propria logica. Le linee per la programmazione in-circuit sono riportate sul connettore ICSP standard delle schede Arduino (2 file da 3 contatti, a passo 2,54 mm). Come di consueto, la linea di reset (RST) viene utilizzata per avviare il caricamento dello sketch attraverso il bootloader e nello schema è collegata all’immancabile resistore di pull up e al pulsante che la porta a massa quando serve resettare il microcontrollore manualmente (il reset automatico viene gestito dal PC tramite la connessione USB).

Gli altri cinque pulsanti, collegati alle linee PD7, PC6, PD4, PD0 e PD1 (rispettivamente P1, P2, P3, P4, P5) permettono, se premuti, di attivare le rispettive funzioni (quelle predefinite sono rispettivamente la home page del sito web, l’indirizzo di posta elettronica, la pagina Facebook, la pagina Twitter e quella di YouTube, ma possono essere cambiate dal firmware). Le linee dei pulsanti sono ripetute sui contatti D6, D5, D4, D3, D2 laterali di Arduino per eventuali altri utilizzi; ognuna dispone, inoltre, di un resistore di pull-up settato internamente al microcontrollore da software.

I due LED presenti nel circuito vengono gestiti dal microcontrollore per segnalare l’avvio dello sketch, il caricamento e l’attività sull’USB; in quest’ultimo caso LD2 è il TX LED e LD1 l’RX LED di Arduino. Inoltre LD1 (rosso) lampeggia quando, dopo il collegamento e il riconoscimento da parte del PC, la scheda avvia lo sketch ed è pronta all’uso. LD2 (giallo) lampeggia invece ogni volta che si preme uno dei tasti P1÷P5 per accedere alle rispettive funzioni. Il clock del micro è ottenuto dall’oscillatore interno, che si affida al quarzo Q1 e ai condensatori C4 e C5.

Il piedino AREF, filtrato dal condensatore C2, porta la tensione di riferimento dell’ADC interno al micro Atmega 32u4 sul pin VREF standard Arduino; UCAP (piedino 6 del microcontrollore, ovvero linea d’uscita del regolatore 3 V interno all’Atmega) è invece filtrato dal condensatore C6.

Piano di montaggio della Bi-Card

Elenco componenti

R1, R2: 330 ohm (0603)
R3, R6: 10 kohm (0603)
R4, R5: 22 ohm (0603)
C1, C2: 100 nF ceramico (0603)
C3: 10 µF 6,3 VL tantalio
C4, C5: 15 pF ceramico (0603)
C6: 1 µF ceramico (0603)
C7: 100 nF ceramico (0603)
LD1: LED rosso (0805)
LD2: LED giallo (0805)
Q1: Quarzo 16MHz > RS: 753-7240
U1: TS3480CX33 RF
U2: ATMEGA32U4-AU
P1÷P6: Pulsante SMD basso profilo > RS: 758-2063

Varie:
- Connettore micro USB
- Circuito stampato S1120

Utilizzo

L’uso della Bi-card è piuttosto semplice: una volta collegata al PC, dopo il lampeggio del LED rosso, è pronta per l’uso; per visualizzare il sito web, ovvero affinché P1 sia efficace, bisogna aprire il browser Internet sulla home-page di un motore di ricerca: Google, per esempio. Fatto ciò, premendo P1 in pochi istanti si accede al sito memorizzato nello sketch, dove si può navigare come di consueto.

L’accesso viene ottenuto perché il microcontrollore simula una tastiera e compone i caratteri del sito seguiti da Invio.

Aprendo il client di posta elettronica e premendo P2, si avvia la scrittura di un’e-mail all’indirizzo di posta contenuto nello sketch. Sempre con il browser aperto, il pulsante P3 punta alla pagina Facebook contenuta nello sketch, P4 a Twitter e P5 all’account YouTube.

Va notato che premendo i rispettivi tasti quando è aperto un editor di testo, vengono mostrati i rispettivi link web e, per la posta elettronica, l’indirizzo. Quindi in caso di difficoltà nell’accesso diretto basta fare copia e incolla.

Il firmware

Diamo adesso uno sguardo allo sketch della Bi-card (è riportato per interno nel Listato 1) e analizziamo i punti riguardanti i dati da personalizzare, vale a dire le righe contenenti l’indirizzo web, la casella di posta elettronica e gli eventuali account Facebook, Twitter e YouTube.

Listato 1

int previousButtonState = HIGH;
// for checking the state of a pushButton
int counter = 0; // button push counter
void setup() {
  // make the pushButton pin an input:
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
  pinMode(4, INPUT);
  digitalWrite(4, HIGH);
  pinMode(5, INPUT);
  digitalWrite(5, HIGH);
  pinMode(6, INPUT);
  digitalWrite(6, HIGH);
  pinMode(8, INPUT);
  digitalWrite(8, HIGH);
  // initialize control over the keyboard:
  Keyboard.begin();
}
void loop() {
    // read the pushbutton:
    int buttonState = digitalRead(2);
    // if the button state has changed, 
    if (digitalRead(6) == 0) {
      Keyboard.println(“futuranet.it”);
      delay(2000);
    }
    if (digitalRead(5) == 0) {
      Keyboard.print(“mailto”);
      Keyboard.write(62);
      Keyboard.println(“[email protected]”);
      delay(2000);
    }
    if (digitalRead(4) == 0) {
      Keyboard.println(“https://www.facebook.com/FuturaElettronica/”);
      // Keyboard.print(“]+”);
      delay(2000);
    }
    if (digitalRead(3) == 0) {
      Keyboard.println(“https://twitter.com/futurael”);
      delay(2000);
    }
    if (digitalRead(2) == 0) {
      Keyboard.println(“https://www.youtube.com/user/FuturaElettronica”);
        delay(2000);
      }
      if (digitalRead(8) == 0) {
        Keyboard.println(“A”);
        Keyboard.write(‘A’);
        // for (int i=0;i<200;i++) Keyboard.write(i); 
        //Keyboard.write(‘@’);
        delay(2000);
      }
      // save the current button state for comparison next time:
      previousButtonState = buttonState;
    }

La prima è quella che contiene l’indirizzo web cui puntare quando viene premuto P1 ed è:
void loop() {
// read the pushbutton:
int buttonState = digitalRead(2);
// if the button state has changed,
if (digitalRead(6) == 0) {
Keyboard.println(“futuranet.it”);
delay(2000);
}

Si tratta del loop che testa i cinque pulsanti e che, nel caso in questione, riguarda l’azione correlata allo stato logico zero sul piedino 6. Nella riga Keyboard.println(“www.open-electronics.org”); al posto di www.open-electronics.org potete scrivere il vostro indirizzo web. L’istruzione permette di comporre il testo tra parentesi e virgolette inviandolo sull’USB come si trattasse di tasti premuti.
La successiva porzione del loop è:

if (digitalRead(5)==0) {
Keyboard.print(“mailto”);
Keyboard.write(62);
Keyboard.println(“[email protected]”);

delay(2000);
}

e specifica l’indirizzo di posta elettronica nella riga Keyboard.println(“[email protected]”);. L’istruzione è uguale alla precedente e tra virgolette potete scrivere l’indirizzo di posta elettronica desiderato.
Passiamo adesso alla terza porzione del loop, che riguarda la pressione del pulsante P3 (facente capo alla linea digitale D4 della nostra Arduino) e fa uso della stessa istruzione:

if (digitalRead(4)==0) {
Keyboard.println(“https://www.facebook.com/FuturaElettronica/”);
// Keyboard.print(“]+”);
delay(2000);
}

nella riga Keyboard.println(“https://www.facebook.com/FuturaElettronica”); si scrive l’url della propria pagina Facebook.
La quarta porzione del loop dello sketch riguarda la pressione del pulsante P4 (linea digitale D3) e nella riga Keyboard.println(“https://twitter.com/futurael”); tra le virgolette si specifica l’eventuale propria pagina Twitter.
Ora vediamo la parte di loop riguardante l’indirizzo per raggiungere il proprio account Twitter, che è:

if (digitalRead(3)==0) {
Keyboard.println(“https://twitter.com/futurael”);
delay(2000);
}

Nella solita istruzione Keyboard.println(“www.twitter.com/OpenElectronics”); tra virgolette indicate il vostro eventuale account Twitter.
Infine vediamo l’ultima porzione del loop, che con la solita istruzione Keyboard.println specifica l’eventuale indirizzo per raggiungere il proprio account YouTube:

if (digitalRead(2)==0) {
Keyboard.println(“https://www.youtube.com/user/FuturaElettronica”);
delay(2000);
}

Al solito, tra le virgolette indicate l’url corrispondente al vostro account YouTube.
Notate che, volendo, potete sostituire il testo tra virgolette nelle porzioni di loop analizzate, cambiando di conseguenza la funzionalità dei pulsanti; per esempio potete richiamare più pagine web o altri servizi accessibili da Internet, così da creare il vostro biglietto da visita personalizzato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu