1°) SPI : Serial Peripheral Interface :
http://arduino.cc/en/Reference/SPI
http://www.circuitsathome.com/mcu/running-multiple-slave-devices-on-arduino-spi-bus
L’interface Série pour périphériques (SPI) est un protocole de communication série synchrone simple utilisé par les microcontrôleurs (tels que la carte Arduino) pour communiquer avec un ou plusieurs composants périphériques rapidement sur de courtes distances. Ce protocole peut aussi être utilisé pour des communications entre deux microcontrôleurs.

Communication SPI avec le composant « maître » et un composant « esclave ».
Avec une connexion SPI, il y a toujours un composant maître (habituellement un microcontrôleur) lequel commande le ou les composants périphériques. Typiquement, il y a 3 lignes communes à tous les composants et qui les relient entre eux :
- la ligne Maître entrant – Esclave sortant (ou MISO pour « Master In Slave Out » en anglais ) : c’est la ligne utilisée pour envoyer des données depuis le(s) périphérique(s) vers le maître,
- la ligne Maître sortant – Esclave entrant ( ou MOSI pour « Master Out Slave In » en anglais) : c’est la ligne utilisée pour envoyer des données du maître vers le(s) périphérique(s).
- la ligne du signal d’horloge ( ou SCLK pour Serial Clock en anglais) : cette ligne transmet les impulsions de signal d’horloge générées par le composant maître et qui synchronisent la transmission des données.
A ces 3 lignes communes, s’ajoutent une ligne de sélection par périphérique :
- la ligne de sélection de l’esclave (ou /SS pour « Slave Select » en anglais) : chaque composant périphérique dispose d’une broche de sélection (active sur le niveau BAS) que le composant maître peut utiliser pour activer ou désactiver le(s) composant(s) périphérique(s) voulu(s). Quand cette broche est mise au niveau HAUT, le composant ignore ce qui se passe sur le bus SPI. Ceci permet d’avoir plusieurs composants périphériques qui se partagent les 3 lignes de communications MISO, MOSI et SCLK

Sur la carte Arduino UNO, le bus SPI utilise les broches :
- 10 : /SS
- 11 : MOSI
- 12 : MISO
- et 13 : SCLK.
Sur l’Arduino Mega, ce sont les broches :
- 50 : MISO
- 51 : MOSI
- 52 : SCLK
- et 53 : /SS
Noter que même si vous n’utilisez pas la broche /SS, elle doit quand même être configurée en sortie; sinon, l’interface SPI sera mise en mode « esclave » et rendra la librairie inopérante.
Il est possible d’utiliser une autre broche que la broche 10 en tant que broche de sélection de périphérique ( /SS pour Slave Select – active sur niveau BAS). Par exemple, le module Arduino Ethernet utilise la broche 4 pour activer la connexion SPI avec la carte mémoire SD et la broche 10 pour activer la connexion SPI avec l’interface Ethernet.
Pour inclure la librairie SPI dans un programme, on ajoutera au début du programme la ligne suivante :
2°) SERIE (RX/TX) :

Sur la première carte : Tx en vert ; Rx en orange Sur la deuxième, c’est inversé !
Entre une carte Arduino et un autre micro contrôleur
Là, c’est la même chose que pour connecter deux Arduino ensemble. Il faut relier le Tx et le Rx de la carte Arduino au Rx et au Tx du micro-contrôleur.
La carte UNO possède 1 port Série/USB, la LEONARDO 1 distinct de l’USB (Serial1), la MEGA, 3 ports en plus del’USB.
4°) Un fil :
C’est, par exemple, l’interface du capteur de température DHT11
5°) I2C :
Pour trouver l’adresse unique du périphérique, utilisez le sketch suivant :
// i2c_scanner
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//------------------------------------------------------------
// You can plug and unplug device during the test
// Line SDA plug in UNO pin Analog 4 / Mega 44
// line SCL plug in UNO pin Analog 5 / Mega 43
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
Votre commentaire