Show Posts
Pages: [1] 2 3 ... 7
1  International / Hardware / Re: Review: Shield NFC para Arduino PN532 ISP on: April 10, 2014, 01:00:25 pm
Yo la intente modificar en una pero no sé si lo hice mal o que pero el caso es que brickee los bloques de memoria y no supe restaurar la clave original ni nada. No probé con más llaveros pues no quería cargarme más...

En cualquier caso, la información que grabes dentro la puedes guardar cifrada con algún algoritmo asi que lo de la clave de acceso a los bloques de memoria es lo de menos, por mucho que lean la informacion si no la saben descifrar no les va a servir para nada.
2  International / Hardware / Re: Review: Shield NFC para Arduino PN532 ISP on: April 10, 2014, 12:29:53 pm
si, busca en atmel tienen los chips. Despues en ebay, dx y demas encuentras de todo
Estas se usan para lugares donde hay visitas, hoteles y le dan una llave de acceso, el cual le cambian el codigo. Es mas simple cambiar el codigo de la tarjeta que reprogramar el lector. En realidad es un problema de seguridad que debes auditar.

http://giltesa.com/2013/06/24/llaveros-nfc-programables-para-movil-arduino-etc/
http://www.dx.com/es/p/rewritable-waterproof-13-56mhz-water-droplets-nfc-tag-transparent-copper-red-234180


entonces que funcion de la librería debería usar para pasar toda la información de una llave a otra y así tenerla duplicada. Mi idea es leer de una llave y pasar toda esa información a una que permita escritura para poder tenerla "por duplicado"
En la libreria que puse, y modifique, tienes añadidos dos metodos para leer y escribir toda la informacion de golpe... pero necesitas las claves de acceso a cada bloque de memoria. Los metodos estan adaptados para que funcionen con las compradas por ebay.


Esta shield funciona también con Arduino Leonardo o hay que hacer alguna modificación?

Si, funciona sin problemas en el Leonardo.


vale ya entiendo. Es decir, en el código de la librería s epresupone que la clave es 0xFF.... pero si quisiese leer un bloque de otra tarjeta debería poner la clave real de esa tarjeta para cada bloque para poder leer, verdad?

Eso es, en este caso la clave de estas tarjetas (de todos los llaveros y de la tarjeta con forma de tarjeta de credito) es:
uint8_t  keys[]  = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}
Pero en otras llaves podria ser distinta.

Y hay que tener cuidado con no escribir en la memoria donde se guarda la clave o perderas ese bloque y los siguientes.
3  International / Hardware / Re: Review: Shield NFC para Arduino PN532 ISP on: April 07, 2014, 12:30:38 pm
si, busca en atmel tienen los chips. Despues en ebay, dx y demas encuentras de todo
Estas se usan para lugares donde hay visitas, hoteles y le dan una llave de acceso, el cual le cambian el codigo. Es mas simple cambiar el codigo de la tarjeta que reprogramar el lector. En realidad es un problema de seguridad que debes auditar.

http://giltesa.com/2013/06/24/llaveros-nfc-programables-para-movil-arduino-etc/
http://www.dx.com/es/p/rewritable-waterproof-13-56mhz-water-droplets-nfc-tag-transparent-copper-red-234180


entonces que funcion de la librería debería usar para pasar toda la información de una llave a otra y así tenerla duplicada. Mi idea es leer de una llave y pasar toda esa información a una que permita escritura para poder tenerla "por duplicado"
En la libreria que puse, y modifique, tienes añadidos dos metodos para leer y escribir toda la informacion de golpe... pero necesitas las claves de acceso a cada bloque de memoria. Los metodos estan adaptados para que funcionen con las compradas por ebay.


Esta shield funciona también con Arduino Leonardo o hay que hacer alguna modificación?

Si, funciona sin problemas en el Leonardo.
4  International / Proyectos / Re: Ayuda proyecto flash led on: February 22, 2014, 02:43:01 pm
Code:
int efecto = 1;
#define ultEfecto 3
#define pinPulsador 7


void efecto1()
{
   // Codigo del efecto 1
}

void efecto2()
{
   // Codigo del efecto 2
}

void efecto3()
{
   // Codigo del efecto 3
}


void setup()
{
   pinMode(pinPulsador, INPUT);
}

void loop()
{
   if( digitalRead(pinPulsador) )
   {
      while( digitalRead(pinPulsador) );
   
      if( efecto < ultEfecto )
         efecto++;
      else
         efecto = 1;
   }


   switch(efecto)
   {
      case 1: efecto1(); break;
      case 2: efecto2(); break;   
      case 3: efecto3(); break;         
   }
}
5  International / Software / Re: ayuda: como contar el tiempo on: September 09, 2013, 08:41:38 am
Código:
Code:
unsigned long tAntes1 = 0;
unsigned long tAntes2 = 0;
unsigned long tAhora  = 0;
#define tTarea1 2000
#define tTarea2 5000


void setup()
{
   Serial.begin(9600);
   Serial.println("Inicio programa:\n");
}


void loop()
{
   tAhora = millis();

   // Se ejecuta cada 2 segundos:
   if( tAhora - tAntes1 > tTarea1 )
   {
      tAntes1 = tAhora;
      Serial.print("Tarea1 ("); Serial.print(tAhora/1000); Serial.println(")");
   }
   
   // Se ejecuta cada 5 segundos:
   if( tAhora - tAntes2 > tTarea2 )
   {
      tAntes2 = tAhora;
      Serial.print("Tarea2 ("); Serial.print(tAhora/1000); Serial.println(")");
   }   

}

Resultado ejecución:
Code:
Inicio programa:

Tarea1 (2)
Tarea1 (4)
Tarea2 (5)
Tarea1 (6)
Tarea1 (8)
Tarea2 (10)
Tarea1 (10)
Tarea1 (12)
Tarea1 (14)
Tarea2 (15)
Tarea1 (16)
Tarea1 (18)
Tarea2 (20)
Tarea1 (20)
Tarea1 (22)
Tarea1 (24)
Tarea2 (25)
Tarea1 (26)
Tarea1 (28)
Tarea2 (30)
Tarea1 (30)
Tarea1 (32)
Tarea1 (34)
Tarea2 (35)
Tarea1 (36)
Tarea1 (38)
Tarea2 (40)
Tarea1 (40)
6  International / Hardware / Re: Shield de Ethernet que se cuelga / deja de funcionar al azar on: September 01, 2013, 02:53:19 pm
También lo probé así, que es como viene en los ejemplos, pero igualmente deja de funcionar.

He estado leyendo por otros foros y comentan que es, o podría ser, problema de la librería, concretamente la funcion que cierra la conexión que no siempre la cierra correctamente. No pusieron ningún código para probarlo así que por el momento sigo igual.

Saludos.
7  International / Hardware / Re: Shield de Ethernet que se cuelga / deja de funcionar al azar on: August 29, 2013, 08:53:03 am
De momento sigo igual, esta noche a las 5:55 se paro y lo resetee a las 8:36



Con lo que mo estaba currando :/
8  International / Software / Re: Dar un valor de dos o más dígitos en comunicación serial on: August 28, 2013, 07:24:50 am
O puedes enviar los números, booleanos, caracteres, cadenas, etc. como datos byte a byte almacenándolos en estructuras struct y union.

http://giltesa.com/wp-content/uploads/2013/03/union.txt
http://giltesa.com/wp-content/uploads/2013/03/union-struct.txt

Saludos!
9  International / Hardware / Re: Empezar con 'board' Arduino Ethernet on: August 27, 2013, 03:37:47 pm
Puedes conectar shields encima de tu placa pero tienes que tener en cuenta que algunas chocan con el conector ethernet por eso te interesa que tengan los pines algo mas largos. También tienes que tener en cuenta que el chip de ethernet usa el puerto ISP del ATmega.

En cuanto a lo de la alimentacion, en el caso del Arduino+shield si usas un transformador de 12V el mosfet se calienta a unos 70º, en otro hilo decían de alimentarlo a 7V que es el mínimo para evitar que se caliente tanto.
Y lo conectar la alimentacion externa y el usb a la vez no te lo sé decir seguro, los Arduinos normales si que sé que automáticamente cambian entre 5V y salida externa automáticamente sin reiniciarse ni nada, pero con tu placa ni idea.

Saludos!
10  International / Hardware / Shield de Ethernet que se cuelga / deja de funcionar al azar on: August 27, 2013, 03:29:17 pm
Hola,

Estoy haciendo pruebas con la shield de ethernet, esta, enviando datos a un servidor php que los almacena y tal. Lo único que hace el Arduino es coger los datos de los sensores y enviarlos al servidor cada X tiempo programado, no hace nada más.

El problema está en que el Arduino funciona correctamente el tiempo que le da la gana, siempre llega un momento en el que se cuelga y deja de enviar los datos. Bueno, realmente más que colgarse lo que sucede es que la tarjeta deja de hacer su trabajo correctamente, el Arduino sigue funcionando y dándome avisos de error de conexión con un buzzer que le he puesto.

Estos cuelgues pueden darse a los pocos minutos, o a las horas, o tres días después... a un amigo le sucede incluso 11 días después, y otro usuario de un foro lo mismo...

Al principio pensaba que sucedía por las elevadas temperaturas que coge el mosfet al alimentar la placa con 12V, pero lo descarte ya que la última semana ha estado con 5V por el USB y sucede lo mismo.


Por el momento he descartado:
  • Temperaturas del mosfet, ahora está por USB.
  • Que fuera cosa del Duemilanove, así que lo probé con un Mega.
  • Que se quede sin SRAM libre (está en 1245 bytes libres y estables con un ATmega328)
  • Que fuera cosa del servidor, pero no ya que se queda indefinidamente colgado.
  • Que el router le revocara la IP por enviar “1 dato” cada 15 minutos, también lo tuve a 5 minutos una semana. (Tiene configurada una IP estática en el DHCP)
  • Que fuera cosa del router, por ello lo conecte también directo al de Ono en vez del router neutro.
  • Que como por defecto se conecta al router solo en el setup pues perdiera la conexión (lo pase al loop).

Y ya no sé qué más probar la verdad. Alguna solución que os suene leer por internet?
Tenia intención de montar una estación meteorológica 2.0 pero así es inviable :/


PD:
El código sin lo del buzzer para que se entienda mejor:

Code:
#include <SPI.h>
#include <Ethernet.h>

#include <OneWire.h>
#include <DallasTemperature.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress  ip( 192, 168, 1, 6 );
IPAddress server( 111, 222, 333, 444 );  // La IP real del servidor
EthernetClient client;

OneWire oneWire(2);
DallasTemperature sensores(&oneWire);

unsigned long tiempoAntes = 0;
unsigned long tiempoAhora = 0;
unsigned long tiempoEnvio = 600000; // 10 minutos




int freeRam()
{
   extern int __heap_start, *__brkval;
   int v;
   return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}



void setup()
{
   Serial.begin(9600);
   sensores.begin();
   while( !Serial );
}



void loop()
{
   tiempoAhora = millis();
   
   if( tiempoAhora - tiempoAntes > tiempoEnvio )
   {
      tiempoAntes = tiempoAhora;

      conectarseAlRouter();
     
   
      if( !client.connect(server, 80) )
      {
         Serial.println("Error de conexion");
      }
      else
      {
         sensores.requestTemperatures();

         client.print("GET /arduino.php");
         
         client.print("?temperatura="); client.print( sensores.getTempCByIndex(0) );
         client.print("&ram="); client.print( freeRam() );
         client.print("&tiempo="); client.print( millis()/1000/60/60 );

         client.println(" HTTP/1.1");
         client.println("Host: 111.222.333.444"); // La IP del host real
         client.println("Connection: close");
         client.println();

         client.flush();
         client.stop();
      }
   }


} // End loop




void conectarseAlRouter()
{
   if( !Ethernet.begin(mac) )
   {
      Serial.println("Error de conexion usando DHCP");
      Ethernet.begin(mac, ip);
     
      // Una vez se cuelga da error aqui con cada envio de datos:
      while( !Ethernet.begin(mac) )
      {
         Ethernet.begin(mac, ip);
         delay(500);
      }
   }
   delay(1000);
   Serial.println("Conectando");   
}
11  International / Proyectos / Re: Cable para Domotica on: August 27, 2013, 08:09:20 am
Yo no usaría la comunicación serial para eso si pretendes conectar varios Arduino, de hecho no estoy seguro de que eso se pueda hacer sin tener problemas en la comunicación.

Lo que si puedes hacer es usar el protocolo I2C y con solo dos cables conectar todos los arduinos que quieras, cada uno de ellos tendrá su propia dirección única y así el Arduino principal podrá comunicarse solo con el que quiera.

Saludos!
Que yo sepa, corregirme si me equivoco, i2c no tiene mucho alcance, de ahi su nombre

Ummm, cierto.
La comunicación serial permite tener varios módulos escuchando?

A una mala se podría hacer por serial y virtualizando los puertos...
12  International / Software / Re: Enviando datos al puerto de serie y condicionales if on: August 27, 2013, 07:54:50 am
Yo añadiría también después de cada lectura un Serial.flush(); para asegurarte que dejas el buffer de entrada vació y que en la siguiente lectura no lees datos anteriores.
La instrucción Serial.flush(); ya no vacía el buffer de entrada desde Arduino 1.0 http://arduino.cc/en/Serial/Flush
Y desconozco si ahora hay alguna instrucción que permita borrar el buffer.

Ya veo que ahora si funciona como en otros lenguajes de programación, gracias por el apunte smiley
13  International / Proyectos / Re: Cable para Domotica on: August 26, 2013, 01:19:14 pm
Yo no usaría la comunicación serial para eso si pretendes conectar varios Arduino, de hecho no estoy seguro de que eso se pueda hacer sin tener problemas en la comunicación.

Lo que si puedes hacer es usar el protocolo I2C y con solo dos cables conectar todos los arduinos que quieras, cada uno de ellos tendrá su propia dirección única y así el Arduino principal podrá comunicarse solo con el que quiera.

Saludos!
14  International / Hardware / Re: Funcionamiento Sensor Sonido on: August 26, 2013, 12:56:27 pm
Imagino que la salida sera: 0 o 5V / LOW o HIGH y que con la resistencia variable ajustaras la sensibilidad, de modo que si recibes dos HIGH seguidos podrías considerarlo como unas palmadas...

Saludos!
15  International / Software / Re: Enviando datos al puerto de serie y condicionales if on: August 26, 2013, 12:52:06 pm
Yo añadiría también después de cada lectura un Serial.flush(); para asegurarte que dejas el buffer de entrada vació y que en la siguiente lectura no lees datos anteriores.

Saludos!
Pages: [1] 2 3 ... 7