Modifications

Sauter à la navigation Sauter à la recherche
1 598 octets ajoutés ,  25 janvier 2014 à 16:29
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{RPI-ShieldBridge-NAV}}
 
{{RPI-ShieldBridge-NAV}}
{{traduction}}
      
== Introduction ==
 
== Introduction ==
A small guide to show the communication via I2C between the Arduino (RPi-ShieldBridge) and Raspberry Pi.
+
Voici un petit guide montrant comment établir une communication I2C entre RPi-ShieldBridge (Arduino compatible) et Raspberry Pi.
   −
The I2C pins of the Raspberry Pi are connected to the AVR and the Arduino Shield connectors (SDA+SCL) on the RPi-ShieldBridge.
+
Les broches I2C du Raspberry Pi sont connectés sur l'AVR (le microcontroleur) mais aussi sur les broches SDA & SCL des connecteurs Shield Arduino présents sur le RPi-ShieldBridge.
    
== En savoir plus sur I2C ==
 
== En savoir plus sur I2C ==
I2C est un bus de communication à la fois simple, puissant (par ses applications) et très répandu.
+
I2C est un bus de communication à la fois simple, puissant (par ses applications) et très répandu. La sphère Arduino dispose d'ailleurs de nombreux périphériques I2C qui peuvent même être directement utilisé avec un Pi.
   −
Nous avons produit [[Arduino I2C Intro|un tutoriel assez complet pour Arduino]], c'est là qu'I2C est le plus facile à apprendre. Notre tutoriel couvre aussi bien le Maître et l'Esclave.
+
Nous avons produit [[Arduino I2C Intro|un tutoriel I2C assez complet pour Arduino]], c'est là qu'I2C est le plus facile à apprendre. Notre tutoriel couvre aussi bien le Maître et l'Esclave.
    
[[Fichier:tlogo-I2C.jpg]]
 
[[Fichier:tlogo-I2C.jpg]]
   −
 
+
Concernant la communication avancée en I2C entre Raspberry Pi et Arduino, vous pouvez consulter [[ArduPi-I2C|notre autre tutoriel ArduPi-I2C]].
Concernant la communication avancée en I2C entre Raspberry Pi et Arduino, vous pouvez consulter [[ArduPi-I2C|notre tutoriel ArduPi-I2C]].
      
[[Fichier:tlogo-ArduPi-I2C.jpg]]
 
[[Fichier:tlogo-ArduPi-I2C.jpg]]
Ligne 31 : Ligne 29 :  
void setup()  
 
void setup()  
 
{
 
{
   pinMode(13, OUTPUT);    // set pin 13 as output (LED connected)
+
   pinMode(13, OUTPUT);    // Définir la broche 13 comme sortie (il y a une LED connectée)
   digitalWrite(13, LOW);  // set pin 13 to low (0V)
+
   digitalWrite(13, LOW);  // Eteindre la LED sur la broche 13
   −
   Wire.begin(ADDRESS);    // join I2C bus with respective address
+
   Wire.begin(ADDRESS);    // joindre le bus I2C avec l'adresse 0x30
   Wire.onReceive(receive); // receive data function
+
   Wire.onReceive(receive); // Fonction de réception de donnée (envoyé par le maitre)
   Wire.onRequest(request); // send data function
+
   Wire.onRequest(request); // Fonction traitant une demande de donnée (demandé par le maitre)
 
}  
 
}  
    
void loop()  
 
void loop()  
 
{
 
{
   // do nothing
+
   // Rien à exécuter...
 
}  
 
}  
   −
void receive(int numBytes) // function that runs when data is received
+
// Fonction qui est appelée lorsque des données sont
 +
// recues sur le bus I2C (donnée envoyée par le maître)
 +
void receive(int numBytes)  
 
{
 
{
 
   unsigned char c;
 
   unsigned char c;
Ligne 51 : Ligne 51 :  
   {  
 
   {  
 
     c = Wire.read();
 
     c = Wire.read();
     if(c == 0x00)      // LED off, if byte equals 0
+
     if(c == 0x00)      // Si l'octet/byte recu est 0 -> éteindre la LED
 
     {
 
     {
 
       digitalWrite(13, LOW);
 
       digitalWrite(13, LOW);
 
     }
 
     }
     else if(c == 0x01) // LED on, if byte equals 1
+
     else if(c == 0x01) // Si l'octet/byte recu est 1 -> Allumer la LED
 
     {
 
     {
 
       digitalWrite(13, HIGH);
 
       digitalWrite(13, HIGH);
Ligne 62 : Ligne 62 :  
}
 
}
   −
void request() // function that runs when data is requested
+
// Fonction qui est exécutée lorsque le maître du bus I2C
 +
// réclame des données à l'esclave (donc votre RPi-ShieldBridge
 +
void request()  
 
{
 
{
   Wire.write(0xAA); // send 0xAA
+
   Wire.write(0xAA); // renvoyer 0xAA
 
}</nowiki>
 
}</nowiki>
    
== Préparé votre Pi ==
 
== Préparé votre Pi ==
   −
Activate I2C:
+
Il faut bien entendu activer le bus I2C sur votre Raspberry-Pi.
 +
 
 +
Si vous ne l'avez pas encore fait, chargez le module I2C et installez les logiciels nécessaires:
    
  <nowiki>$ sudo modprobe i2c_bcm2708 baudrate=100000
 
  <nowiki>$ sudo modprobe i2c_bcm2708 baudrate=100000
 
$ sudo modprobe i2c-dev</nowiki>
 
$ sudo modprobe i2c-dev</nowiki>
   −
Install i2c-tools and python-smbus:
+
Il faut également installer les outils I2C et la gestion smbus pour Python:
    
  <nowiki>$ sudo apt-get update
 
  <nowiki>$ sudo apt-get update
Ligne 80 : Ligne 84 :  
$ sudo apt-get install python-smbus</nowiki>
 
$ sudo apt-get install python-smbus</nowiki>
   −
Test I2C bus:
+
Vous pouvez tester le bus I2C avec la commande suivante sur vos Raspberry Pi (rev 2):
    
  $ sudo i2cdetect -y 1
 
  $ sudo i2cdetect -y 1
   −
The Raspberry Pi hardware revision 1 boards connect I2C bus 0 (GPIO 0 + 1) and revision 2 boards connect I2C bus 1 (GPIO 2 + 3) to the GPIO connector.
+
Le "1" est important et dépend de la révision du votre Pi. Les cartes Raspberry Pi révision 1 utilisent I2C bus 0 (GPIO 0 + 1) tandis que la révision 2 des cartes utilisent I2C bus 1 (GPIO 2 + 3) sur le connecteur GPIO.
 +
 
 +
 
 +
=== La Broche Reset Arduino ===
 +
Par défaut, la broche Reset de l'Arduino compatible (sur le RPi-ShieldBridge) est connecté sur le GPIO18 (broche #12) du Raspberry Pi.
   −
Note: As default the reset pin of the Arduino is connected to GPIO18 (Pin 12) of the Raspberry Pi (GPIO18 high = reset on, GPIO18 low = reset off).  
+
* GPIO18 = Etat Haut (high) = Reset Arduino '''activé'''.
 +
* GPIO18 = Etat bas (low) = Reset Arduino '''désactivé'''.  
   −
To disable the reset:
+
Il faut donc initialiser correctement le GPIO18 pour désactiver le Reset Arduino:
    
  <nowiki>$ sudo -i
 
  <nowiki>$ sudo -i
Ligne 96 : Ligne 105 :  
$ exit</nowiki>
 
$ exit</nowiki>
   −
Or if you have installed WiringPi (voir [[Pi-WiringPi|notre tutoriel WiringPi]]):
+
Ou vous pouvez utiliser l'utilitaire '''gpio''' si vous avez installé WiringPi (voir [[Pi-WiringPi|notre tutoriel WiringPi]]):
    
  <nowiki>gpio -g mode 18 out
 
  <nowiki>gpio -g mode 18 out
Ligne 105 : Ligne 114 :  
=== Commande Shell ===
 
=== Commande Shell ===
    +
Commençons par utiliser une commande Shell
 
Switch on LED:
 
Switch on LED:
   Ligne 114 : Ligne 124 :     
=== Python ===
 
=== Python ===
Create a test script named i2ctest.py:
+
Créons un script de test nommé i2ctest.py:
    
  $ nano i2ctest.py
 
  $ nano i2ctest.py
Ligne 126 : Ligne 136 :  
import smbus
 
import smbus
 
bus = smbus.SMBus(1)
 
bus = smbus.SMBus(1)
addr = 0x30
+
addr = 0x30 # Adresse de périphérique I2C
    
while True:
 
while True:
 +
    # Ecrire le byte/octet 0x01 sur le périphérique I2C 0x30
 +
    # (donc le RPi-ShieldBrigde)
 
     bus.write_byte(addr, 0x01)
 
     bus.write_byte(addr, 0x01)
 +
    # Message pour indiquer que la Led est allumée sur le Rpi-ShieldBridge
 
     print "on"
 
     print "on"
 +
   
 +
    # Attendre une seconde
 
     time.sleep(1)
 
     time.sleep(1)
 +
   
 +
    # Ecrire le byte/octet 0x00 sur le périphérique I2C 0x30
 +
    # (donc le TRi-ShieldBrigde)
 
     bus.write_byte(addr, 0x00)
 
     bus.write_byte(addr, 0x00)
 +
 +
    # Message pour indiquer que la Led est éteinte sur le Rpi-ShieldBridge
 
     print "off"
 
     print "off"
 +
 
     time.sleep(1)</nowiki>
 
     time.sleep(1)</nowiki>
      −
Run the script:
+
Exécuter le script Python:
    
   $ sudo python i2ctest.py
 
   $ sudo python i2ctest.py
    
{{RPI-ShieldBridge-TRAILER}}
 
{{RPI-ShieldBridge-TRAILER}}
29 918

modifications

Menu de navigation