subiendo - recuperar programacion de arduino
ID de máquina única para el proyecto Arduino (4)
Estoy construyendo algunos nodos de sensores remotos para Arduino, usarán RF para transmitir datos a una estación base. ¿Existe algún tipo de ID único respaldado en Arduino que pueda usar para identificar el nodo del sensor Arduino remoto en la estación base? Si no, ¿cómo solucionan los demás este problema?
Me doy cuenta de que podría codificar un nodeid cuando compilo el origen de ese nodo, simplemente parece que eso no se escalaría demasiado bien. Lo que necesito es algo análogo a una dirección MAC en http tierra.
Lo siento, pero todo el chip atmega que conozco no dará una identificación única, pero la serie xmega sí (pero entonces estás muy lejos de Arduino).
Puede poner un valor en el eeprom en tiempo de compilación, pero como se dijo no se escalará bien.
A menos que, como mpflaga, pueda escribir el SN # directamente en la EEPROM con los argumentos "-U eeprom: w: mydata.eep".
También puede implementar algo como solicitar el ID en el bus, y si es de uso gratuito y almacenarlo, pero agregará mucha complejidad a su protocolo.
Me encontré con esta pregunta al intentar encontrar la respuesta y decidí ir con DS2401 al que se hace referencia en el enlace proporcionado en los comentarios ( arduino.cc forum: "Arduino serial number S / N?" ).
Tendré un bus de 1 cable en mi proyecto de todos modos, por lo que tener un componente extra (y bastante barato) no importa y proporcionará una ID única a nivel mundial sin importar el modelo de placa y los chips utilizados (también se aplica a clon mfgs, por ejemplo, tener un par de placas DCcduino UNO que tengan CH340G para las comunicaciones en lugar de Atduga8U2 / Atmega16U2 de Arduino UNO y otras placas FTDI de Arduino).
Sé que es una publicación anterior, pero tenía curiosidad de cómo resolvió el problema. Actualmente estoy generando una identificación única con un dígito de verificación al final (usando el mismo enfoque que los códigos UPC).
Actualmente utilizaría un programa externo para administrar mis números de serie antes de escribirlos en EEPROM usando un boceto separado. Todo esto controlado a través de un proceso de construcción. Suena complicado, pero realmente no podía pensar en una mejor manera (salvo la codificación dura del número de serie).
Consideré el enfoque DS2401; sin embargo, no pude justificar el hardware adicional. No vi la diferencia entre escribir en EEPROM y tener otro componente de hardware con una serie escrita.
También tengo una clase SerialNumber que lee los datos que se pueden usar en cualquier proyecto.
(Lo siento por el inglés malo, soy alemán) Hasta donde yo sé, el Arduino no tiene una identificación de producto única, pero después de un reinicio, cada byte en la RAM tiene un valor aleatorio que es diferente en cada arduino. Este programa debería generar un valor diferente en cada arduino .:
void setup()
{
uint32_t checksum = 0;
for(uint16_t u = 0; u < 2048; u++)
{
checksum += * ( (byte *) u );//checksum += the byte number u in the ram
}
Serial.begin(115200);
Serial.println(checksum , HEX);
}
void loop()
{
}
ACTUALIZACIÓN: puede escribir un número en el eeprom una vez -> Tiene su ID único