Inicializar la IP

Hola a todos

Estoy realizando un proyecto que ya me funciona teniendo conectado el puerto serie a Arduino, sin embargo al intentar que la placa funcione con la ultima configuracion al suministrarle solo voltaje no consigo que funcione.

El código de programa utiliza una placa extra con cnexion ethernet y ha de inicializar la ip y los datos de red al arrancar y creo que es esa parte la que no realiza cuando suprimo la subida del codigo con el puerto serie .

Que podria hacer?
gracias de antemano

Hola #11Vane, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Hardware (porque hablas de un problema de tensión).
Presta mas atención a las indicaciones que cada foro tiene.

Buenas 11Vane,

Estaría bien, que ante dudas así pusieras el código que estás usando, y como estás conectado el Arduino y las placas.

Hola!
Mi programacion es muy sencilla
Se trata de un lector de tarjetas que dependiendo de si las tiene registradas o no mada un codigo udp que sera un mensaje en red para otros dispositivos.

El problema que tengo es que al trabajar con el puerto de comunicacion y volcar le programa funciona sin problema
Al desconectar el puerto de comunicacion y conectar la alimentacion directamente no se inicializa la ip y por lo tanto no funciona nada en la red.

te dejo el codigo

// no soy tampoco una crack con el codigo...

//RST D9
//SDA(SS) D8
//MOSI D11
//MISO D12
//SCK D13

#include <SPI.h>
#include <MFRC522.h>
#include <SPI.h>
#include <Ethernet.h>

EthernetUDP Udp;
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x5C, 0x18};
IPAddress ip(192,168,1,15);
unsigned int localport = 8888;

IPAddress remoteIP(192,168,1,200);
unsigned int remotePort = 0002;
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

const int RST_PIN = 9; // Pin 9 para el reset del RC522
const int SS_PIN = 8; // Pin 8 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear instancia del MFRC522

byte validKey1[4] = { 0x4E, 0x4C, 0xB3, 0xC7 }; // Ejemplo de clave valida
byte validKey2[4] = { 0x01, 0x28, 0xB3, 0xC7 };
byte validKey3[4] = { 0x4E, 0x46, 0xB3, 0xC7 };

//Función para comparar dos vectores
bool isEqualArray(byte* arrayA, byte* arrayB, int length)
{
for (int index = 0; index < length; index++)
{
if (arrayA[index] != arrayB[index]) return false;
}
return true;
}

void setup() {
Serial.begin(9600);
Serial.println("****************");
Serial.println("Puerto Serial OK");

Ethernet.begin(mac,ip);
Serial.print("IP : ");
Serial.println(Ethernet.localIP());
Udp.begin(localport);
Ethernet.setSubnetMask(subnet);

SPI.begin(); // Iniciar SPI
mfrc522.PCD_Init(); // Iniciar MFRC522
}

void loop() {
// Detectar tarjeta
if (mfrc522.PICC_IsNewCardPresent())
{
//Seleccionamos una tarjeta
if (mfrc522.PICC_ReadCardSerial())
{
// Comparar ID con las claves válidas
if (isEqualArray(mfrc522.uid.uidByte, validKey1, 4)){
Serial.println("Tarjeta valida");
Udp.beginPacket(remoteIP, remotePort);
Udp.write("message");
Serial.println("Mensaje UDP");
Udp.endPacket();
delay(5000);}
else
{
if (isEqualArray(mfrc522.uid.uidByte, validKey2, 4)){
Serial.println("Tarjeta valida 2");
Udp.beginPacket(remoteIP, remotePort);
Udp.write("message");
Serial.println("Mensaje UDP");
Udp.endPacket();
delay(5000);}
else
{
if (isEqualArray(mfrc522.uid.uidByte, validKey3, 4)){
Serial.println("Tarjeta valida3");
Udp.beginPacket(remoteIP, remotePort);
Udp.write("message");
Serial.println("Mensaje UDP");
Udp.endPacket();
delay(5000);}

else
Serial.println("Tarjeta invalida");
}
}

mfrc522.PICC_HaltA();
}

}

//cierre de lectura y comprobacion
// cierre deteccion tarjeta
delay(250);

}//cierre de void loop

Un abrazo y gracias!!

Buenas,

Teniendo en cuenta la de cosas que pueden ser, te voy a dar unas pautas para que puedas depurar el código y el hardware.

Por lo que dices, es difícil que sea el hardware, así que prueba con un multímetro a ver que la alimentación de todo está bien. Es decir, comprueba que cuando alimentas de otra fuente, los voltajes que llegan al lector de SD y del ethernet, sobre todo los 5 o 3.3v de alimentación.

Luego comprueba, que la fuente con la que alimentas todo, puede dar corriente suficiente para hacer trabajar todo...

Por último prueba a depurar usando el LED del arduino, para ver hasta donde llega el código y por donde está pasando (puedes hacer que se encienda si llega a un punto concreto).

Son muchos puntos posibles de fallo como para poder ayudarte en un correo, intenta acotar un poco más el problema, y quizá te pueda ayudar mejor.

Un saludo y suerte!

Moderador:
Lee las normas tal como te pedí en mi primer respuesta y edita tu post#3.
Menos mal que te lo indiqué antes y aún asi posteaste sin leer las normas.
Usa etiquetas para códigos y edita por favor.

Respueta a tu pregunta:

Jamás vi que se use un puerto como este

unsigned int remotePort = 0002;

En principio me llama la atención, no digo que no se pueda, solo que siempre he visto puertos desde el 15 en adelante. Por qué no lo se!!
Si uso unpuerto para una comunción UDP o TCP/IP seguro estará desde 1000 en adelante porque todos los ejemplos que he visto los usan asi.

Ahora tu dices

Estoy realizando un proyecto que ya me funciona teniendo conectado el puerto serie a Arduino, sin embargo al intentar que la placa funcione con la ultima configuracion al suministrarle solo voltaje no consigo que funcione.

Que funciona bien con el puerto serie? No entiendo que puerto serie.
Tienes un Lector de RFID, eso funciona?
La pregunta es, probaste algún ejemplo de la librería Ethernet, cuál fue el resultado, con dicho ejemplo?