SPARKY: a Makerspace-Manufacturable Open Academic Robotics Platform
by huebner5000 in Circuits > Robots
655 Views, 8 Favorites, 0 Comments
SPARKY: a Makerspace-Manufacturable Open Academic Robotics Platform
SPARKY (Saint Paul Academic Robotics Kit) is an open academic robotics platform with the aim of making robotics accessible to all students. It is user-assembled from makerspace-manufacturable parts (3D printed and laser cut) and widely available commercial off-the-shelf low-cost parts. Designed to be microcontroller-agnostic, this instructable uses the Adafruit Feather platform which allows for programming in either CircuitPython or Arduino modes, includes an on-board LiPo charging circuit, and can be controlled via BLE using the Adafruit Bluefruit Connect app and has an available stacking DC motor driver to save space. The breadboard nerve center and regularly spaced mounting holes allow for flexible configurations and straightforward modifications.+
SPARKY Features:
- Makerspace-manufacturable parts (3D printed PLA and laser-cut plywood) with files freely available online
- Widely available commercially sourced low-cost parts
- Microcontroller agnostic (Current design is Adafruit feather-based. Raspberry Pi Pico and Arduino configurations are also possible).
- Easy to assemble with only M3 screws and nuts using a 2.5mm hex driver and a 5.5mm nut driver. Electronics require a mini screwdriver.
- Modular and reconfigurable: attach different combinations of attachments (sensors & effectors) in different positions and configurations
- Extendable: easy to add new accessories, actuators, and sensors using the M3 mounting hole patterns.
- Eco-sustainability considerations: Designed to minimize plastic where possible; made with bioplastic and renewable resources (plywood). Local makerspace manufacturing reduces transportation footprint.
- Handle for easy transfer from desktop to testing environment
- Test stand for testing motor functions on the desk without the risk of the robot driving off the desk.
- Latching hinged lid for easy access to electronics and wiring
- Easily identifiable and accessible power buttons
- Sensors & Actuators:
- Ultrasonic rangefinder
- IR reflective sensors (x2) for line following
- Color sensor
- Micro servo
- TT Geared DC Motors (x2)
- Neopixel strip
- Axle encoders (x2)
All makerspace-manufacturable parts were designed using Autodesk Fusion 360 - Education License.
Wiring is excluded from many photos for clarity.
Supplies
Makerspace Tools:
- Access to a 3D printer
- Access to a laser cutter
- Access to an orbital sander (optional)
Fabrication Raw Materials:
Assembly Tools:
Parts & Electronics:
- Assorted M3 hex cap screws and nuts - mostly M3x10mm
- (2x) 5/8" transfer bearings - steel or nylon. (The combined height of the bearing and housing is 5/8". The ball itself is ~.5".
- (2x) TT geared DC motor 3-6V with wheels
- Half-size breadboard
- 3.7v cylindrical LiPo battery
- Adafruit Feather (nRF52840 shown here, but many other variations will work)
- Adafruit DC motor driver FeatherWing
- (2x) 12mm Mini Latching Push Button On-Off Switch
- Ultrasonic sensor RCWL-1601 (HC-SR04 compatible)
- Micro servo motor
- Adafruit Mini Boost 5V
- (2x) IR Reflective Sensors
- Neopixel strip (~243mm)
- (2x) photo interrupter encoder sensor
- Breadboard jumper wires - assorted
- [Optional] self-adhesive rubber bumpers .5" diameter (for test stand)
Wiring Tools:
- Mini screwdriver (for screw terminals)
Note: Soldering of headers to boards or jumpers to components may be necessary depending on component availability. The Neopixel strip will need to be cut to size and have breadboard jumpers soldered on. Soldering is not covered in this Instructable.
Laser Cut Parts
Laser cut the following parts from 3mm (1/8") Baltic Birch B/BB plywood. All parts easily fit on a 12"x20" sheet.
- Sparky base (octagonal with cutouts for wheels)
- Sparky lid (octagonal with X shape in the center)
- Button wrench - if the pushbutton nuts are put on too tightly, use this tool to loosen them. The wrench is not necessary to tighten the pushbutton nuts. [Optional]
- Test stand connector - [The test stand is optional.]
Post-processing [optional]:
- Sand both sides of all parts with an orbital sander to remove laser scorch marks & ensure no splinters.
Models were cut on a Glowforge Pro.
3D Print Parts
3D-print the parts listed below. PLA is an excellent choice of material for printing these parts - it's a bioplastic that is easy to print and emits far fewer VOCs than other materials.
- (2x) TT motor mounts - these are mirrored versions of each other for the left and right sides of the robot
- Battery holder
- Handle
- Lid latch legs and lid latch shoes
- Lid hinges - note these are print-in-place hinges.
- Nimbus
- IR reflective sensor mounts
- Color sensor mount
- Ultrasonic sensor mount
- Micro servo mount - horizontal axle
- Micro servo mount - vertical axle
- Test stand sides
Encoders for the TT motors are available here.
Models were printed on a Bambu X1C using PLA filament with a 0.2mm layer height, "strength" setting, and no supports.
Assemble the Base
- Attach the transfer bearings to the base as shown using 2 M3x10mm screws and 2 M3 nuts per transfer bearing.
- Place the tt motor in the mount as shown, aligning the motor's raised nubbin near the axel with the alignment hole in the mount.
- Use 2x m3x25mm screws and nuts to attach each motor to its mount.
- Attach each mount to the base with 2 M3x10 screws and nuts.
- Insert the LiPo battery in its mount.
- Attach the battery mount to the base as shown using 2x M3x10mm screws. Note that the screw at the top of the battery mount holds the battery in the mount. Do not attempt to remove the battery from its mount without removing the top screw.
- Attach the two breadboard tabs to the base with 2x M3x18mm screws and nuts. Do not tighten.
- Slide the breadboard between the tabs and secure it by turning and tightening the tab screws.
- Attach the lid latch shoes to the front of the base as shown with 2x M3x18mm screws and nuts.
- Tighten all screws and nuts with the hex driver and nut driver.
Assemble the Lid
- Attach the lid hinges to the lid as shown using 2 M3x10mm screws and nuts. Note that the round nubbin on the bottom of the hinge fits in the alignment hole on the lid.
- Attach the lid latch legs to the lid as shown using 2 M3x10mm screws and nuts. Note that the round nubbin on the bottom of the hinge fits in the alignment hole on the lid.
- Insert the toggle switches into the power panel. Align the flat sides of the buttons with the flat sides of the button holes. Screw the button nuts onto the back of the switch.
- Attach the power panel to the handle with an M3x14mm screw and nut.
- Attach the handle to the lid with 2 M3x10mm screws and nuts
- Remove the backing from the Neopixel strip and secure it around the outside of the nimbus. Start and stop at the notch.
- Attach the nimbus to the lid using 2 M3x10mm screws and nuts.
- Attach the lid assembly to the base by screwing the lid hinges into the base with 2 M3x10mm screws and nuts.
- Close the lid. To latch, pull both latching legs forward slightly and insert latching leg feet into latching shoes as shown.
- To unlatch the lid, pull back on both latching legs and lift the lid.
- Tighten all screws and nuts with the hex driver and nut driver.
- Once the lid is latched on both sides, the robot is ready to be lifted by its handle to transfer between the desk and testing environment.
Add Sensors
Sensors can be added to the robot as needed. The IR reflective sensors are great for line-following tape on the floor. Start with one sensor then move up to two. The color sensor can be used to add branching logic for line following based on tape color. Two IR reflective sensors and one color sensor will fit on the front of the robot. The shaft encoders were added in the base assembly step.
- Ultrasonic sensor:
- Insert the sensor into the slot on the mount.
- Attach the mount to the lid or base of the robot using one M3x10mm screw and nut. Ensure that the nubbin on the bottom of the mount rests in the alignment hole on the base or lid.
- To remove the sensor from the mount, invert the mount and gently tug latterly on the ears - the sensor will drop out.
- IR sensors:
- Attach each IR sensor to its mount with a M3x10mm screw and nut
- Attach each IR sensor mount to the front of the base with an M3x10mm screw and nut. Ensure that the nubbin on the bottom of the sensor mount rests in the alignment hole on the base.
- Color sensor:
- Set the color sensor in its mount, aligning the raised nubbins with the holes in the sensor board
- Mount the sensor mount to the base using an M3 screw so that the mount is under the base and the sensor is sandwiched between the mount and the bottom of the base.
Add Micro Servo
Mount the micro servo to the robot in either a horizontal or vertical axle orientation based on the mounting bracket.
Secure the micro servo in the mount with one M3x10mm screw and nut.
Attach the mount to the robot using 2x M3x10mm screws and nuts.
There are plenty of mounting holes on the robot for flexibility in mounting locations and orientations.
Assemble the Test Stand [Optional]
The test stand [optional] allows users to test motor functions without the risk of the robot driving off the desk.
Attach the test stand connector to each side using an M3x8mm screw and nut.
[Optional] Attach two self-adhesive silicon bumpers (.5" diameter) in the recessed circles on the bottom of each test stand side.
Wire It Up
These instructions assume a basic knowledge of wiring a solderless breadboard. Note that with the FeatherWing mounted on top of the Feather, the pin labels are not visible. Refer to the pinout diagram for the Feather.
- Attach the Feather, FeatherWing DC motor driver and Mini Boost 5V to the breadboard as shown.
- Using breadboard jumper wires, connect the Feather GND and 3.3V to one set of power and ground rails on the breadboard.
- Using a jumper wire connect both ground rails on the breadboard.
- Enable button: Connect one pin to the EN pin on the feather. Connect the other pin to a GND rail on the breadboard.
- Aux button: Connect one pin to the VBAT pin on the Feather. Connect the other pin to the VIN pin on the Mini Boost.
- Boost ground: Connect the GND pin on the boost to one of the GND rails on the breadboard
- 5V rail: Using a jumper wire connect the 5V pin from the mini boost to the power rail on the breadboard that is not connected to the Feather 3.3V. Now you have one 3.3V power rail and one 5V power rail on the breadboard.
- FeatherWing DC Motor Driver
- Connect motor wires to screw terminals for M1 & M2. This minimizes wires by the USB port on the Feather for easier accessibility.
- Connect a jumper from the breadboard ground rail to the FeatherWing 5-12DC GND screw terminal.
- Connect a jumper from Feather Wing 5-12DC positive screw terminal to 5V rail on the breadboard.
- Nimbus Neopixel strip:
- Connect the Neopixel GND pin to the breadboard GND rail.
- Connect the Neopixel +5V pin to the 5V breadboard rail, and signal to a GPIO pin of your choice
- Connect the Neopixel D0 pin to a Feather GPIO pin of your choice (I used A0).
- Micro Servos:
- Connect servo Vin to the breadboard 5V row
- Connect servo GND to breadboard GND
- Connect servo signal to the Feather GPIO pin of your choice
- Sensors:
- Connect sensor VIN to breadboard VCC rail
- Connect sensor GND to breadboard GND rail
- Connect sensor data to Feather GPIO pins of your choice
Programming
The Feather can be programmed in either Arduino or CircuitPython environments. See the Adafruit website for fantastic resources related to programming the Feather and working with the other sensors and breakout boards.
Extend and Reconfigure
Additional extensions to the SPARKY platform are available on online 3D model repositories. Ex: Science Olympiad Robot Tour dowel holder on Printables.com
Mounts for additional sensors can be designed and made to mount to the available holes on the base and lid of the robot. Holes are sized for M3 screws.