Уникальный идентификатор

sigma_shig
Offline
Зарегистрирован: 30.12.2016

А есть ли на плате Arduino какой-то уникальный идентификатор? Проблема: есть несколько плат ардуино, в которые загружается один и тот же скетч. Нужно как-то идентифицировать плату. Да, я понимаю, что можно перед загрузкой модифицировать одну цифру. Но хочется чего-то более цивилизованого. Платы одинаковые - MEGA. Так что полагаться на идентификатор процессора нельзя.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А в EEPROM хранить не вариант?

sigma_shig
Offline
Зарегистрирован: 30.12.2016

В принципе, можно и в EEPROM. А никакого встроеного идентификатора нет?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не знаю, не встречал, но специально и не искал. Посмотрите в даташите.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

sigma_shig пишет:

А никакого встроеного идентификатора нет?

Нет.

sigma_shig пишет:

Так что полагаться на идентификатор процессора нельзя.

Вообще-то, как раз и пользуюся unique ID микроконтроллера (например в STM32 есть). Но в микроконтроллерах AVR это к сожалению не реализовано.

ID платы и быть не может, т.к. плата - это просто кусок стеклотекстолита/гетинакса с напаянными детальками.

a5021
Offline
Зарегистрирован: 07.07.2013

Внутрь загрузчика зашить, но потребуется повозиться с сотавлением индивидуальных загрузчиков по числу наличествующих ардуин.

sigma_shig
Offline
Зарегистрирован: 30.12.2016

Тогда явно проще зашить в EEPROM

ratman
Offline
Зарегистрирован: 11.10.2015

ds18s20 повесить? и уже его номер читать?

sigma_shig
Offline
Зарегистрирован: 30.12.2016

ratman пишет:

ds18s20 повесить? и уже его номер читать?

А ведь это идея :). Только тогда проще и дешевле на аналоговый вход подвесить резистор.

ratman
Offline
Зарегистрирован: 11.10.2015

Ну, можешь ds1990 повесить, они дешевле в два раза, но здорооовые...

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016
wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

А нельзя уточнить, чем __DATE__ и __TIME__  не подходят, в которых компилятор оставляет дату и время компиляции? Вполне себе уникальный идентификатор, причем, без анальной маструрбации, доступен всем и всегда в любой среде Ардуино.

sigma_shig
Offline
Зарегистрирован: 30.12.2016

Не подходит тем, что у меня несколько контроллеров, и я должен точно знать "имя" каждого. И DATE, меняющееся каждый раз - не самое лучшее имя. Тем более, что скомпилировал я один раз, а потом просто заливаю этот hex на плату. Так что DATE будет одинаковым

ivdor
Offline
Зарегистрирован: 06.06.2016

 А можно узнать все же цель идентификации? Разные куски программы?

И пины все используются, чтоб перемычку повесить?

sigma_shig
Offline
Зарегистрирован: 30.12.2016

Цель идентификации: Несколько ардуин в системе "умного дома". Каждая с Ethernet Shield. Надо выдать им MAC адрес так, чтобы можно было в таблице DHCP прописать статический IP. Да, скорее всего, наиболее правильно будет повесить на какой-то аналоговый порт резистор, для каждой платы свой.

sadman41
Offline
Зарегистрирован: 19.10.2016

Вот тут пишут, что какие-то уникальные данные всё же есть: http://www.avrfreaks.net/forum/unique-id-atmega328pb . Может быть, конечно, уникальный мусор... Я читал эти 0x0E..0x17 через boot_signature_byte_get() на десятке 328-х - похожих не нашёл. Вида они такого: 0x593534313130FF05100C, 0x573634313038FF07140A, 0x553533343638FF102311 и т.д. Считаю, что в пределах дома повторов не будет. 

a5021
Offline
Зарегистрирован: 07.07.2013

sadman41 пишет:
Вот тут пишут, что какие-то уникальные данные всё же есть: http://www.avrfreaks.net/forum/unique-id-atmega328pb .

Только пишут там про мегу328пб, что не одно и то же с мегой328п.

ivdor
Offline
Зарегистрирован: 06.06.2016

Так маски-то могут быть похожими :)

Понятно, что для 328пб наличие серийника (9 байт) даже прописано в даташите. Но кто знает, может и в других есть :)

 

А дуина на чем ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Так я на стандартно-китайских Nano, Mini Pro, Freeduino читал. Сейчас вот глянул на первой попавшейся - 328p. И даже, если мне не изменяет память, на Micro clone... Там у нас 32u4, вроде.

В конце концов попытка - не пытка, MCU не взорвется.