Modificar librería Wire.h I2C

Buenas noches!!

Me encuentro realizando el Proyecto de fin de estudios. El proyecto trata sobre un sistema domótico a gran escala. Como comunicaciones estoy intentando usar el protocolo I2c, por su simplicidad y el poco cableado que necesita, pero se me queda corto de direcciones, con 7bits no llego a cubrir mas de 128 dispositivos, y si lo quiero equiparar a KNX, necesitaría unos 16 bits.

Mi pregunta es la siguiente:
¿podría modificar la librería wire.h para poder utilizar 15 o 16 bits de direcciones? ¿ y como?

Gracias de antemano

Esto es lo mejor que puedes hacer, 10 bits según este pagina

Muchas gracias surbyte, creo que con eso me vale

Yo tambien estuve leyendo al respecto y me preocupó el tema de los cables y los problemas de la capacitancia del mismo que frenarían la velocidad de comunicación entre dispositivos si no usas bufferes o drivers que reconstruyan la señal.
Una muy buena interfaz siguiendo la linea de pocos cables es RS485, acá hay un muy buen proyectos llamado Souliss que puede servirte si eliges domótica con RS485 y todas sus variantes.

En lo personal me gusta mucho el uso del nRF24L01 que usando la libreria RF24Network te permite nodos a gran escala. He leido de 3000 pero en teoría mas son posibles.

Tal vez este comentario no te sirva porque tu debas hacerlo con I2C.
Sino es el caso, considera RS485 o vía inalámbrica con los nRF24L01 a 2MB/s máx de transferencia.

Muchas gracias de nuevo surbyte

Pensé en hacerlo de forma inalámbrica, pero me preocupaba el tema de la seguridad, por eso opté por bus cableado. En cuanto a I2c o RS485, no lo tenia totalmente decidido, igual es más interesante RS485, aunque la desventaja es que hay que utilizar electrónica adicional, MAX485.

Seguridad con los nRF24L01? No es que esten encriptados porque no lo están, pero quien te va a venir con algo para entrar en tu sistema?

Respcto a la segunda parte de tu respuesta

igual es más interesante RS485, aunque la desventaja es que hay que utilizar electrónica adicional, MAX485.

Yo no creo que puedas tirar un clable i2c a 5 mts de distancia. Lo has hecho ya? En cambio con RS485 puedes colocar un nodo a 1200 mts.

Mira esto:

For fast mode, and resistor pullup, capacitance should be less than 200pF, according to this NXP document I2C-bus specification and user manual.

With current source pullups you can go to 400pF, but not with resistors.

If your wire is 20pF/30cm and you have another 50pF of stray and input capacitance, you're limited to 2.25m of cable length. Different assumptions will lead to different numbers.

O sea.. estas muy limitado en distancia con I2C.

Sin embargo te hablé de usar drivers o conformadores de señal y acá están

Something like NXP's P82B96 could be used to change the voltage levels on the bus, allowing much longer distances.

The datasheet contains examples for I2C cable lengths of 3m, 25m, 100m and 250m.

There are other chips that have similar functionality.

O sea que estas en la misma situación que usar un simple y barato MAX485.
un P82B96 cuesta 1.44 dolares encapsulado SOIC
un MAX487 (128 nodos) 2.55 en encapsulado DIP
ambos precios de www.digikey.com

Aca un hoja de datos que da mas información.
Luce exactamente igual a un max485 doble, pero como primera impresión mas barato.
También he leido que se puede conseguir buenas distancias usando cable USB al que le quitas los terminales claro está, pero debido a la baja capacitancia del mismo, tienes ahi un buen elemento para unir nodos.

La verdad es que aun no he implementado nada a gran distancia en i2c.

Al final tras leer varios links que me mandaste me decido por rs485, intentare diseñarme un protocolo que me permita 2 bytes de direcciones, de este modo no me limito en cuanto a direcciones.

El max485 lo pillare de aliexpress, que están bien de precio, las 10 unidades a 6.10€:
http://es.aliexpress.com/store/product/Free-Shipping-10pcs-lot-TTL-to-RS485-Module-MAX485-Modules-for-Arduino-Free-Shipping/221555_32214327465.html

Muchas gracias de nuevo

Esta hecho, puedes usar MODBUS que es un protocolo mas que utilizado a nivel industrial. Justamente para RS485 o 422.
En el playround de Arduino esta la librería pero ahora PeterKanTropus esta probando la librería en Proyectos, asi que mira a ver que esta haciendo.

Y mas que nunca en Proyectos mira el proyecto Souliss puro 485 en domótica.