Saya ragu bahwa antarmuka USB di Uno memberi Anda nomor seri yang unik. Angka apa pun akan menjadi bagian dari kode yang diunggah ke chip yang karenanya akan sama di antara banyak Unos.
Salah satu pendekatan adalah chip "Silicon Serial Number" DS2401 yang menggunakan antarmuka One-wire. Itu hanya akan memerlukan satu pin gratis, dan beberapa kode (kode akan menjadi masalah, mungkin).
Metode yang paling tidak mengganggu, dan mungkin yang paling dapat diandalkan, adalah dengan hanya membaca kembali kode dan menjumlahkannya. Itulah tepatnya yang saya lakukan dengan detektor tanda tangan chip saya . Namun itu hanya mendeteksi (seperti yang ditulis saat ini) tanda tangan bootloader. Perubahan yang cukup kecil dan bisa MD5-jumlah seluruh kode sketsa.
Contoh output:
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
Jumlah MD5 itu (baris terakhir) secara efektif merupakan tanda tangan dari bootloader tertentu. Faktanya, versi terbaru melihatnya dalam sebuah tabel:
MD5 sum of bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F
Bootloader name: optiboot_atmega328
Jadi yang dapat Anda lakukan adalah, saat mengunggah sketsa, menghasilkan jumlah MD5 dari kode hex. Ada beberapa cara sederhana untuk melakukan itu. Kemudian Anda bisa melakukan operasi "git tag" pada kode sumber Anda, dan kemudian (menggunakan beberapa proses otomatis atau manual) ingat bahwa jumlah MD5 tertentu dari kode hex mewakili kode sketsa pada saat tertentu.
Beberapa jenis database seperti:
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
Sekarang untuk mencari sumber dari papan, Anda menetapkan jumlah MD5 kode (dengan membacanya kembali dari papan) dan kemudian mencarinya di database Anda.