2

When I power the pico by usb (either from my pc or a powerbank) and run my micropython script to read from UART0, it reads the incoming data (NMEA sentences) perfectly fine.

However, if I power the pico via an external 5v via VSYS or VBUS(avoiding connecting any usb) then the input received is just a load of \x00\x00\x00\x00\x00 garbage characters.

While debugging I also print out the voltage on every input and it seems stable on both USB/external.

I had a similar issue in the past with a pi4 where I needed a reference ground along with the nmea in/out for the data to show correctly. However I don't think this is the issue otherwise I'd expect it to also be garbage when powered by USB. I did notice that if I connect the external ground while powered via usb then it does get the same garbage input. Not sure what this means though, more of a dev than an electronics guy.

Any help would be appreciated because I'm at my limit of knowledge and can't find anything useful on google.

Crude wiring drawing below. The purple section powering the pico is when it doesn't work vs the green usb power that does work.

Crude wiring drawing:

*Edit: Updated the read vsys code. Think this is now correct. Also updated the logs with this in mind.

Debugging when connected to USB power:

---- main.py starting ----
vsys: 4.917295
Attempting to connect to wifi
Attempting to connect to wifi
Wi-fi Connected. IP: 192.168.1.5
Initialise: {'trueWindSpeed': '', 'trueWindAngle': '', 'speedOverGroundKnots': '', 'depthMeters': '', 'latitude': '', 'apparentWindAngle': '', 'longitude': '', 'apparentWindSpeed': '', 'apiToken': 'Ryan2020', 'temperatureCelcius': ''}
buf: b'$GPGGA,193936.59,5349.064,N,00140.487,W,1,09,0.98,128.18,M,47.94,M,,*46\r\n'
vsys: 4.893124
buf: b'$GPGLL,5349.064,N,00140.487,W,193936.59,A,A*77\r\n'
vsys: 4.893124
buf: b'$GPGST,193936.59,6.21,2.22,1.42,000.0,2.13,1.55,4.31*5B\r\n'
vsys: 4.883456
buf: b'$GPGSV,6,6,22,196,00,000,0,197,00,000,0*78\r\n'
vsys: 4.871371
buf: b'$GPRMC,193936.59,A,5349.064,N,00140.487,W,0.0,052.4,160323,000.5,W$GPGSA,,3,1,3,10,14,32,66,67,81,82,,,,,0.98,*47\r\n'
vsys: 4.866537
buf: b'$GPGSV,6,1,22,1,62,277,23,3,23,214,28,10,22,051,27,14,32,290,21*7B\r\n'
vsys: 4.895541
buf: b'$GPGGA,193938.59,5349.064,N,00140.487,W,1,09,0.98,128.42,M,47.94,M,,*47\r\n'
vsys: 4.914878
buf: b'$GPGLL,5349.064,N,00140.487,W,193938.59,A,A*79\r\n'
vsys: 4.917295
buf: b'$GPGST,193938.59,5.69,2.19,1.38,000.0,2.07,1.55,4.14*5D\r\n'
vsys: 4.902792
buf: b'$GPGSV,6,2,22,17,14,309,19,21,88,024,24,22,27,113,25,24,04,012,26*7B\r\n'
vsys: 4.91246
buf: b'$GPRMC,193938.59,A,5349.064,N,00140.487,$GPGSV,6,3,22,27,15,144,21,32,34,081,27,66,58,088,32,67,33,165,26*7E\r\n'
vsys: 4.922129

Debugging when connected to 5v external via VSYS or VBUS:

---- main.py starting ----
vsys: 4.953701
Attempting to connect to wifi
Attempting to connect to wifi
Wi-fi Connected. IP: 192.168.1.5
Initialise: {'trueWindSpeed': '', 'trueWindAngle': '', 'speedOverGroundKnots': '', 'depthMeters': '', 'latitude': '', 'apparentWindAngle': '', 'longitude': '', 'apparentWindSpeed': '', 'apiToken': 'Ryan2020', 'temperatureCelcius': ''}
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.01171

vsys: 5.006876
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 4.956118
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 4.992373
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.130144
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 4.985123
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.01171
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 4.997208
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 4.987539
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.009293
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.014127
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.023795
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.021378
buf: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
vsys: 5.028629

read_vys() function

def read_vsys():
    pin = machine.ADC(29)
    adc_reading  = pin.read_u16()
    adc_voltage  = (adc_reading * 3.3) / 65535
    vsys_voltage = adc_voltage * 3
    return vsys_voltage
12
  • 1
    Updated the logs above with new vsys read function and logs. I did notice something strange though that if I connected the external ground while powering from USB, then I would get the same garbage output. Not sure if that will help anyone but doesn't really make sense to me other than the reference ground thing I mentioned before. Commented Mar 16, 2023 at 19:41
  • 1
    I've also just noticed that my pi pico powers up with only the voltage wire connected which doesn't seem right? It's on the same battery as my raymarine mfd (gps nmea out). Does this mean there's a ground loop that shouldn't be there and if so do I simply need an isolated buck converter? Commented Mar 16, 2023 at 23:58
  • 1
    measure power supply voltages in the system ... choose one point as reference and measure all V+ and GND relative to that point ... maybe use the battery negative terminal as reference ground
    – jsotola
    Commented Mar 17, 2023 at 1:33
  • 1
    The drawing is vague and it is unclear what is connected to what. Draw a proper circuit. There is a circuit tool in edit toolbar. DO NOT put details in Comments x edit your question.
    – Milliways
    Commented Mar 17, 2023 at 5:55
  • 1
    @tlfong01 that sounds more like it could be the issue. From some more debugging I think I need to use an isolated buck converter to power the pi as I think otherwise there's a ground loop around the whole system. Which would explain why the Pico powers up with just the voltage cable. As I'm not family with electronics is that pretty much the same point as you've commented? Commented Mar 17, 2023 at 20:50

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.