Je doute que l'interface USB de l'Uno vous donne un numéro de série unique. Tout numéro ferait partie du code téléchargé sur la puce qui serait donc le même parmi plusieurs Unos.
Une approche est la puce DS2401 "Silicon Serial Number" qui utilise l'interface à un fil. Cela ne nécessiterait qu'une seule broche gratuite et du code (le code pourrait être le problème, éventuellement).
La méthode la moins intrusive, et probablement la plus fiable, serait simplement de relire le code et de le vérifier. C'est exactement ce que je fais avec mon détecteur de signature de puce . Cependant, cela ne détecte (comme actuellement écrit) que la signature du chargeur de démarrage. Un changement assez mineur et il pourrait résumer MD5 la totalité du code d'esquisse.
Exemple de sortie:
Signature detector.
Written by Nick Gammon.
Signature = 1E 95 0F
Fuses
Low = FF High = D6 Ext = FF Lock = CF
Processor = ATmega328P
Flash memory size = 32768
Bootloader in use: Yes
EEPROM preserved through erase: Yes
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00
Bootloader:
7E00: 02 01 02 03 0405 06 07 08 09 0A 0B 0C 0D 0E 0F
7E10: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7E20: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7E30: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
...
7FB0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FC0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FD0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FE0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FF0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
MD5 sum of bootloader = 56 72 75 2D 5D B5 0D BA 25 10 DF BE 87 D2 A1 27
Cette somme MD5 (dernière ligne) est effectivement la signature de ce chargeur de démarrage particulier. En fait, la version la plus récente les recherche dans un tableau:
MD5 sum of bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F
Bootloader name: optiboot_atmega328
Donc, ce que vous pourriez faire, c'est lors du téléchargement d'un croquis, générer une somme MD5 du code hexadécimal. Il existe des moyens assez simples de le faire. Ensuite, vous pouvez effectuer une opération "git tag" sur votre code source, puis (en utilisant un processus automatisé ou manuel) vous rappeler qu'une somme MD5 particulière de code hexadécimal représente le code d'esquisse à un moment particulier.
Une sorte de base de données comme:
Chip: Uno
MD5 sum: D8 8C 70 6D FE 1F DC 38 82 1E CE AE 23 B2 E6 E7
Sketch: My_robot_sketch_42.ino
Git tag: version666
Maintenant, pour localiser la source de la carte, vous établissez la somme MD5 du code (en la relisant à partir de la carte), puis la recherchez dans votre base de données.