You are browsing as a guest. Sign up (or log in) to start making projects!

21h 4m 37s logged

Wireless Pico UART REPL via Pi Zero 2W

What I worked on:
Executed the dual-board bridge bring-up: connecting the Raspberry Pi Pico (real-time controller) to the Pi Zero 2W (high-level brain) over a physical UART link. Wired Zero GPIO 14/15 (mini UART TX/RX) to Pico GP1/GP0 (UART0 RX/TX) on a shared power rail, with SWD on GPIO 24/25 for flashing. After flashing fresh MicroPython v1.23.0 via OpenOCD over SWD, set up the MicroPython REPL to duplicate over UART so the Zero can wirelessly talk to the Pico.Hit two blockers: wiring polarity was wrong initially (TX-to-TX, RX-to-RX instead of a null-modem crossover), and os.dupterm(uart, 1) crashed boot.py since RP2040 MicroPython only supports dupterm slot 0. Both fixed, and added core_freq=250 to the Zero’s config.txt to stop the mini UART baud rate drifting with CPU frequency scaling.Followed up (this session): wrote tools/blink.py and uploaded it to the Pico via tools/upload_to_pico.py, confirming the full host -> SSH -> Zero -> UART -> Pico pipeline end-to-end.

What I learned:
Embedded Trap: RP2040 MicroPython’s os.dupterm() only supports slot index 0. Slot 1 is silently invalid, causing a boot-time crash invisible unless you’re watching USB REPL output. Use os.dupterm(uart) or os.dupterm(uart, 0).
Hardware Lesson: Pi Zero 2W mini UART (ttyS0) derives its baud rate from the VPU core clock. Without core_freq=250, frequency scaling causes the baud rate to drift; even a 1% mismatch causes data loss.
SSH Issue: After rebooting the Zero, the SSH host key changed, blocking password login until passing -o StrictHostKeyChecking=accept-new.What’s next: Now that the wireless UART REPL bridge and upload pipeline are verified, next is wiring an MPU6050 + two servos on the Pico for a simple tilt-correction gyroscope test, adding an OLED pitch/roll readout, and smoke-testing the Zero’s PiCam/mic/speaker independently.

0
2

Comments 0

No comments yet. Be the first!