TinyRC: Electronics All Done, Code Mostly Done

    I made a lot of changes to the vehicle electronics in my TinyRC Car beyond just replacing the Raspberry Pi Pico with a Pico-W. I also changed the whole power supply design and simplified the board overall. After several iterations of PCB design, I've worked out all the bugs I know of (with one exception). And after a bit of work I've also finished the vehicle control code, as far as I can imagine. As in, I can't think of anything more features to add. It will require plenty of tuning once the vehicle is actually driving, of course. So I printed up a frame to hold everything, because having half a dozen motors and servos and batteries and lights all dangling off the PCB attached by soldered wires is a bad way to work. It's literally a slice of my vehicle, so it's the exact size of the final 1:36-scale car.

    And it all works perfectly! I have drive motor control and steering servo control and lights control all running flawlessly. Everything flips when the vehicle drive direction flips. I can change between steering modes. I have headlights and tail lights that all indicate turning and backup and braking.

    I did make one small mistake on the most recent PCB which I will fix IF I make another rev. I didn't realize the Raspberry Pi Pico boards only have 16 PWM generators, and they're assigned to fixed GPIO pins. That means multiple GPIO pins are connected to a single PWM generator and that assignment cannot change. Originally I assigned one of the servo control PWM signals to GPIO 6 and the motor control PWM signal to GPIO 22, and it turns out those are both connected to the same PWM generator. So I just changed from GPIO6 to GPIO7 and everything's fine.

    So now I just have to go back to the most tedious part of the whole project, finishing the drivetrain. I have to machine some more tiny parts myself and then assemble everything, probably several times with plenty of bad assumptions and bugs to work out. But two out of three systems done.

    But wait! There's more! I also confirmed that I CAN get a data connection to the Raspberry Pi Picos through the battery controller's USB-C connector! That means I don't need two separate USB connectors, a USB-B micro for programming and debug and a USB-C for charging. I can just have one USB-C connection for both. That also gives me a lot more flexibility in how I arrange parts inside the vehicle. The obvious place for the vehicle's connector is on the bottom, but if the Raspberry Pi USB-micro connector is sticking through the bottom them the other end of the Raspberry Pi board will be sticking out the roof. By using the battery board's USB-C connector, the Raspberry Pi can sit in the middle of the vehicle and not bother anyone. Terrific.