Project Aurora: Test del sistema I²C

Project Aurora: Test del sistema I²C

Oggi parleremo del protocollo I²c , fondamentale per il nostro progetto. Come anticipato  negli scorsi post, il protocollo serve a far colloquiare due o più dispositivi tramite un bus. In dettaglio prendiamo la citazione da Wikipedia:

I²C, acronimo di Inter Integrated Circuit (pronuncia i-quadro-ci o i-due-ci), un sistema di comunicazione seriale bifilare utilizzato tra circuiti integrati […]  classico bus I²C è composto da almeno un master ed uno slave (letteralmente “capo, padrone” e “sottoposto, schiavo”).”

Nel nostro caso ci servirà a far colloquiare l’Arduino adibito per prendere informazioni dalla centralina tramite porta OBD-II e il nostro Aurora perchè (come specificato nel primo post del progetto), il micro controllore che stiamo utilizzando (Arduino UNO) supporta solo una seriale.

Per testare il collegamento e rilevarne la velocità ho costruito un piccolo circuito.

Materiali

(tutti questi componenti possono essere reperiti in KIT Workshop – Base level)

  • 1 x Breadboard
  • 2 x Arduino UNO (rev 3)
  • 3 x resistenze da 220 ohm
  • 1 x Piezo buzzer
  • 1 x LED rosso
  • 1 x LED giallo (nb: I led possono essere di qualsiasi colore)
  • 1 x cavolo USB o un alimentazione di 5V

Schema teorico

Come possiamo vedere dallo schema, notiamo che i pin analogici 4 e 5 tra due Arduino sono collegati tra di loro, quello è il collegamento I²C!

Gli altri collegamenti dell’Arduino “Aurora” sono:

  • pin digitale 9 verso Power Led, non che un led che si accende appena Arduino viene collegato alla corrente
  • pin digitale 10 verso il Buzzer, non che un piccolo speaker che ci notificherà ogni volta che un dato viene ricevuto (questa notifica è stata attivata solo in debug)
  • pin digitale 11 verso il Data led, il led che ci notificherà visivamente ogni volta che un dato viene ricevuto

Schema su breadboard

Questo schema è soltanto la trasposizione dello schema teorico sulla breadboard. (clikka sopra l’immagine per vederla in definizione migliore)

Firmware

.. Arduino OBDII

Per poter testare il funzionamento di I2c ho preso il file di esempio che si trova in Arduino IDE (lo strumento ufficiale) visionabile in:  File -> Esempi -> Wire -> master_writer 
Per chi non disponesse del file, vi posto il codice qua sotto:

// Wire Master Writer
// by Nicholas Zambetti <http://www.zambetti.com>

// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this
// Created 29 March 2006

// This example code is in the public domain.

#include <Wire.h>

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}

byte x = 0;

void loop()
{
  Wire.beginTransmission(4); // transmit to device #4
  Wire.write("x is ");        // sends five bytes
  Wire.write(x);              // sends one byte  
  Wire.endTransmission();    // stop transmitting

  x++;
  delay(500);
}

In breve il programma ogni mezzo secondo (  delay(500);  ) spedisce all’ascoltatore n. 4 ( Wire.beginTransmission(4); ) il testo valore della variabile x 

.. Arduino Aurora

Il nostro firmware per Arduino aurora è reperibile (come spiegato nello scorso post ) sulla piattaforma github a questo indirizzo:

https://github.com/tgiachi/aurorafirmware

Scaricatelo, compilatelo collegate tutto come  spiegato sopra ed ogni mezzo secondo il LED emetterà un blink!

Questo test ci serve per verificare/testare il collegamento tra due Arduino per poter scambiare informazioni senza stare ad utilizzare la porta seriale (purtroppo bisogna essere attenti a non sprecare risorse).

Sono in attesa degli ultimi componenti (OBD-II cable, Bluetooth shield) . Appena arriveranno passeremo all’azione! Nel prossimo post vi spiegherò il funzionamento del protocollo OBD-II e del suo funzionamento!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *