este es mi primer post en el foro.
Estoy empezando con arduino y quisiera implementar un sistema basado en 2 arduinos el primero le llamaremos trasmisor y el segundo receptor. Lo que quiero hacer es usar varios pines del trasmisor como input para sensores digitales (en total 9 sensores) luego establecer un tipo de comunicación serie (entendiendo por serie una comunicación robusta sin errores con 1 ó dos hilos max) hasta el otro arduino que estará distanciado unos 50mts. El arduino receptor se encargará de recibir los datos y habilitar los pìnes correspondientes de salida para reflejarexactamente en los mismos pines, los valores de los sensores digitales (0 ó 5V).
He estado mirando bastante en el foro pero no termino de ver como implementarlo. Mi preocupación es:
Que comunicación serie es la mas robusta para ser usada entre los dos arduinos ?
Puedo hacer uso de los pines 0 y 1 TX y RX a pelo y entrecruzarlos en las placas TX a RX y RX a TX? O es mejor usar un par de pines digitales para crear una secuencia de las lecturas de los valores de los sensores?
Ando un poco dspistado y seguro que los que teneis mas experiencia podéis darme un poco de luz en este proyecto.
cuando tenag un rato le echo un look.
Una pregunta mas.... como los arduinos van a estar separados unos 50 metros, crees que habrá algun problema con tanta tirada de cable ?, serña lo suficiente robusto ante errores de comunicacion?
Por otra parte el arduino remoto estará en un entorno de Radiofrecuencia... ves alguna limitación?
Es un bus diferencial, no deberia haber problema.... Es un bus muy utilizado en la industria.
El bus RS485 solo define la capa fisica, tendras que hacerte tu propio protocolo. En el link puedes ver un ejemplo basado en uno profesional (un variador de frecuencia). En la practica es como manejar un puerto serie.....
Infelizmente no logro conseguir enviar nada que el slave entienda, o sea, el slave no "enciende" el led.
Hay alguna forma de enviar essos comados (0x00 0x30 0x31 0x05 0x44 0x30 0x30 0x20 0x30 0x30 0x30 0x31 0x03 0x01 0xEE) de modo que my slave entienda? Como seria?
Quiero poder probar todo (diversas subrotinas) en la parte del slave antes de ponerlo sobre una tarjeta autonoma.
Quieor hacerlo por RS485, pero quiero verificar que todo me funciona dentro del Slave utilizando el terminal del Arduino (enviando la string de controle), caso contrario, tengo que sacar el Atmega a todo momento de su circuito para hacel las modificaciones necesarias.
Fue la primera cosa que hice, pero no me funciono...selecionado el puerto com3, 9600, y en send number, envie algo tipo 00 48 49 68 48 48 32 ... y tambien probe 00484968484832...petambien no me funciona.
Qual seria la forma adecuada?
No se lo que me ocurre, he porbado con el realterm y me funciona cuando estoy con el ATmega en el Arduino, cuando lo pongo en my circuito, no funciona.
He provado con un sketch muy simples, solamente para verificar la comunicacion y aun no me funciona.
Transmissor:
//transmissor
const int ledPin = 13; // the pin that the LED is attached to
#define pinCONTROL 02
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(pinCONTROL,OUTPUT);
digitalWrite(pinCONTROL,HIGH);
}
void loop() {
byte b = 0;
Serial.write(b);
analogWrite(ledPin, b);
delay(1000);
b=255;
Serial.write(b);
analogWrite(ledPin, b);
delay(1000);
}
Receptor :
//receptor
const int ledPin = 13; // the pin that the LED is attached to
#define pinCONTROL 02
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(pinCONTROL,OUTPUT);
digitalWrite(pinCONTROL,LOW);
}
void loop() {
byte brightness;
if (Serial.available()) {// check if data has been sent from the computer:
brightness = Serial.read(); // read the most recent byte (which will be from 0 to 255):
analogWrite(ledPin, brightness); // set the brightness of the LED:
}
}
Y que haces con el pin de control(/RE-DE)??? Dicho pin sirve para poner el transceiver en modo Tx (transmisión,HIGH) ó Rx (recepcion).
En tu programa lo tienes que poner alto y bajo, según lo que te interese hacer.
Conecta ambos Arduinos directamente, a ver si el software esta bien. Es decir, el TX de tu Arduino transmisor, al RX del receptor. (con 232, sin usar rs485). Asi aseguras que es algo con el bus y no nada del software.
Comparten masas ambos Arduinos???? Como estas alimentando ambas placas ??
No tengo dos arduinos, lo que hecho a sido probar e lmaster sobre arduino, y me funciona pues el led parpadea.
Despues e sacado el master y he puesto el slave, y con el realterm envio 255 y el led se enciende, despues envio un zero y el led se apaga.
He notado una cosa un poco estraña con mis 75176,
cuando mido la tension sobre la resistencia de 120 ohms sin los Atmegas conectados, apenas los 75176 alimentados estoy midiendo 2.9V (con osciloscopio).
Esso es normal? no deberia ser algo como 200mV?
Cundo introduzco los Atmegas en el circuito, sigue lo mismo 2.9V de base y me aparecen pulsos a cada 500ms con amplitudaproximada de 5Vpp.
Cual seria la aplitud normal? los pulsos deberian ser constantes, tren de pulsos no?