Arduino > DFRobot Arduino I/O Expansion Shield

Contents (hide)

  1. 1. Version 5
    1. 1.1 Rs-485
  2. 2. Version 4
    1. 2.1 Alimentation
    2. 2.2 RS485

Le DFRobot Arduino I/O Expansion Shield permet de brancher des capteurs? numériques et analogiques rapidement à l'Arduino. Il permet aussi d'alimenter et de contrôler des servomoteurs.

1.  Version 5

Arduino_IO_Expansion_V5_SCH.pdf

1.1  Rs-485

It uses an SP485CN chip to handle comms. The screw terminals (assuming that the three jumpers are set to '485') marked 'A' and 'B' go directly to the IC 'A' and 'B' pins (6 & 7 respectively). The screw terminal marked VCC goes to the IC VCC pin (8), and also to the board's +5V line (i.e. the Arduino's +5V rail). The screw terminal marked GND goes to the IC GND pin (5), and also to the board's GND line (i.e. the Arduino's 0V rail). The chip's DI (Data Input?) pin (4) is connected to the Arduino's Digital Pin 1 (TX). The chip's RO (Data Output?) pin (1) is connected to the Arduino's Digital Pin 0 (RX), with a resistor pull-up to the +5V rail. The chip's DE (output enable) pin (3) is connected (via a resistor) to the Arduino's Digital Pin 2 - this is active high. This DE pin is also connected to the chip's RE bar (receiver enable) pin (2) and therefore controlled by the Arduino's Digital pin 2 too - this is active low. Arduino Digital Pin 2 = Rx/Tx 'Enable'; High to Transmit, Low to Receive. So, to transmit data from Arduino Digital Pin 1 you need to take Digital pin 2 high, and to receive data to Arduino Digital Pin 0 you need to take Arduino Digital pin 2 low.

2.  Version 4

2.1  Alimentation

Les broches Digital IO Port D0-D13 peuvent être alimentées par le 5V de la carte Arduino ou par une alimentation externe:

2.2  RS485

Transmit code:

int EN = 2; //RS485 has a enable/disable pin to transmit or receive data.
// Arduino Digital Pin 2 = Rx/Tx 'Enable'; High to Transmit, Low to Receive

void setup()
{
        pinMode(EN, OUTPUT);
        Serial.begin(19200);
}

void loop()
{
        // send data
        digitalWrite(EN, HIGH);//Enable data transmit
        Serial.print('A');
        delay(1000);
}

Receive code:

int ledPin = 13;
int EN = 2;
int val;

void setup()
{
        pinMode(ledPin, OUTPUT);
        pinMode(EN, OUTPUT);
        Serial.begin(19200);
}

void loop()
{
        // receive data
        digitalWrite(EN, LOW);//Enable Receiving Data
        val = Serial.read();
        if (-1 != val) {
                if ('A' == val) {
                        digitalWrite(ledPin, HIGH);
                        delay(500);
                        digitalWrite(ledPin, LOW);
                        delay(500);
                }
        }
}