X10 / Can Bus en españa

Alguien ha realizado algún proyecto Arduino/ X10 en España?

Según tengo entendido el X10 es mucho más caro en Europa que en USA.
Me he leído los posts de “BroHogan” en el foro de ingles donde explica cómo realizarlo, pero parece ser que en Europa no tenemos los mismos nombres de los dispositivos y me preguntaba si los que venden en USA son compatibles con Europa.(cm17a, psc05,tm751, etc)

Agradecería si compartierais vuestras experiencias de Arduino-X10.

Un saludo,

yOPERO

Nunca he probado el X10 bajo arduino pero hay multitud de enlaces de proyectos usando este protocolo. A mi particularmente no me gusta porque se averían los esclavos con mucha facilidad. Prefiero hacer una red con can bus o rs485 antes que con X10.

Salu2

@flico

Gracias por tu respuesta, mi intención es usar el X10 para control de la iluminación, está claro que la tecnología X10 presenta algunos fallos pero en el caso de una vivienda ya construida es un poco difícil romper tabiques y cablear nuevamente, como es para iluminación no importa que exista un poco de lag.

yOPERO.

Estoy con flico, yo hize algo con x10 hace tiempo en mi antigua casa, y salí muy escaldado, si la sinusoide de la red no es pura o viene con picos, se fastidian los módulos que da gusto, por no decir el ruido que mete ya el protocolo de x10 en la red.

Es mas, puedes preguntar a cualquier técnico de domótica de verdad a ver que opina sobre x10.

Al final me decanté por rs485, bus que interconecta todos los módulos para que 'hablen entre ellos' y la instalación en los mismos tubos de la casa, ahora eso si, si no tienes motores de persiana y los pones pues hay que rozar como es lógico.

De todas maneras, en el foro de solo lectura he visto bastante info sobre x10 por si quieres buscar.

DRicote cuantas verdades hay en tus palabras, jejej X10 es la versión barata al mas estilo americano para hacer de tu casa un hogar inteligente. Si realmente quieres comunicar dispositivos puedes optar por varias soluciones, desde 1-wire a modbus RTU (RS485), este ultimo tiene un byte de checksum para saber que los telegramas que llegan o envías están correctos. Igor R. tiene un código muy bueno.

Pues nada, buscare en el foro antigua los post de IgorR

Me respondo ya que he encontrado el link al blog de Igor R.

En breve CAN Bus!!! Estoy haciendo pequenyos retoques a la libreria....
Estara "chupao" !!

:wink:

Esperare la info!!! Siempre he querido ver si puedo comunicarme con mi estufa de pellets.

Espero que la nueva versión venga con el CAN display :grin:

En breve CAN Bus!!! Estoy haciendo pequenyos retoques a la libreria....
Estara "chupao" !!

Igor.R eres un crack.

Mirar si es facil... ni declarar variables es necesario para empezar!!!

#include <CAN.h>


void setup()
{
  Serial.begin(115200);
  Serial.println("Empezamos...");
  CAN.begin(1);  // 1 Mbps
}

void loop()
{
  //Preparo el mensaje a enviar
  CAN_TxMsg.id=0x100;
  CAN_TxMsg.header.rtr=0;
  CAN_TxMsg.header.length=8;
  CAN_TxMsg.data[0]=0x01;
  CAN_TxMsg.data[1]=0x02;
  CAN_TxMsg.data[2]=0x03;
  CAN_TxMsg.data[3]=0x04;
  CAN_TxMsg.data[4]=0x05;
  CAN_TxMsg.data[5]=0x06;
  CAN_TxMsg.data[6]=0x07;
  CAN_TxMsg.data[7]=0x08;
  
  //Envio mensaje
  if( CAN.send(&CAN_TxMsg) )
  {
  }
  
  // Hay mensaje nuevo?
  if ( CAN.CheckNew() )
  {
    
    // Leo el mensaje almacenado en el buffer del controlador CAN externo
    if ( CAN.ReadFromDevice(&CAN_RxMsg) )
    {
      //Saco por puerto serie la trama leida
      Serial.print("ID: ");
      Serial.println(CAN_RxMsg.id,HEX);
      Serial.print("RTR: ");
      Serial.println(CAN_RxMsg.header.rtr,DEC);
      Serial.print("Length: ");
      Serial.println(CAN_RxMsg.header.length,DEC);
      Serial.print("DATA: ");
      Serial.print(CAN_RxMsg.data[0],HEX);
      Serial.print(",");
      Serial.print(CAN_RxMsg.data[1],HEX);
      Serial.print(",");
      Serial.print(CAN_RxMsg.data[2],HEX);
      Serial.print(",");
      Serial.print(CAN_RxMsg.data[3],HEX);
      Serial.print(",");
      Serial.print(CAN_RxMsg.data[4],HEX);
      Serial.print(",");
      Serial.print(CAN_RxMsg.data[5],HEX);
      Serial.print(",");
      Serial.print(CAN_RxMsg.data[6],HEX);
      Serial.print(",");
      Serial.println(CAN_RxMsg.data[7],HEX);
      Serial.println("-------------------");
    }
    
  }
  
}

Acabo de probarlo despues los ultimos retoques, y funciona a las mil maravillas!!!
Cuanto aguantare sin desarmar mi coche en busca del bus de traccion?? ]:slight_smile: ]:slight_smile:

:wink:

X10 es un protocolo anticuadillo.

Creo que por donde van los tiros de PLC (Power Line Communication) es por protocolos sobre OFDM que llevan una tecnología parecida a los routers de ADSL. Según me comentaba una persona de Maxim, las espadas entaban en alto porque había varios fabricantes y tal que ofrecían diferentes tecnologías, y España había optado por una, los frances por la solución de maxim,.... Estos protocolos tienen la ventaja que son capaces de saltar subestaciones electricas y demás.

En fin, creo que si te apetece conocer algo más de asunto, mirate estos dos chips:

Uno es el modem y el otro el Analog Front End, pero para ser sinceros está chungo ni siquiera conseguir muestras, porque son proyectos que aún no se han puesto a disposición del gran público, porque andan copn licitaciones y con historias para llevarse proyectos internacionales, y no les interesa nada más que ofrecerlo a grandes empresas.

Este otro, es la evolución de los dos anteriores

Un saludo!

P.D. hay más soluciones tipo la de MAX, pero no las conozco.....pero andan por ahi

Aun en construccion, pero esto es lo que se esta "cocinando" => http://secuduino.blogspot.com/

]:smiley:

Ostrasss!!! el Standard ECU no es el del los F-1??? :astonished:

Land Rover igual lo lleva!!!!

Ey!! veo algun "quemao" de F1 por el foro.....ja,ja,ja
Si, SECU viene de Standard ECU que es como se llama a la centralita unica en F1.... (algo mas potente que un atmega168 de 8 bits... :D)

No me esperaba que la gente lo supiera lo de SECU.... XD Eso esta muy bien!!!

Habia que ponerle un nombre!!!

:wink:

Igor R. , eres mi idolo, jejejej. Tengo una placa para bus CAN llamada arcan que funciona bien pero tengo que decir que la libreria es un poco mas dificil de digerir que la tuya.
Me puedes pasar eza pedazo de libreria?

Salu2

Hola flico,

Arcan usa un clock de 8Mhz, por lo que los bit timing son diferentes para el controlador CAN (MCP2515). Hay que hacer modificaciones en el codigo porque la libreria esta preparada para el MCP2515 a 16 MHz.... =(
Por otro lado, de momento va hard+libreria todo en un paquete.... :fearful:
La libreria usa C/C++ en vez de comandos Arduino, para ser compatible con cualquier micro Atmel (y mas rapido que digitalWrite).
Esta basada en el trabajo de kreatives-chaos.com » Ansteuerung des MCP2515 (Tutorial), pero encapsulado en una clase; anyadido buffer en Arduino (como el de Serial), autodeclaracion de 2 mensajes de tipo CAN (Tx y Rx) y la propia variable de la clase para que sea mas facil para el usuario; modificado el tema de leer cada vez un buffer del dispostivo (MCP2515 dispone de 2 buffer de recepcion) y en ese codigo de la pagina siempre tiene prioridad el buffer 0. Esto ultimo es algo que arrastran casi todas las librerias que se encuentrar por la red, porque todas usan dicho codigo como base.

A parte se puede utilizar con cualquier placa Arduino (por una parte el soft lo permite, y el hard al ser tipo "brick" en vez de shield).

Saludos

Igor R.

Ok.

Lo que si es interesante es leerse el FAQ:

Intentare ir anyadiendo info para quitarle el miedo al bus CAN .... :wink:
Con ejemplos de como cablear el bus, que es la resistencia terminadora, que es el formato intel/motorola normalmente usado en automocion, mascaras, .....

//Send trace
 CAN_TxMsg.id=0x100;
 CAN_TxMsg.header.rtr=0;
 CAN_TxMsg.header.length=8;
 CAN_TxMsg.data[0]=0x01;
 CAN_TxMsg.data[1]=0x02;
 CAN_TxMsg.data[2]=0x03;
 CAN_TxMsg.data[3]=0x04;
 CAN_TxMsg.data[4]=0x05;
 CAN_TxMsg.data[5]=0x06;
 CAN_TxMsg.data[6]=0x07;
 CAN_TxMsg.data[7]=0x08;

Igor R. no entiendo que uso se le puede dar al ID y al RTR en el mensaje que envias. Exactamente para que sirven.

Salu2