RPI-ShieldBridge-I2C

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.


Introduction

A small guide to show the communication via I2C between the Arduino (RPi-ShieldBridge) and 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.

En savoir plus sur I2C

I2C est un bus de communication à la fois simple, puissant (par ses applications) et très répandu.

Nous avons produit 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.

Tlogo-I2C.jpg


Concernant la communication avancée en I2C entre Raspberry Pi et Arduino, vous pouvez consulter notre tutoriel ArduPi-I2C.

Tlogo-ArduPi-I2C.jpg

Préparer votre Arduino / RPi-ShieldBridge

Téléversez le sketch/croquis suivant sur votre RPi-ShieldBridge.

Vous pouvez vous référer au point relatif à firmata si vous ne savez pas comment programmer et téléverser le programme suivant sur votre RPi-ShieldBridge.

#include <Wire.h> 

#define ADDRESS 0x30

void setup() 
{
  pinMode(13, OUTPUT);     // set pin 13 as output (LED connected)
  digitalWrite(13, LOW);   // set pin 13 to low (0V)

  Wire.begin(ADDRESS);     // join I2C bus with respective address
  Wire.onReceive(receive); // receive data function
  Wire.onRequest(request); // send data function
} 

void loop() 
{
  // do nothing
} 

void receive(int numBytes) // function that runs when data is received
{
  unsigned char c;

  while(Wire.available())
  { 
    c = Wire.read();
    if(c == 0x00)      // LED off, if byte equals 0
    {
      digitalWrite(13, LOW);
    }
    else if(c == 0x01) // LED on, if byte equals 1
    {
      digitalWrite(13, HIGH);
    }
  }
}

void request() // function that runs when data is requested
{
  Wire.write(0xAA); // send 0xAA
}

Préparé votre Pi

Activate I2C:

$ sudo modprobe i2c_bcm2708 baudrate=100000
$ sudo modprobe i2c-dev

Install i2c-tools and python-smbus:

$ sudo apt-get update
$ sudo apt-get install i2c-tools
$ sudo apt-get install python-smbus

Test I2C bus:

$ 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.

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).

To disable the reset:

$ sudo -i
$ echo 18 > /sys/class/gpio/export
$ echo out > /sys/class/gpio/gpio18/direction
$ echo 0 > /sys/class/gpio/gpio18/value
$ exit

Or if you have installed WiringPi (voir notre tutoriel WiringPi):

gpio -g mode 18 out
gpio -g write 18 1

Tester

Commande Shell

Switch on LED:

$ sudo i2cset -y 1 0x30 0x01

Switch off LED:

$ sudo i2cset -y 1 0x30 0x00

Python

Create a test script named i2ctest.py:

$ nano i2ctest.py

Et copiez y le code suivant:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import time
import smbus
bus = smbus.SMBus(1)
addr = 0x30

while True:
    bus.write_byte(addr, 0x01)
    print "on"
    time.sleep(1)
    bus.write_byte(addr, 0x00)
    print "off"
    time.sleep(1)


Run the script:

 $ sudo python i2ctest.py

Source: RPi-ShieldBridge
Créé par Stephan Watterott pour Watterott.

Traduction réalisée et augmenté par Meurisse D pour MCHobby.be.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduction et documentation réalisées avec l'autorisation expresse de Stephan Watterott - Documentation and translation built with authorization of Stephan Watterott.