Если в устройстве применяется LiIon, то применять следует спец. микруху, например от TI bq24070. Лучше самому не сделать.
В случае же применения других аккумуляторов, конечно, все не так просто. Я применял схему аналогичную как в первом сообщении. Транзисторы использовал сборные,так что все получилось не так уж дорого и не так уж массивно. Аккум был 12В свинцово-кислотный. В схеме так же присутствует зарядка аккума с контролем тока и напряжения на TPS61165DRVT. Вообще то это контроллер питания светодиодных линеек, но как выяснилось 12В-аккум заряжать от 3.6В ей можно так же хорошо.
Единственные нюанс системы в том, что управляет всем микроконтроллер в реалтайме, без компараторов и прочего. Даже при этом STM32 жрет не так много электричества - нормально для трекера. Мониторинг внешнего питания происходит "аналоговым вочдогом", оцифровка - около 10k/sampl на сигнал - этого хватает, чтобы происходило безболезненное переключение на аккум. При разряде аккума ниже определенного порога микроконтроллер сообщит на сервер об этом и выключит подачу питания аккума при этом происходит полный разрыв цепи питания и ток не течет.
Самое сложное тут пожалуй - управление TPS61165DRVT когда не подключен аккумулятор - она очень быстро разгоняется до 40В что опасно и требует особого отношения к коду, который ей управляет (у меня микроконтроллер непрерывно автоматом определяет подключен или не подключен внешний аккум по напряжению и току в него). Или например когда аккумулятор на горячую отключается - нужно мгновенно загасить драйвер. Это сложновато, зато интересно)). Надеюсь кому нибудь пригодится:
Схема