element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi Projects
  • Products
  • Raspberry Pi
  • Raspberry Pi Projects
  • More
  • Cancel
Raspberry Pi Projects
Blog XR-1000 Chassis and Electromechanicals: Putting it Together
  • Blog
  • Documents
  • Events
  • Polls
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi Projects to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shabaz
  • Date Created: 4 Jul 2022 4:22 PM Date Created
  • Views 5717 views
  • Likes 15 likes
  • Comments 32 comments
  • rpiintermediate
  • robotics
  • robot
  • xr-1000
  • pi pico
Related
Recommended

XR-1000 Chassis and Electromechanicals: Putting it Together

shabaz
shabaz
4 Jul 2022

Table of Contents

  • Introduction
  • Assembling the Chassis
  • Attaching the Control Boards
  • Using It
  • Ideas


Introduction

The XR-1000 is an easy-to-build, hopefully easy-to-use, Python-operated, open-source/open-hardware hackable eXperimental Robot just slightly bigger than a coke can. 

image

The photo above shows a prototype with the keypad on perf-board, but a printed circuit board (PCB) exists too. This is what the entire XR-1000 robot looks like logically:

image


In this short blog post, the ‘solved problems’ in the diagram above get solved : )


So far, two topics have been covered; the motor control board, and a control keypad. Both use a Pi Pico microcontroller. The motor control board can be used standalone; it accepts serial UART input in a Logo-like language, and it also has a single button for playing any hard-coded test sequence to exercise the motors. The motion control board is programmed in C for high performance.


The 16-key control keypad board can send commands to the motor control board using the serial UART. The user doesn’t need to know the Logo-like language, and instead can just press buttons to move the robot forward or rotate any desired angle, and the control keypad will store the instructions until the user hits the RUN command sequence. The keypad control board is programmed in Python for flexibility.


The control keypad has built-in speech capability, so there’s no need for a display, the user can hear useful prompts and feedback as they press the buttons.


Since this robot is supposed to be flexible, you could swap out the control keypad board for a more sophisticated processing board if desired. Or, you could continue to extend the electronics by attaching peripheral boards to the control keypad board connectors.


In this blog post, I wanted to discuss an ultra-simple chassis and combine the two boards (they connect together with a single flat-flex cable on top, and attach the motors so that the robot can move!


The chassis requires no special tools to make because it is made at a PCB factory. All that needs to be done is to gently fold out the tabs to convert it from a flat-pack into a 3-dimensional shape. Everything can then be screwed onto it. All connections are plugged-in, so there’s no time spent soldering connections either.

image

There’s not a lot of text to this blog post, because it’s fairly trivial to screw everything together and the photos explain it all. At the end of it, you’ll have a system that you can control with the keypad.


Assembling the Chassis


A single piece of aluminium forms the chassis. The Gerber files for it are on GitHub, and they can be uploaded to any PCB manufacturer site that supports aluminium PCBs. I used JLC PCB, and the cost was $16 plus shipping, for five boards, i.e. just over $3 per chassis.

image


The photos above show how to fold the chassis. The top insulated surface of the aluminium PCB will crack when each fold is made, and the fold can only be made once; if you overshoot and then try to unfold, then it’s likely to significantly weaken the aluminium. A single, gentle bend is fine, and there will be sufficient strength for the robot. If you do accidentally overshoot, it could be possible to recover the strength by putting epoxy resin or another filler into the holes along the fold, however, I have not tried that and don’t know if it would be successful. It’s best to purchase a few spare aluminium PCBs and use one or two to practice the folding strategy and sequence that the folds will occur. My approach was to make 80-degree folds in the tool vise where a 90-degree fold was required and then finish off the fold by gently pressing against a flat surface for the remaining 10 degrees.


The tab which will hold the ball wheel was not initially folded fully square, because it is adjusted later so that the entire chassis is perfectly horizontal when all the wheels are fitted.


The photo below shows one of the motors fitted. The motors, wheels and ball wheel, are all from AliExpress. The relevant search terms are listed below.

Item Qty AliExpress Search Term
Motor 3 Stepping Gear Motor DC5V 6V 2-phase 4-wire Gearbox
Wheel 2 D-hole rubber wheel for N20 Motor
Ball transfer unit (Ball Wheel) 1 Official Quality Robotic Universal Wheel/Ball 3PI Caster


The motors come with a built-in gearbox. I used the 50:1 ratio version here.

image


The wheels just push onto the motor/gearbox axle. It’s worth buying a few spare wheels, to find the ones which have a good friction fit. Glue could be used for the wheels, but I didn’t find it necessary.


Next, I attached the ball wheel.

image


The battery needs the correct connector on it; it’s a JST PH connector, you can buy wires from AliExpress with the connector already attached, but you may need to extract the crimps from the plastic housing and swap them around if the red and black wires are not in the correct positions.


A single-cell LiPo or Li-Ion battery is used, but make sure it has a built-in protection circuit.

image


The photo below shows the underside of the robot. I don’t have a good way of securing the battery; double-sided sticky foam pads could be used. The two motors and the connectors were labeled A and B, for left and right wheels respectively.

image

Protecting the wiring for the motors and battery, from the sharp edges of the chassis, is essential. I used heatshrink sleeving to achieve this, but perhaps a cut rubber grommet could be used.

image

There is space on the chassis for an optional motor. I fitted the motor now since the motor control board would need to be unscrewed to retrofit the motor later. I used a motor with a 150:1 ratio gearbox instead of the 50:1 ratio used for the two wheels. There is no purpose for this motor currently.

image

Attaching the Control Boards


At a minimum, the Motion Control Subsystem board is required because it contains the motor drivers. I attached that and the Keypad Control Subsystem board. The latter attaches to the motion board using a single flat flex cable.


Each board is attached using two M3 nuts and 6mm bolts.


Here is a view from the keypad side. The keypad board is a prototype on perf-board, but the blog post for it has the link to Gerber files for a proper PCB for it.

image


The photo below shows the motion control board with its four stepper motor controllers. The PCB version doesn’t require the ribbon cable visible in the photo below, it uses just a flat flex cable. Power from the battery arrives at the motion control board and is passed to the keypad board across that flat flex cable, along with a few data connections.

image

Using It


See the keypad control blog post to understand how the keypad is used to operate the motors. The assembled robot worked the first time, although the code has a bug that mixes up left and right motions. If you tell the robot to turn left, it turns right, and vice-versa : ) I’ll fix the code for that at some point, it’s an easy bug to resolve.


To use the robot, just slide the power switch on the motion control board, and begin pressing buttons on the keypad to program it : ) Finally press the RUN key combination (press the FN button, and then press the ENT button which doubles as a RUN button). It’s very easy to use, based on the labeling on the keypad above. I tested with a couple of kids, they found it easy to instruct the robot to move in a square shape and so on.



Ideas


The chassis has placeholder areas for additional electromechanical stuff. The keypad control board has connections for additional peripherals, such as sensors, or it could be replaced with a completely different, more powerful processing unit.


I hope to build a pen mechanism so that the XR-1000 can function like a turtle robot. A standard servo fits the chassis, for performing the pen lift operation. The motion control board has a connection for a servo.


It would also be interesting to try to construct a robot arm since a single axis is already present with the optional motor. A fourth motor can be controlled to add another axis.


It would also be interesting to build an exterior shell for the robot; there are holes for screwing that onto the chassis. Perhaps a 3D printer could be used to construct the shell or more aluminium panels could be used.


Thanks for reading!

  • Sign in to reply

Top Comments

  • beacon_dave
    beacon_dave over 4 years ago in reply to shabaz +1
    I suspect that anything injection moulded will tend to have a taper to assist with ejection. Sharpie pens may work but may tend to bleed if left too long on more absorbent paper. Here is the Axidraw…
  • shabaz
    shabaz over 4 years ago in reply to fmilburn

    Hi Frank, 

    Thanks! I too am curious about the repeatability, and am looking forward to attaching a pen. The movements look quite repeatable, however I need to measure. The code has the formula for working out how many steps to rotate the chassis any number of degrees based on the diameter of the wheel, and the 90 degree turns are pretty good, but it will need precise tweaking. The wheels are very grippy, which is great. Also, since the alu PCB is so precisely cut by the factory, the pen can potentially be very well centered and in line with the wheels, which makes the geometry easier.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 4 years ago in reply to Andrew J

    Hi Andrew,

    Good point, an idea could be to increase the radius by perhaps having a few rows of staggered holes. For the small chassis here (80 mm square base) which isn't carrying a lot of weight the bends are usable provided no extra bending back-and-forth is done, but for sure the metal is weakened on each bend, and the surface cracks even when bent 45 degrees. I suspect epoxy glue would help strengthen things a lot if it came to it.

    I think if it were normal aluminium then it should not have significantly weakened, but whatever alloy and insulating surface they use, and perhaps work-hardening when machining it, makes it behave less like a sheet of normal aluminium I guess. I did try heating the alu to remove the hardening, but I didn't find it easy to heat it without risking burns etc, and I couldn't get it hot enough anyway, and the result was no noticeable difference.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Andrew J
    Andrew J over 4 years ago in reply to Andrew J

    (Cannot edit my comment!)

    Actually, I don't know why bending copper should be any worse than bending the alu - you clearly don't have an issue on your board.  I suspect the key to avoiding any sort of damage, as you are at pains to point out, is to keep a little radius on the inner and outer curves of the bend rather than aiming for a sharp angle.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Andrew J
    Andrew J over 4 years ago in reply to shabaz

    Adding a copper layer actually improves the colour of the mask which is a consideration - hmmm, actually it may be more of a consideration for FR4.  I suspect 35um of copper won’t add much to the strength!  What would really be worth investigating is if there was a layer of copper on the top and you bend the PCB would it split and affect the mask?  Just a thought.  The other top tip is to use JLCPCB’s option to position the build code (whatever they call it) on the back of the board out of sight.  It doesn’t matter if you have any mask on that layer, it’s still ok to silkscreen it there; printing it in white on bare alu means it is practically invisible. Alternatively you could position it on the front side in a place that makes more sense to you.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • neuromodulator
    neuromodulator over 4 years ago in reply to shabaz

    I was thinking more on using the copper layer to solder as I have no experience soldering aluminum. I suppose 1.6 mm of FR4 might work ok for many tasks too, and we have the advantage of having copper on both sides. I Suppose it could be stacked in some way if more strength is required too. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
<>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube