Rukus: Pocket Robotics Control Computer banner

Rukus: Pocket Robotics Control Computer

53 devlogs
97h 8m 33s

A modular robotics control platform for small mobile robots!
It features MCU, motor driver, and radio communication, which allows users to focus on programming instead of dealing with hardware hassle.

Features:

  • Minimal size (45mm x 45mm)…

A modular robotics control platform for small mobile robots!
It features MCU, motor driver, and radio communication, which allows users to focus on programming instead of dealing with hardware hassle.

Features:

  • Minimal size (45mm x 45mm)
  • Robust power rail, handling 12V to 5V/3.3V conversion
  • Powerful computation as it uses RP2040 (dual core!!!)
Demo Repository

Loading README...

Hung-Chi Wang

Wiring Cleanup + Stress Test Bug (the last devlog)

Only 1.5 hours logged today but honestly it felt like an eternity trying to make this thing actually usable and not just a ticking time bomb of loose jumper wires lol

Ditching the breadboard
First thing I did was try to make the ultrasonic sensor voltage divider permanent. I literally spent like 45 mins just trying to solder two tiny SMD resistors directly inline with the jumper wires cuz I didn’t want a bulky perfboard hanging off my robot. Trying to heat shrink those tiny connections without melting the actual wires was a literal nightmare bruh. My hands were shaking so bad but it looks so much cleaner now.
Also spent a bunch of time crimping and soldering proper JST connectors for the battery and the 12V DC motors. My fingers are actually numb from dealing with those tiny metal crimps, but hey no more sketchy alligator clips accidentally shorting stuff out!!

The Stress Test (AHHHHH)
Since everything was finally hardwired and looked legit, I decided to run a full system stress test. Wrote a micropython script to run the I2C screen, poll the ultrasonic sensor, sweep the servo, AND blast the DC motors at max speed all at the exact same time.
And guess what happened??? The ultrasonic sensor immediately started spitting out completely garbage numbers again. Like it said my hand was 400cm away when it was literally right in front of the sensors. WTH???
I stared at the serial monitor for like 20 minutes before I realized it was electrical noise from the motors messing with the sensor’s echo pin. Literally the DC motors were just screaming and sending EMI interference everywhere through the board.
Took me another 20 mins to fix it by tightly twisting the motor wires together to cancel the noise and slapping a tiny ceramic capacitor across the motor terminals. Tested it again and BINGO it works flawlessly even at max throttle!

Getting everything to actually play nice together under full load is acc so frustrating but the hardware is FINALLY rock solid. We are officially ready to mount this onto a chassis!!! LETS GOOOO

Btw I also recorded this video to show how many times I failed on making rukus lol

0
Hung-Chi Wang

Final Stage Testing + Fix some little bugs

First I started with the I2C screen……I hooked up the SDA and SCL pins, ran a simple I2C scanner script in micropython, and it returned absolutely NOTHING. I literally spent almost an hour just intensely staring at my multimeter, checking the continuity back and forth between the RP2040 pads and the pin headers, genuinely convinced I had somehow fried the I2C bus during reflow. Turns out the jumper wires I was using were just completely broken internally??? Swapped them out with new ones and BOOM the screen turned on and displayed my text perfectly lol

Next I moved on to the ultrasonic sensor and a servo motor. The servo was pretty chill, just threw some simple PWM code at it and it was sweeping perfectly. But the ultrasonic sensor was returning the most garbage random values ever. Took me another solid hour to remember that the echo pin on the sensor dumps a 5V signal and the RP2040 only takes 3.3V logic…….I almost burnt my MCU again bruh. Quickly slapped a voltage divider on my breadboard setup and it started measuring distances flawlessly

Then came the final boss: the DC motors + the 12V power supply. I was genuinely sweating profusely doing this. I hooked up the massive 12V supply, held my breath, and kept my eyes absolutely glued to the multimeter screen checking the TB66112FNG outputs, making sure it wasn’t somehow dumping 12V straight into my 3V3 logic lines. But the power chain held up like a champ! I wrote a script to ramp up the PWM, and the motors spun up so aggressively the whole board almost flew off my desk lmao

The last two hours were basically just me pulling my hair out fixing stupid little bugs. Like whenever the motors would draw too much current on startup, the I2C screen would just randomly glitch out and freeze. Stared at my multimeter AGAIN watching the voltage dip on the rails, and finally realized I needed to add some way bigger decoupling caps to smooth out the spikes.

Honestly my brain is completely fried rn from staring at tiny wires for 5 hours, but EVERYTHING WORKS. All the GPIOs, the 12V power delivery, the sensors, everything. WTH I can actually build the robot now. Wait for the next update!!!

0
Hung-Chi Wang

Reflow attempt 4

FIVE HOURS DUDE. I literally sat at my desk for 5 straight hours today but guys it was SO WORTH IT. After the absolute jankiness of attempt 3 where the board was hanging on by a thread at 2.35V with a missing pad, I decided I couldn’t live with that for my actual robotics controller. I needed a fresh, perfect board LMAO

The Reflow

I grabbed a brand new PCB, whipped out my flux and paste, and literally locked in. I was so insanely careful this time, taking my time with the hot air gun instead of rushing it. And guess what??? It came out SO CLEANLY. Like acc the cleanest SMD reflow I have ever done in my life. No sketchy solder bridges on the RT6150B, no ripped pads, nothing. I just went ahead and populated the entire board in one go—the AP62401, RT6150B, RP2040, the crystal, the flash, and the TB66112FNG motor drivers.
I plugged in the USB-C, and BOOM. Both the 5V and 3V3 indicator lights lit up super bright immediately. My computer detected the RP2040 instantly, and the micropython UF2 loaded on the first try. NO BOOTLOOPING AT ALL. I actually almost cried ngl.

The Assembly & Motors

Since the core was finally working flawlessly, I went ahead and fully assembled the rest of the board. It was time for the ultimate test: the actual robotics part. I hooked up my lipo battery and wired the DC motors to the TB66112FNG outputs
Wrote a quick test script in micropython to toggle the PWM signals to the motor driver, and guess what? IT WORKED FLAWLESSLY. The motors started spinning exactly how I programmed them to. The power supply was taking the battery voltage and feeding the motors like a champ

The Diodes snd the he Weird Bug

So the Sch smth diodes (Schottky) I added to the circuit actually worked perfectly!! They successfully allowed me to keep the board powered safely so I could code and test the motors at the exact same time without blowing up my laptop’s USB port lol
BUT here is the annoying part that took me forever to figure out………. for some reason, I couldn’t acc change or upload new code when BOTH the USB-C and the battery were plugged in at the same time. Like Thonny would just freeze and my laptop would refuse to save the script to the board. I was staring at my screen like WHYYYY????
I honestly think it might be some weird voltage conflict or the power switching slightly messing with the RP2040’s USB data lines?? I spent over an hour debugging it and checking my schematic, but honestly I just gave up cuz it’s not even a big deal. As long as I just unplug the battery when I need to flash new code, and then plug it back in to run the motors, it works perfectly fine lol
I am just so happy rn. After frying chips, shorting 5V to GND, endless bootloops, and dealing with ripped pads for weeks, Rukus is finally ALIVE and fully functional. Time to actually build the pocket robot chassis for this thing!! Wait for the next update

Attachment
0
Hung-Chi Wang

Reflow attempt 3

Alr after the endless bootlooping from attempt 2, I finally got it working but man it was a mess
So since the board was just rebooting non-stop last time, I thought maybe the RT6150 got internally cooked when I left those bridges on. So I decided to completely swap the regulator one last time using my hot air gun
I was trying to be careful but guess what??? A pad peeled off. I literally stared at it and thought my board was dead cuz usually a peeled pad means the entire PCB is just done for……..
I inspected the damage under the microscope and realized the pad that ripped off was VINA. I was like NOOO way this is gonna work now cuz it’s a power pin
But since I was already there I just soldered the new RT6150 on anyway, hoping the internal connections between VIN and VINA inside the chip would somehow save me lol
I plugged in the USB-C expecting it to fail………. but the 3V3 indicator light actually turned on???
I immediately grabbed my multimeter and tested the output. Instead of giving me the 3.3V I needed, it returned exactly 2.35V. I was so confused like why 2.35V??? It must be because the VINA pad is gone so the power chain is struggling
BUT HERE IS THE CRAZY PART. I plugged it into my laptop, and the RP2040 POPPED UP on my screen! AND IT DIDN’T BOOTLOOP!!!!
Like how in the world is it working???? Turns out 2.35V is acc lucky enough to be within the bare minimum operating voltage for the RP2040 and the flash memory to communicate without dying lol!!! It’s literally hanging on by a thread but it transfers data and micropython acc runs!
I am just so glad right now ngl, like the amount of stress this power delivery gave me was insane. Even tho it’s running on 2.35V and one pad is completely gone, the core functionality is finally there and I don’t have to sacrifice another RP2040
Imma probably just tape it down and never touch that part of the board again lol, wait for the next update
*** You can see how the LED at the bottom right is very dim

Attachment
0
Hung-Chi Wang

Reflow attempt 2!!

After waiting for another two weeks I finally received the new PCBs and yes there was some significant progress but also it’s still not fully functional

What works

  • Instead of reflowing the entire board, I decided to play safe and only reflowed the AP62401. This confirms if my board can actually turn 12V into 5V, and if it can acc feed it into the next stage (which is the RT6150B)
  • At first I forgot to solder the two 22uF caps, which prevented the output from correctly providing a stable 5V. But then ofc I populated the two big caps, and it turned out 4.7V, which was close enough for the RT6150P!!!
  • Then I decided to populate the entire board including the RT6150B and all the other ICs including RP2040, crystal, TB66112FNG, and USB-C
  • At first the 3V3 indicator light didn’t turn on till I realized how i didn’t wipe out the bridges on the RT6150 (almost burnt it damnn). Finally RT6150 didn’t betray me lol, it gave out 3.18V to the RP2040 which ig enough for the RP2040 to run

What failed

  • Even tho my laptop successfully detected my RP2040 and could somehow transfer data (?) it just kept rebooting no matter what
  • I tried to fix it by reflowing the flash again and thought it might help but NOPE. Then I swapped out the flash and replaced it with a new one and it FAILED AGAIN. I then reflowed the crystal again to make sure it’s not because the clocking issue but guess what NOPE. Then I swapped out with a working one but still the issue remained……….
  • I really dont think it’s cuz of the RP2040 but just in case I still reflowed it but bruh I don wanna sacrifice my thing again

Conclusion

The issue might because somehow the parts were burnt because of my initial mistake whne i frogot to clean up the bridges on the RT6150 (which i truly doubt). I mean the 3.3V indicator light didn’t even light up, which shows how the short circuit might only happened internally in the regulator rather than dumping excessive voltage……….
Anyways Imma try again these days, wait for the next update

Attachment
0
Hung-Chi Wang

After learning so much about impedence I finally implemented signal integrity
This is board is very messy both electrically and signally and the reason is bc of how it’s a 2-layer board and signal lines and buck converters are all on the same GND
I was playing around with the calculator and redrawing traces in kicad while watchin videos from Phill’s lab and this really helped me alot while implementing the signal lines D+ and D-
Next up I’ll reroute everything like all the GPIOs cuz they will be used for SPI and thus the lengths and widths are all very important

Attachment
0
Hung-Chi Wang

HOHOHOHO after tons of trials and errors Im ready to order the board for the 4th time!!!
I fixed a bunch of stuff (alr just look at the following):

  • Changed caps to 1206
  • COnnected STBY (what an upgrade huh you can finally turn on or off the motor driver!?
  • Added another copper pour for VBUS
    I ran DRC for everything im abt to order again and rerendered the perfect demo lol
    LETS HOPE THIS WE MAKE THE SHOT cuz bruh if we dont i have nothign else to say…….
Attachment
0
Hung-Chi Wang

Spent some time adding the radio (nrf24l01) but WHY DOES IT LOOK SOOOOO CHOPPED
ngl it genuinely looks like frankenstein lol
Anyways I havent acc finished routing it but I willll
Im also planning to order the two versions so that I can know if it’s actually bc of the radio that causes issues

Attachment
0
Hung-Chi Wang

Fixed the RT6154A by diconnecting the VINA and VIN, i mean it’s acc the same fix as the RP2040 devboard so dont be surprised if they look the same lol
Btw I also tried the optimize the power route even more cuz of how FB resistors should be closer to the IC
Now let’s hope it’s acc rock solid

Attachment
0
Hung-Chi Wang

OMG I couldnt believe it acc worked!!!
Imagine adding ur own antenna and put everything togethr and it just magically worked!?
THIS IS INSANE, check out the video to see how it replaces my original setup
Btw next up, combine nrf24l01 with the robotic module!!

0
Hung-Chi Wang

OOOOOOOO guess what I finally got to reflow my nrf24l01 module!! And at the start it couldnt really communicate cuz of a bridge between two pins (i forgot what they were) but then i figured out using my super sharp eyes and unbridged them using my PINECILLLLL
I also spent alot of time fixing the layout which then I realized how 10uF input caps dont need to be 1206……..(wat a waste of time/space bruh :(
But amyways a huge success in the radio module even tho I still need to test out if it can acc blast out and receive messages……..

Attachment
0
Hung-Chi Wang

Ok just made a couple more changes before ordering the board

  • Rearranged the TP pads to reduce clusters
  • Added a 0.1uF cap near the motor control pins
  • Added a couple more copper planes for VBUS and VSYS
Attachment
0
Hung-Chi Wang

WOOOOO made a couple big changes!!

  • Replaced the big expensive inductor for RT6154AGQW with a 1206
  • Fixed TONS OF LAYOUT ISSUE, such as inductor placement, capacitor placements for buck convertors etc
  • Added 12V and VBUS copper plane (new skill GET
  • Redrew many traces such as Aout1/2 with much thicker ones (1mm)
    And now the entire thing looks much much much solid ig :)
Attachment
0
Hung-Chi Wang

Spent an hour organizing the crystal cluster cuz it looked kinda ugly and too close to each other which made them kinda hard to solder……anyways here’s the new result

Attachment
0
Hung-Chi Wang

After the failure, just in case it’s bc of any design issue here’s a couple changes I made:

  • Removed RUN by simply crossing it out
  • Replaced 10uF cap for AP62401WU with ceramic cap
  • Removed PSYNC as it occupies GPOI23 and I just wanna get it work so bascially removed some complexity
  • Added a couple TP pads just to make sure i wont blow anything up again when testing lol
Attachment
0
Hung-Chi Wang

GUYSSS I finally got my boards and gave the very first shot!
I gotta be honest popularizing the board is the most boring process, and it took me almost 1 and a half hour……And after spending almost one more hour of repairing I FAILED TRAGICALLY
But anyway here’s the result (look at the picture below
***Note that the hours were recorded the day before but now I finally have time to devlog

Attachment
Attachment
0
Hung-Chi Wang

Finished and ordered my custom radio module!

  • Cleaned up DRC (pls ignore lots of clearance issues as it was simply bc of the custom antenna
  • Sorted out BOM
  • Added tons of vias
  • Removed solder mask (acc i wanted to test out both with and without solder mask
  • Submitted my order
  • Rendered the custom board
Attachment
1

Comments

iwantpizza10
iwantpizza10 about 2 months ago

cool project! unfortunately i think you may have left a shipping address in that screenshot

Hung-Chi Wang

Spent some time on routing the my radio PCB, checking DRC, and re-arranging the layout
*** Damnn I just realized that I shouldn’t switch 0402 components to 0603 cuz the radio might somehow be detuned……..

0
Hung-Chi Wang

Finished prototyping using my RP2040 custom devboard!!!
This basically validates my design for the PCB as it uses the exact same parts except different PWM pins
*** Note that I haven’t added nrf24l01 in my design as radio is very unpredicatable

1

Comments

Anass Zakar
Anass Zakar about 2 months ago

cool stuff! good luck!

Hung-Chi Wang

YAYYYYYY this time I prototyped on my RP2040 devboard and DRV8833 even tho I gotta use an Arduino Uno for power supply. I tried to power L298N from my custom board but it didn’t work cuz the current spikes are crazyyyyy. But anyways huge success, next up imma connect it to my radio nrf24l01 and see how it goes

0
Hung-Chi Wang

Huge success!!! I finally made two custom RP2040 boards communicate with each other through nrf24l01, and next up imma wires them to my custom board

0
Hung-Chi Wang

Just tested out the transmitter, while testing out my RP2040 custom devboard!!! (huge success)
Pins:

  • CSN: GP12
  • MOSI: GP7
  • CE: GP11
  • SCK: GP6
  • MISO: GP4
0
Hung-Chi Wang

DAMNNNN I just picked all the parts manually……guys MANUALLY
IT TOOK ME SO MUCH TIME (look at the price :( SO EXPENSIVE
*** BTW I also discovered how I accidentally used 0603 for a 10uF cap, but we got solutions lol

Attachment
0
Hung-Chi Wang

Damn I kinda messed up the reference number and the parts………I didn’t know that I needed to use 0402 lol
Anyways we can finally get into PCB layout and routing!!!

Attachment
0
Hung-Chi Wang

OOOOOOOO finally got to the most exciting part cuz guys radio is very sensitive to any changes!!!
But anyways WE GOT THIS lol
Btw i also picked the cyrstal (YXC Crystal Oscillators X49SD16MSD2SC) from LCSC let’s hope it works

Attachment
0
Hung-Chi Wang

DAMNNNNN easyeda cannot export to kicad for some reason………So I gotta draw a new one myself. Anyways after spending some time here’s the beautiful result

Attachment
0
Hung-Chi Wang

Here’s a couple things I changed before moving on to nrf24l01 radio

  • Changed 0603 47uF capacitors to 1206 so that it can handle 25V spikes
  • Rerouted everything around the two capacitors
  • Double checked the schematic and cleaned up the layout
Attachment
0
Hung-Chi Wang

After struggling for 2 hours, finally replaced the two inductors with 4mm x 4mm one!!!
*** You’ll see how much I struggled in lapse lol

Attachment
0
Hung-Chi Wang

NOOOOOOOOO I just noticed that I picked the wrong inductors……….I accidentally picked the 0201 one and that doenst allow enough current (like nowhere close)
*** Look at the highlighted part

Attachment
0
Hung-Chi Wang

WOOOO I spent so much time on fixing and rerouting AP62401WU……

  • Added a Schottky diode to prevent current from leaking back feeding to AP62401WU
  • Changed the placements of AP62401WU output capacitors as they may generate tons of voltage ripples and malfunction other delicate ICs (look at the highlighted components)
Attachment
0
Hung-Chi Wang

Well well well for the past two hours I was designing my nrf24l01 antenna and trying to implement it into my design
I thought I couldve just imported other people’s designs but HELL NAH
Here are a couple options that I can refer to tho

  • AN043
  • AN2731
  • AN91445
    But ofc i lean towards the first one and im probly gonna copy that too lol
Attachment
0
Hung-Chi Wang

Shipped this project!

I finally learned how to add modules that ive never used before (the two voltage regulators) to my RP2040 board so that users can simply plug in 12V power supply without worrying about the chip burning out
This is huge cuz I can now confidently read datasheet and basically build anything I want!!!
Btw I’m about to order it but I’ll ship it first lol

Hung-Chi Wang

Alr last devlog before ordering!!
Double checked everything including adding more vias and ran DRC twice
One last glance at my beautiful PCB :)

Attachment
0
Hung-Chi Wang

I spent some time on reading RP2040’s datasheet again and learned that there’s only two SPI and I2C engines, with 8 slices of PMW

  • Read RP2040’s datasheet
  • Fixed PMWA and PMWB routing
  • Rerouted USB-C cuz I decided to swap it with the 01x04 pin header
    **Now you can see all the parts beside USB-C are rerouted and USB-C is also moved to the top-right corner
Attachment
Attachment
Attachment
0
Hung-Chi Wang

Here’s wat i did for the past two hours

  • Added a 100uF polarized capacitor to prevent 12V spikes
  • Rerouted the 12V connection part AGAIN OMGGG
  • Edited RT6154AGQW footprint
  • Cleaned up DRC errors
Attachment
Attachment
0
Hung-Chi Wang

Finally finished routing!!!

  • Rerouted “EVERYTHING” for the two voltage converters (you can see it in my lapse
  • Reassigned PWMB to GPIO27 so that I could add some more vias
  • Routed everything and cleaned up the silkscreen
Attachment
Attachment
Attachment
0
Hung-Chi Wang

OMG this is getting frustrated!!! I really should’ve used 4 layer board lol
Cuz now Im having two troubles

  • Some GND pins are still unconnected
  • There are two pins far apart……but they are blocked by traces from MCU DAMN
Attachment
Attachment
0
Hung-Chi Wang

After two and a half hour of hard work, I almost finished the routing!!!!

  • 0.18mm
  • 0.20mm
  • 0.30mm
  • 0.50mm
  • 1.00mm
    There’s really nothing to say about this process, it’s just fun lol
Attachment
Attachment
0
Hung-Chi Wang

I roughly positioned all the main components and changed the number of output pins to allocate for GND and 3V3

  • Motor driver at the front, far away from RP2040 chip
  • 45mm x 45mm dimension
    *** I would still need to change the order of pin headers to reduce intersections as much as possible
Attachment
Attachment
0
Hung-Chi Wang

Completed the schematic for AP62401 (12V to 5V) and TBTB6612FNG!!!
Damn and I just realized that TBTB6612FNG is actually the chip itself lol
Any way here’s a little diagram explaining how the power supply works:
12V –> AP62401 (12V to 5V) –> RT6154AGQW (5V to 3V3) –> MCU
–> TBTB6612FNG –> Motors

Attachment
Attachment
0
Hung-Chi Wang

I was figuring out how to wire the RT6150AGQW

  • Pico schematic uses RT6150B-33GQW but apparently no one is selling it or it’s too expensive
  • Ricktek only shows the minimal design so I have to figure the math
    R1 = R2*(Vout/Vfb - 1)
  • Imported symbol and footprint for both RT6150AGQW and MBR120VLSFT1G
  • Fixed the symbol to stay organized
Attachment
Attachment
0
Hung-Chi Wang

I roughly completed my schematic while referring to pico schematic
Here are sth I noticed:

  • Should use RT6154A instead of MCP1700x-330xxTT for larger current
  • Add schottky diodes if external power supply is needed
  • Connect GPIO24 and 23 to RT6154A to monitor whether the board is either using battery or USB to switch between PWM and power saving mode
Attachment
Attachment
0
Hung-Chi Wang

For the past hour I was reading TB6612FNG schematic and trying to apply it to my own. But here were the problems:

  • I wanted to supply my RP2040 through both USB (5V) and battery (12V)
  • What pins should I keep and crossed out cuz I wanted it to be minimal
Attachment
1

Comments

Hung-Chi Wang
Hung-Chi Wang 4 months ago

There was another image showing my shcematic but I DONT KNOW WHY IT’S GONE