Ich bezweifle, dass Ihnen die USB-Schnittstelle des Uno eine eindeutige Seriennummer gibt. Jede Zahl wäre Teil des Codes, der auf den Chip hochgeladen wird, und wäre daher für mehrere Unos gleich.
Ein Ansatz ist der DS2401-Chip "Silicon Serial Number", der die Ein-Draht-Schnittstelle verwendet. Das würde nur einen freien Pin und einen Code erfordern (der Code wäre möglicherweise das Problem).
Die am wenigsten aufdringliche und wahrscheinlich zuverlässigste Methode wäre, den Code einfach zurückzulesen und die Summe zu überprüfen. Genau das mache ich mit meinem Chipsignaturdetektor . Dies erkennt jedoch nur (wie aktuell geschrieben) die Bootloader-Signatur. Eine ziemlich kleine Änderung und es könnte MD5-Summe des gesamten Skizzencodes sein.
Beispielausgabe:
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
Diese MD5-Summe (letzte Zeile) ist effektiv die Signatur dieses bestimmten Bootloaders. Tatsächlich schlägt die neueste Version sie in einer Tabelle nach:
MD5 sum of bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F
Bootloader name: optiboot_atmega328
Sie können also beim Hochladen einer Skizze eine MD5-Summe des Hex-Codes generieren. Es gibt ziemlich einfache Möglichkeiten, dies zu tun. Dann könnten Sie eine "Git-Tag" -Operation für Ihren Quellcode ausführen und sich dann (mithilfe eines automatisierten oder manuellen Prozesses) daran erinnern, dass eine bestimmte MD5-Summe von Hex-Code den Skizzencode zu einem bestimmten Zeitpunkt darstellt.
Eine Art Datenbank wie:
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
Um die Quelle von der Karte aus zu lokalisieren, müssen Sie die MD5-Summe des Codes ermitteln (indem Sie ihn von der Karte zurücklesen) und ihn dann in Ihrer Datenbank nachschlagen.