This page (revision-23) was last changed on 2021-04-30 11:40 by Murray Altheim

This page was created on 2019-12-28 03:23 by Murray Altheim

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
23 2021-04-30 11:40 10 KB Murray Altheim to previous
22 2021-04-30 11:39 10 KB Murray Altheim to previous | to last
21 2021-04-30 11:31 10 KB Murray Altheim to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 changed one line
The [KC01] robot is a [robot prototype] in the "mini" weight class.
The [KC01] robot is a [robot prototype] in the ["mini" weight class|RobotWeightClasses].
At line 7 changed one line
__KC01__ ("Kaycee Oh-One") is a [mini robot|MiniRobot] that without batteries weighs only 163 grams. It's currently an unfinished design and has no sensors, but it has ''plenty of possibilities'' in this regard. See below.
[{Image src='attach/KC01/kc01-top-thumb.jpg' link='attach/KC01/kc01-top.jpg' caption='KC01 Top View' align='right' class='imgFloatRight'}]
At line 9 changed one line
It uses the __Circuit Playground Express__ microcontroller, which is very suitable for people who've never built a robot before, or used a microcontroller. The Circuit Playground board is very useful for non-robot applications as well.
__KC01__ (AKA "Kaycee Oh-One", for the ''__K__iwiBot __C__ircuitPlayground Model __1__'') is a ["mini" sized|RobotWeightClasses] robot that without batteries weighs only 163 grams. It's currently an unfinished design and has two short-range Sharp infrared sensors, but there are ''plenty of possibilities'' in this regard. See below.
At line 11 added 2 lines
It uses the __Circuit Playground Express__ microcontroller, which is a good start for people who've never built a robot or used a microcontroller before. The Circuit Playground board has many for non-robot applications as well.
At line 15 added one line
I learned recently of an "improved" version of the CRICKIT board (same form factor) called the [RoverWing|https://roverwing-board.readthedocs.io/en/latest/, which includes PID, an IMU and a more powerful motor controller.
At line 14 removed one line
!! Requirements
At line 16 removed one line
[{Image src='attach/KC01/crickit-circuit-playground-thumb.jpg' link='attach/KC01/crickit-circuit-playground.jpg' caption='Crickit for Circuit Playground' align='right' class='imgFloatRight'}]
At line 19 added 2 lines
!! Requirements
At line 24 changed one line
* relatively easy to start
* relatively easy to build and program
At line 28 changed one line
The combination of the Circuit Playground Express and the Crickit board for it provides:
!! Features
At line 30 changed 10 lines
* a microcontroller than can be programmed in [CircuitPython] (a subset of [Python])
* two motor controllers
* four servo controllers
* four channels of 5 volt drivers
* a ring of programmable RGB LEDs on the CircuitPlayground
* a NeoPixel driver (for control of strings of coloured LEDs)
* a small speaker with a 3 watt audio amplifier (!)
* four capacitive touch sensors
* 8 channels of digital I/O or analog inputs
* safety features: the Crickit has kick-back diode protection on the motors and its power supply has an 'eFuse' management chip that turns everything off if the supply power is greater than 5.5V or less than 3V.
[{Image src='attach/KC01/crickit-circuit-playground-thumb.jpg' link='attach/KC01/crickit-circuit-playground.jpg' caption='Crickit for Circuit Playground' align='right' class='imgFloatRight'}]
At line 41 changed one line
!! Upgrades
The Circuit Playground Express provides:
At line 37 added 20 lines
* 10 x mini NeoPixels, each one can display any color
* 1 x Motion sensor (LIS3DH triple-axis accelerometer with tap detection, free-fall detection)
* 1 x Temperature sensor (thermistor)
* 1 x Light sensor (phototransistor). Can also act as a color sensor and pulse sensor.
* 1 x Sound sensor (MEMS microphone)
* 1 x Mini speaker with class D amplifier (7.5mm magnetic speaker/buzzer)
* 2 x Push buttons, labeled A and B
* 1 x Slide switch
* Infrared receiver and transmitter - can receive and transmit any remote control codes, as well as send messages between Circuit Playground Expresses. Can also act as a proximity sensor.
* 8 x alligator-clip friendly input/output pins
* Includes I2C, UART, 8 pins that can do analog inputs, multiple PWM output
* 7 pads can act as capacitive touch inputs and the 1 remaining is a true analog output
* Green "ON" LED so you know its powered
* Red "#13" LED for basic blinking
* Reset button
* ATSAMD21 ARM Cortex M0 Processor, running at 3.3V and 48MHz
* 2 MB of SPI Flash storage, used primarily with [CircuitPython] to store code and libraries
* MicroUSB port for programming and debugging
* USB port can act like serial port, keyboard, mouse, joystick or MIDI!
At line 45 changed one line
If you want to use odometry, you can __upgrade__ by buying the motor encoders and the motors ''without'' the Push Header Shim (which is incompatible with the motor encoders as they both solder to the same place). You'll want the extended back shaft version.
The Crickit board provides:
At line 47 changed 4 lines
* [Magnetic Encoder Pair Kit for Micro Metal Gearmotors, 12 CPR, 2.7-18V (HPCB compatible)
|https://shop.pimoroni.com/products/magnetic-encoder-pair-kit-for-micro-metal-gearmotors-12-cpr-2-7-18v-hpcb-compatible]
* [Micro Metal Gearmotor (Extended back shaft) – 298:1
|https://shop.pimoroni.com/products/micro-metal-gearmotor-extended-back-shaft?variant=3073681089]
* 4x Analog or Digital Servo control, with precision 16-bit timers
* 2x Bi-directional brushed DC motor control, 1 Amp current limited each, with 8-bit PWM speed control (or one stepper)
* 4x High current "Darlington" 500mA drive outputs with kick-back diode protection. For solenoids, relays, large LEDs, or one uni-polar stepper
* 4x Capacitive touch sensors with alligator-pads
* 8x Signal pins, digital in/out or analog inputs
* 1x NeoPixel driver with 5V level shifter
* 1x Class D, 4-8 ohm speaker, 3W-max audio amplifier
At line 52 removed one line
There are a variety of gear ratios available: 11:1, 20:1, 50:1, 298:1 and 1006:1. This will effect both the upper speed of the motor and its torque (power). I chose the 298:1 because I want my robot to be a bit slower and stronger. The 50:1 might work but if you have to reduce the power sent to the motor in order to get it to drive slow enough, it won't have much torque. The choice of gear ratio is always a __compromise__.
At line 54 removed one line
Other upgrades include adding sensors and IO devices to any of the above-listed connections on the Crickit board.
At line 58 changed one line
Below is the Bill of Materials, with an estimated cost of __NZ$147__. This doesn't include miscellaneous
Below is the Bill of Materials, with an estimated cost of __NZ$156__. This doesn't include miscellaneous
At line 69 changed one line
|| Total | | | __NZ$147__
| 1x | [Moon Buggy Wheels - Pair|https://shop.pimoroni.com/products/moon-buggy-wheels-pair] | £4.50 | NZ$8.77 | Pimoroni
|| Total | | | __NZ$156__
At line 76 removed one line
!! Notes, Known Questions and/or Issues
At line 93 added 34 lines
!! Options
* AdaFruit sell some nice [90:1 gearbox motors|https://www.adafruit.com/product/3802] for US$5.95
* there are many options for wheels (in addition to those on AdaFruit and Pimoroni, check out the ones available from [Piborg|https://www.piborg.org/motors-mounts-and-wheels-1140]) - just be sure you get some that match the shafts of whatever motors you choose (the micro gear motors are 3mm)
[{Image src='attach/KC01/micro-gear-mod-thumb.jpg' link='attach/KC01/micro-gear-mod.jpg' caption='Modified Push Header Shim' align='right' class='imgFloatRight'}]
[{Image src='attach/KC01/original-motor-thumb.jpg' link='attach/KC01/original-motor-thumb.jpg' caption='Original Push Header Shim' align='right' class='imgFloatRight'}]
A very low-cost modification is to un-solder the right angle pins of the motor's ''Push Header Shim'' and replace them with a two-pin straight header. If you're using (for example) [Jumper Jerky|https://shop.pimoroni.com/products/jumper-jerky-junior?variant=1076482185] or some other type of solderless connectors, the original shim design leaves the plastic connectors hanging down vertically from the motors, significantly reducing the floor clearance (down to about 8mm). If your robot is only operating on a flat wooden, concrete or linoleum floor then this modification is probably not necessary.
!! Upgrades
If you want to use [odometry], you can __upgrade__ by buying the motor encoders and the motors ''without'' the Push Header Shim (which is incompatible with the motor encoders as they both solder to the same place). You'll want the extended back shaft version.
* [Magnetic Encoder Pair Kit for Micro Metal Gearmotors, 12 CPR, 2.7-18V (HPCB compatible)
|https://shop.pimoroni.com/products/magnetic-encoder-pair-kit-for-micro-metal-gearmotors-12-cpr-2-7-18v-hpcb-compatible]
* [Micro Metal Gearmotor (Extended back shaft) – 298:1
|https://shop.pimoroni.com/products/micro-metal-gearmotor-extended-back-shaft?variant=3073681089]
There are a variety of gear ratios available: 11:1, 20:1, 50:1, 298:1 and 1006:1. This will effect both the upper speed of the motor and its torque (power). I chose the 298:1 because I want my robot to be a bit slower and stronger. The 50:1 might work but if you have to reduce the power sent to the motor in order to get it to drive slow enough, it won't have much torque. The choice of gear ratio is always a __compromise__.
Other upgrades include adding sensors and IO devices to any of the above-listed connections on the Crickit board.
!! Programming
With the two Sharp infrared sensors, I've written a short program that uses two of the touch sensors to activate a main loop function that performs simple object avoidance: if the left sensor detects something the robot backs up and turns turns right; if the right sensor detects something it backs up and turns left; and if both sensors detect something it just backs up further and turns randomly.
!! Limitations, Issues, Known Questions and/or Other Notes
At line 79 changed 4 lines
* what will we use for the free-wheeling caster? It needs to be between 20-25mm total height.
* this robot is pretty small and likely cannot handle transitions between carpet and floor, i.e., requires a smooth operating surface
* The battery is meant to be held between the Crickit and the platform. This means you'll need standoffs long enough to provide clearance for the battery. I only had some 10mm ones handy, and my USB battery is 21mm thick (and the solder pins protrude about 1mm from the bottom of the Crickit's circuit board. Depending on the size of your batery you'll need probably some 25mm standoffs, or make some out of long 2.5mm bolts and some copper or aluminium tubing (which you can get at a hobby store or Pete's Emporium)
* depending on your battery choice, this robot may have relatively limited battery life (is this really an issue?)
* what will we use for the free-wheeling __caster__? It needs to be between 20-25mm total height
* __smooth floors or low carpets only__: this robot is pretty small and likely cannot handle transitions between carpet and floor, i.e., requires a smooth operating surface
* The battery is meant to be held between the Crickit and the platform. This means __you'll need longer standoffs__, long enough to provide clearance ford the battery. I only had some 10mm ones handy, and my USB battery is 21mm thick (and the solder pins protrude about 1mm from the bottom of the Crickit's circuit board) so I couldn't mount my battery. Depending on the size of your battery you'll need probably some 25mm standoffs, or make some out of long 2.5mm bolts and some copper or aluminium tubing (which you can get at a hobby store or Pete's Emporium)
* depending on your battery choice, this robot may have __relatively limited battery life__ (is this really an issue?)
* I recommend putting a bit of light oil on the motor shafts before you push them into the Moon Buggy wheels, as they go on very tight.
* Also, the wheels have a __mysterious inner design__ that's not mentioned on its product page, in that you can push the motor shaft in from either side __but the behaviour is different__. On one side it's as normal; on the other, if you only push the shaft in half way you'll get a clutch-like action, where the orange inner wheel will chatter and spin if overdriven rather than stall the motor. Feature or bug? I think: feature.
At line 135 added 2 lines
The __total cost__ of all of the major components of this robot (not including shipping) is about NZ$160. This is more than the original $100 goal, but represents a very good value with lots of opportunities for experimentation and exploration in both [hardware] and [software]. If there's call for an even cheaper robot I can have a go at another design, using either an Arduino or a Raspberry Pi Zero W (the latter has WiFi so we can [ssh into it remotely|UsingSsh]).