Программа при запуске определяет, например, что это ESP-01 и соответственно понимает, что у нее есть 4 порта ввода-вывода.
Т.е. чтоб не делать два вида прошивок или не заводить бит конфигурации.... - взяли чистую esp, прошили и программа поняла куда ее прошили
Есть устройство в 2-х работающих версиях: в первой используется esp-01 и управляет 2 реле и 2 концевика, а в новой версии уже 4 реле и 3 концевика. Все концевики изначально разомкнуты и по ним не определить. Допаивать что-то не вариант - вскрывать работающие устройства никто не даст.
Может есть какая функция, которая возвращала инфу, по которой можно определить что за esp используется?
Чип во обоих случаях один и тот же - ESP8266EX.
ESP-01 и ESP-12 - это не чипы, а модули. Отличаются дизайном и в частности объемом флеш памяти. В вашем случае думаю этого критерия достаточно. ESP-01 с 4МБ памяти не бывает (если только самому флеш не перепаять)
Или анализируйте их схемы - может найдете где какой пин по-другому подтянут. Но вряд ли, и это еще более сомнительный путь.
Если нет возможности визуально увидеть саму плату и вам нужно определять при запуске, то можно сделать вывод подсказки в монитор порта при подключении к компьютеру или подключить экранчик, например 1602 и при запуске выводить информацию на экран. Вам придется создать 2 программы: для 01 и 12 с соответствующим названием. Если это ваш вариант, можно поговорить подробней.
Я могу предложить еще такой "забавный" универсальный вариантик первоначальной инициализации...
1. Отслеживаем самый первый запуск программы (через запись переменной в NVS).
2. Во время первого запуска в основной код не заходим, а включаем 2 прерывания от "концевика 2 модуля -01" и от "концевика 3 модуля -12" и ждемс "нажатия кнопочки"...
3. По тому, какое прерывание сработало, определяем что установлено внутри (пишем в NVS) и в путь...