Ik betwijfel of de USB-interface op de Uno je een uniek serienummer geeft. Elk nummer zou deel uitmaken van de code die naar de chip wordt geüpload, wat bij meerdere Uno's hetzelfde zou zijn.
Een benadering is de DS2401 "Silicon Serial Number" -chip die gebruikmaakt van de One-wire-interface. Dat zou slechts één gratis pincode vereisen, en wat code (de code zou het probleem mogelijk zijn).
De minst ingrijpende methode, en waarschijnlijk de meest betrouwbare, zou zijn om simpelweg de code en de som -controleer het. Dat is precies wat ik doe met mijn chip-handtekeningdetector. Dat detecteert echter alleen (zoals momenteel geschreven) de handtekening van de bootloader. Een vrij kleine wijziging en het zou de volledige schetscode MD5-optellen.
Voorbeelduitvoer:
Handtekeningdetector Geschreven door Nick Gammon.Signature = 1E 95 0F FusesLow = FF Hoog = D6 Ext = FF Lock = CFProcessor = ATmega328P Grootte flashgeheugen = 32768 Bootloader in gebruik: Ja EEPROM behouden door wissen: Ja Watchdog-timer altijd aan: Nee Bootloader is 512 bytes beginnend bij 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 som van bootloader = 56 72 75 2D 5D B5 0D BA 25 10 DF BE 87 D2 A1 27
Die MD5-som (laatste regel) is eff eigenlijk de handtekening van die specifieke bootloader. In feite zoekt de meest recente versie ze op in een tabel:
MD5 som van bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F Bootloader-naam: optiboot_atmega328
Dus wat je zou kunnen doen is, bij het uploaden van een sketch, een MD5-som van de hex-code genereren. Er zijn vrij eenvoudige manieren om dat te doen. Dan zou je een "git tag" -bewerking op je broncode kunnen uitvoeren, en dan (met behulp van een geautomatiseerd of handmatig proces) onthouden dat een bepaalde MD5-som van hexadecimale code de sketchcode op een bepaald moment vertegenwoordigt.
Een soort database zoals:
Chip: UnoMD5 som: D8 8C 70 6D FE 1F DC 38 82 1E CE AE 23 B2 E6 E7 Schets: My_robot_sketch_42.inoGit tag: version666
Om nu de bron op het bord te vinden, bepaal je de MD5-som van de code (door het terug te lezen vanaf het bord) en zoek je het vervolgens op in je database.