Uno의 USB 인터페이스가 고유 한 일련 번호를 제공하는지 의심합니다. 임의의 숫자는 칩에 업로드 된 코드의 일부이므로 여러 Unos에서 동일합니다.
한 가지 방법은 One-wire 인터페이스를 사용하는 DS2401 "실리콘 일련 번호"칩입니다. 단 하나의 빈 핀과 일부 코드 만 있으면됩니다 (코드가 문제 일 수 있음).
가장 방해가되지 않는 방법이고 아마도 가장 신뢰할 수있는 방법은 단순히 코드를 읽고 합계를 확인하는 것입니다. 이것이 바로 칩 서명 탐지기로하는 일 입니다. 그러나 (현재 작성된) 부트 로더 서명 만 감지합니다. 약간의 변경으로 인해 전체 스케치 코드를 MD5로 요약 할 수 있습니다.
출력 예 :
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
MD5 합계 (마지막 줄)는 사실상 해당 특정 부트 로더의 서명입니다. 실제로 가장 최신 버전은 표에서 찾습니다.
MD5 sum of bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F
Bootloader name: optiboot_atmega328
스케치를 업로드 할 때 16 진 코드의 MD5 합계를 생성하면됩니다. 그렇게하는 매우 간단한 방법이 있습니다. 그런 다음 소스 코드에서 "git tag"작업을 수행 한 다음 (자동 또는 수동 프로세스를 사용하여) 특정 MD5 16 진 코드 합계가 특정 시점의 스케치 코드를 나타냅니다.
어떤 종류의 데이터베이스는 다음과 같습니다.
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
이제 보드에서 소스를 찾으려면 보드에서 코드를 다시 읽음으로써 코드의 MD5 합계를 설정 한 다음 데이터베이스에서 찾아보십시오.