Эта статья - работа над ошибками первого варианта схемы управления питанием Raspberry Pi Zero W v1.1. Теперь работает стабильно, деталей меньше, переходные процессы проще и понятнее. На авторство схемы не претендую, ибо взял то, что предложил в комментариях уважаемый @tklim, отладил на макетке и немного адаптировал под свои нужды.
Кратко напомню критерии, которым должна соответствовать схема:
Обеспечить потребление в выключенном режиме 1 – 2 мкА;
Управление одной тактовой кнопкой (одна группа нормально разомкнутых контактов без фиксации);
Возможность выключения с корректным завершением работы Linux;
Возможность программного выключения устройства без воздействия на кнопку;
Возможность аварийного аппаратного выключения на случай зависания устройства;
Отсутствие программируемых компонентов.
Вариант схемы v2.0

При кратковременном нажатии на кнопку, напряжение питания подается на вывод EN через резистор R1. Через R2 происходит самоблокировка. Стабилитрон ZD1 служит для того, чтобы на GPIO4 устройства не прилетело напряжение выше напряжения питания (3,3 в). Также его наличие гарантирует, что цепочка R1, R2 не станет причиной повышенного напряжения в цепи питания +5v.
Если удерживать кнопку порядка 6 секунд, то конденсатор C1 через резистор R4 зарядится достаточно, чтобы канал транзистора Q1 полностью открылся. В оригинальной схеме от @tklim в цепи затвора этого транзистора стоял стабилитрон на 3,3 в, но при таком напряжении полевик открывается не до конца и просадки напряжения в точке EN недостаточно для выключения стабилизатора. R5 служит для разрядки конденсатора после отпускания кнопки.
Цепь R6, Q2 служит для инвертирования сигнала кнопки. Это особенность устройства, которую следует учитывать. Изменить полярность входа или выбрать другую ножку не позволяют дополнительные шилды, используемые в моём конкретном случае. Если полярность можно бы было поменять, то схему на транзисторе можно бы было заменить цепочкой из резистора и стабилитрона. Возможно, пришлось бы поставить диод последовательно с R1, чтобы эта цепочка из резистора и стабилитрона не запиталась от +5v.
Выключение в штатном режиме происходит при появлении низкого уровня на GPIO4 устройства. Он подтягивает точку EN к земле. В первом варианте я нагородил здесь стрёмную схему на p-n-p транзисторе. Наверное, я пробовал вариант с диодом, но шоттки под рукой не было, а падение на обычном диоде оказалось недостаточным, чтобы отключить схему (да, даташиты надо читать внимательней). Совсем без диода развязки не получается, потому что сразу после выключения питания на GPIO появляется слабый ток утечки, вызванный, вероятно, разрядом емкостей в цепях питания. Этого тока достаточно, чтобы через несколько микросекунд напряжение на EN достигло порога включения стабилизатора.
Заключение
Надеюсь, эта статья сэкономит кому-то немного времени и позволит обойтись без микроконтроллеров и стрёмных запутанных решений там, где можно обойтись парой транзистроров и еще несколькими копеечными компонентами.
KonstantinTokar
Есть семейство микросхем LTC295*, на них интересно было бы увидеть схемку..