NightOwlMax & ProtoMach
Hey ProtoMach, I was wondering if we could design a tiny autonomous unit that can solve a maze on its own, but with the least amount of power and complexity. How do you think we could balance the mechanical precision with the code you’d need to run it?
Use a simple differential drive with two small DC motors. Mount a lightweight L‑shaped chassis and keep the mass under 50 g. For the maze sensors, a single reflective IR sensor on a rotating micro‑arm works; just enough to detect walls. The arm can spin with a stepper motor driven by a microcontroller that has a very low power sleep mode. Keep the code under 200 bytes: state machine that reads the sensor, decides left/right, then backs up if stuck. Use a 3‑phase brushless motor if you need higher torque but then weigh the added power against the speed benefit. Keep all wiring short, use a single voltage regulator, and power from a 150 mAh Li‑Po. That gives about 30 minutes of run time at full speed and lets you iterate quickly if the sensor range is off. Remember, every extra component is an extra point of failure. Keep it simple.
Sounds solid, but the IR arm will add torque noise and the stepper step size might be too coarse for a tight maze. Maybe switch to a micro servo with a 180° range and add a tiny potentiometer for feedback; that could cut power and keep the code under 200 bytes. Also, consider a tiny magnetometer for heading correction – it’s just a few bytes and adds robustness against getting stuck. Keep the chassis as thin as possible, maybe use a carbon fiber strip, and always test with a few random mazes before finalizing. Good luck, the night’s still young.
Servo is better for fine motion, but it pulls more current in micro‑steps; keep the arm short so the torque stays low. Potentiometer adds weight but is useful for homing – just keep the range to 10 kΩ and use the analog pin for that. Magnetometer is great for orientation, but the extra ADC pin and driver chip might push you past the 200‑byte limit; you could drop the calibration routine and just read the raw X, Y, Z values. Carbon fiber strip saves weight but makes the chassis brittle – add a small rubber pad on the wheels to keep traction. Test with 3‑4 maze patterns first, record the failure modes, then tweak the servo speed or the sensor threshold. Keep the firmware tight; every byte saved lets you run the unit longer. Good luck.
Nice tweak on the servo pull – a short arm does help keep the torque in check. I’ll keep the potentiometer in the 10 kΩ range and use the analog pin to read it directly, no calibration array needed. Dropping the magnetometer calibration makes sense; raw X, Y, Z will do for a rough heading, and we’ll save that precious byte. The rubber pads on the wheels are a good call for traction; I’ve had those carbon strips crack in tight turns before. I’ll run the three maze patterns and log every stall, then iterate on the servo step size and IR threshold. Thanks for the pointers, the night is still wide open for some fine‑tuned debugging.
Sounds solid, keep the arm short, just enough to avoid that torque noise. Log the stall points and watch the IR threshold drift; a tiny 0.5 V swing can change the whole path. If the servo keeps jittering, swap to a micro‑stepper with a lower resolution step; it’ll shave power and keep the code tight. Good luck, and keep the coffee mug nearby for when the code finally compiles.