This is an old topic but would like to add some comments that can be useful to someone having this kind of issues. I have an expansion board 3 with a Wipy, using the SD card and some sensors, and everything is working well being powered throu USB or battery. I had some issues that were fixed by following these steps:
When powered by battery, P19 and P20 are affected by RTS and CTS respectively, and it was blocking one sensor I have connected to those pins. Removing those jumpers from Expansion Board resolved this issue.
Don't use P8 with any sensor if you are using SD card. Looking at the Wipy3 pinout, I suppose the same is true for P3, P9 and P10. Even thou, P10 is also connected to the user button, then I configured it as an input pin with pull=PULL-UP, and avoid read/write SD operations and user button clicks at the same time.
Also, this post helped me with a weird behavior of user button when using the battery: https://forum.pycom.io/topic/7364/exp-board-user-push-button/3?_=1648562954689
I connected the 10K pull-up resistor to P8 as indicated in the expansion board documentation, but honestly, I don't understand why it's needed.
Most of these "tricks" are not clearly documented and I found them reading several posts and connecting ideas between them. In my opinion, Pycom boards are very good in general (with a very few details that could be improved), but as said in many places, its documentation should be reviewed to add many things like these that one has to chase reading somewhere else or by try/fail methods.