Ho risolto con un convertitore di livello decente, la resistenza introduceva una distorsione dei fronti d'onda nel segnale e sballava i timings. Risolto, grazie a tutti, alla fine è sempre un problema di tensioni.
Comunque ho adottato un approccio diverso, ho usato due pin, uno IN e uno OUT tra raspberry e arduino, ho fatto uno script bash su linux che mi gestisce avvio e spegnimento, facendo un polling sull'IN e segnalando sull'OUT quando ha raggiunto un certo punto nel caricamento dei moduli, in sostanza quando riesce a pingare il rooter, viceversa allo spegnimento quando ha stoppato i servizi e smontato sufficenti moduli da non causare piu danni se tolgo tensione, poi aspetto un timer di una 15na di secondi e tramite un relè tolgo tensione.
PS
Comunque una cosa, voi dite che non si riesce a mandare i dati piu di 9600... Ho usato un adattatore UART/USB con un cp1202 e raggiunge tranquillamente i 115200, in TX almeno, in RX non ho provato, ma devo solo inviare stringhe a fiume senza controllare niente quindi...