communicatie tussen 2 arduino's

Arduino specifieke Software
Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

communicatie tussen 2 arduino's

Berichtdoor corolla_g6 » 23 Sep 2015, 14:34

hallo,

ik ben bezig om 2 arduino's te koppelen, de afstand tussen de 2 is ongeveer 15 meter (master/slave)

hier loopt al een meeraderige kabel (7x1mm²) tussen en graag wil ik deze gebruiken
eventueel kan ik op beide locaties utp naartoe brengen maar het liefst via de bestaande kabel.

ik had gelezen dat het via i2c kan maar daar lees ik verschillende verhalen over..

de bedoeling is om de slave aan te sturen vanuit de master en dan eerst de 8ch relaiskaart en later mischien nog wat data terug te ontvangen

Advertisement

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: communicatie tussen 2 arduino's

Berichtdoor KrisG » 24 Sep 2015, 07:42

Ik deed het met I2C en dat werkt behoorlijk simpel. Ik weet alleen niet wat het op die afstand doet.
Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: communicatie tussen 2 arduino's

Berichtdoor nicoverduin » 24 Sep 2015, 08:03

Ik zou het gewoon proberen. bij 1mm^2 heb je ongeveer 0,01 ohm weerstand per meter. Dus daar zal het niet aan liggen. Wel krijg je wat capacitieve demping. Kan zijn dat je dan de I2C snelheid wat naar beneden moet brengen om dat te compenseren
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

Re: communicatie tussen 2 arduino's

Berichtdoor corolla_g6 » 18 Okt 2015, 17:31

oke bedankt nico,

ik heb het geprobeert met een voorbeeld van internet maar daar werdt gebruik gemaakt van 2x een uno en ik heb 2x een mega.. maakt dit uit? want het werkt niet

ik heb natuurlijk wel 20 en 21 gebruikt ipv a4 en a5

cpp code
//master
#include <Wire.h>
int switchPin = 2;
void setup()
{
Wire.begin();
pinMode(switchPin,INPUT);
}
void loop()
{
Wire.beginTransmission(4); // the adress of the other board(slave)
Wire.write("switchMode is ");
Wire.write(digitalRead(switchPin)); // sends data
Wire.endTransmission(); // stop transmitting
delay(500);
}


cpp code
//slave
#include <Wire.h>

int ledPin = 2;
int switchMode =0; //contains the recieved status of the switch
void setup()
{
Wire.begin(4); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output

pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
}

void loop()
{
if(switchMode == 1) digitalWrite(2, LOW);
else if(switchMode == 0) digitalWrite(2, HIGH);

}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
switchMode = Wire.read(); // receive byte as an integer
Serial.println(switchMode); // print the integer
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: communicatie tussen 2 arduino's

Berichtdoor nicoverduin » 19 Okt 2015, 07:41

Heb je het eerst getest met korte draadjes? Want als dat ook niet werkt, dan kun je zoeken tot je een ons weegt, maar gaat het niet werken.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 47
Geregistreerd: 24 Nov 2014, 19:47

Re: communicatie tussen 2 arduino's

Berichtdoor corolla_g6 » 21 Okt 2015, 17:34

uiteraard eerst getest met korte draadjes.

ik heb nu 2 sketchen geschreven en het werkt, maar niet op de lange kabel....

hoe kan ik de i2c snelheid naar beneden brengen?

iets in de Wire.begin()?

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: communicatie tussen 2 arduino's

Berichtdoor FPCUser » 21 Okt 2015, 19:30

The twi.init() call is internal to the Wire library. It performs the following tasks:

enables the TWI hardware to access the appropriate pins on the ATmega processor. In the case of the ATmega 328, these are analog pins 4 for SDA and 5 for the SCL line of the I2C bus.

sets the clock frequency that the TWI hardware will use if/when it is the master on the I2C bus. It is set in the source code to 100kHz, but theoretically at least you can reset this frequency by calling Wire.setclock(). The value passed is the bitrate from 400000L to 31000L. Wire.setclock(400000L); should set it to 400kHz. Wire.setClock() must be called after Wire.begin(). Wire.begin() initializes the bitrate to 100kHz.

zie http://playground.arduino.cc/Main/WireLibraryDetailedReference

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 66 gasten