Везде, где использую CAN, ставлю ISO1050 + DC-DC. Хоть оно и больше
места занимает, чем со встроенным, зато значительно более доступно
(на алике недорого). Для 485 и USB тоже всякие ISO применяю (но на USB не так часто нужно). С 232 похуже: приходится обычными опторазвязками изолировать UART, а дальше классический MAX3232.
Кстати, для "ИК-олская" я использовал оптоволоконный удлинитель UART. Парочка (приемник-передатчик) на алике стоит около 2тыр. Скорость до 3МБод на волокне 1м проверял - ОК. На 20м уже похуже, но 115200 уверенно чешет. Думаю, оно еще дешевле было бы, если бы де-факто не являлось "оптическим удлинителем аналогового видеосигнала", который мне нафиг не нужен. А так сам по себе модуль с фотодиодом/светодиодом усилителем и модулятором/демодулятором вряд ли стоил бы дороже рублей пятиста.
На хабарке один товарищ описывал, как на основе обычных SFP-модулей сделал "оптический удлинитель уарта". Правда, с SFP плохо то, что им 2 волокна надо.