Para evitar que se quede cualquiera de los arduinos "colgados" por cualquier problema en la alimentacion voy a usar un MC340.
lunes, 22 de agosto de 2011
Expansores I2C PCF8574
Cada nodo tiene conectado uno o dos expansores PCF8574 conectados al bus I2C. Lo voy a usar para controlar la persiana, el toldo y el estore.
/*
PCF8574 - I2C
Entradas
*/
#include <Wire.h>
#define expander 0x20
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
Serial.print("Read: ");
//Nos devuelve el estado de todos los bits B00000000
Serial.println(expanderRead(),BIN);
//Nos devuelve uno por uno el estado de los bits
byte valor=(expanderRead());
Serial.print(bitRead(valor,7));
Serial.print(bitRead(valor,6));
Serial.print(bitRead(valor,5));
Serial.print(bitRead(valor,4));
Serial.print(bitRead(valor,3));
Serial.print(bitRead(valor,2));
Serial.print(bitRead(valor,1));
Serial.println(bitRead(valor,0));
delay(1000);
}
byte expanderRead()
{
byte _data;
Wire.requestFrom(expander, 1);
if(Wire.available())
{
_data = Wire.receive();
}
return _data;
}
Y para activar las salidas.
/*
PCF8574 - I2C SALIDAS
*/
#include <Wire.h>
#define expander 0x20
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
//Todas las salidas a 0 B00000000
expanderWrite(B00000000);
delay(1000);
//Todas las salidas a 1 B11111111
expanderWrite(B11111111);
delay(1000);
byte salidas = B00000000;
//el bit 2 lo ponemos a 1 B00000010
salidas = bitWrite(salidas, 2, 1);
expanderWrite(salidas);
delay(1000);
//el bit 3 lo ponemos a 1 B00000110
salidas = bitWrite(salidas, 3, 1);
expanderWrite(salidas);
delay(1000);
//el bit 2 lo ponemos a 0 B00000010
salidas = bitWrite(salidas, 2, 0);
expanderWrite(salidas);
delay(1000);
//el bit 3 lo ponemos a 0 B00000000
salidas = bitWrite(salidas, 3, 0);
expanderWrite(salidas);
delay(1000);
}
void expanderWrite(byte _data )
{
Wire.beginTransmission(expander);
Wire.send(_data);
Wire.endTransmission();
}
El pinout del PCF8574
/*
PCF8574 - I2C
Entradas
*/
#include <Wire.h>
#define expander 0x20
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
Serial.print("Read: ");
//Nos devuelve el estado de todos los bits B00000000
Serial.println(expanderRead(),BIN);
//Nos devuelve uno por uno el estado de los bits
byte valor=(expanderRead());
Serial.print(bitRead(valor,7));
Serial.print(bitRead(valor,6));
Serial.print(bitRead(valor,5));
Serial.print(bitRead(valor,4));
Serial.print(bitRead(valor,3));
Serial.print(bitRead(valor,2));
Serial.print(bitRead(valor,1));
Serial.println(bitRead(valor,0));
delay(1000);
}
byte expanderRead()
{
byte _data;
Wire.requestFrom(expander, 1);
if(Wire.available())
{
_data = Wire.receive();
}
return _data;
}
Y para activar las salidas.
/*
PCF8574 - I2C SALIDAS
*/
#include <Wire.h>
#define expander 0x20
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
//Todas las salidas a 0 B00000000
expanderWrite(B00000000);
delay(1000);
//Todas las salidas a 1 B11111111
expanderWrite(B11111111);
delay(1000);
byte salidas = B00000000;
//el bit 2 lo ponemos a 1 B00000010
salidas = bitWrite(salidas, 2, 1);
expanderWrite(salidas);
delay(1000);
//el bit 3 lo ponemos a 1 B00000110
salidas = bitWrite(salidas, 3, 1);
expanderWrite(salidas);
delay(1000);
//el bit 2 lo ponemos a 0 B00000010
salidas = bitWrite(salidas, 2, 0);
expanderWrite(salidas);
delay(1000);
//el bit 3 lo ponemos a 0 B00000000
salidas = bitWrite(salidas, 3, 0);
expanderWrite(salidas);
delay(1000);
}
void expanderWrite(byte _data )
{
Wire.beginTransmission(expander);
Wire.send(_data);
Wire.endTransmission();
}
El pinout del PCF8574
sábado, 20 de agosto de 2011
viernes, 19 de agosto de 2011
Manual de funcionamiento de CAN Bus
Manual de funcionamiento del CAN Bus que a mi me ha venido muy bien para entenderlo un poquito mejor.
www.steinbock.cl/AUDI-9.pdf
www.steinbock.cl/AUDI-9.pdf
Distribucion de funciones de cada arduino
Acabe de distribuir todos los pines que voy a usar en cada arduino, total cinco arduinos configurados como SLAVE y uno como MASTER. Entre ellos se comunicaran por CAN, que locura.
Os dejo el esquema del pineado.
http://arduino.cc/forum/index.php?action=dlattach;topic=55012.0;attach=5724
Os dejo el esquema del pineado.
http://arduino.cc/forum/index.php?action=dlattach;topic=55012.0;attach=5724
sábado, 13 de agosto de 2011
Empezamos
Quiero hacer de mi nueva casa un hogar inteligente y que mejor que hacerlo con arduino, esa pedazo de plataforma de hardware libre.
En principio iba a cablear toda la casa desde cada sensor a un control central pero al final lo hare con CAN Bus usando la shield de Igor R, de esta manera se simplifica un poco todo.
Os dejo el enlace de la shield.
http://secuduino.blogspot.com/
Así que empezamos amigos.
En principio iba a cablear toda la casa desde cada sensor a un control central pero al final lo hare con CAN Bus usando la shield de Igor R, de esta manera se simplifica un poco todo.
Os dejo el enlace de la shield.
http://secuduino.blogspot.com/
Así que empezamos amigos.
Suscribirse a:
Entradas (Atom)