Overview

Chauncey is a Wrylon Robotical Flower Care Robot designed by Barry McWilliams and built by John Park. Due to certain regrettable events, full-scale production of the FLORABOT 3L-1G model, a.k.a. Chauncey, ceased in 1913. However, do not despair -- you can build your own fully functional, 3D-printed Chauncey.

Mk. I plans for building Chauncey were published in the excellent 3D Printing Projects book from Maker Media.

Now, this updated Mk. II Chauncey can be created using a CLUE microcontroller board running CircuitPython and the Bonsai Buckaroo add-on board to sense soil moisture levels and water your flower or plant using a small, submersible pump.

Parts

Adafruit CLUE - nRF52840 Express with Bluetooth LE

PRODUCT ID: 4500
Do you feel like you just don't have a CLUE? Well, we can help with that - get a CLUE here at Adafruit by picking up this sensor-packed development board. We wanted to build some...
$39.95
IN STOCK

Adafruit Bonsai Buckaroo - micro:bit & CLUE Plant Care Helper

PRODUCT ID: 4534
We can’t wait for spring to arrive, and we’re looking forward to caring for some plants! We designed this little add-on for
OUT OF STOCK

Submersible 3V DC Water Pump - Horizontal Type

PRODUCT ID: 4546
Make fountains or plant-watering projects with this submersible water pump. It's great for beginner projects and super easy to use! The pump is basically a DC motor that is powered...
OUT OF STOCK

Tubing for Submersible Pumps - PVC 8mm ID - 1 Meter Long

PRODUCT ID: 4545
This tubing is designed to go with our simple submersible pumps. Great for making water-powered projects. This tubing seems to be made of PVC, it's definitely not food safe, we...
$1.50
IN STOCK

Small Alligator Clip Test Lead (set of 6)

PRODUCT ID: 4100
Connect this to that without soldering using these small alligator clip test leads. 18" long cables with color-coded alligator clips on both ends. You get 6 pieces in 6...
$2.95
IN STOCK

USB A/Micro Cable - 2m

PRODUCT ID: 2185
This is your standard USB A-Plug to Micro-USB cable. It's 2 meters long so you'll have plenty of cord to work with for those longer extensions.
$4.95
IN STOCK

PLA Filament for 3D Printers - 1.75mm Diameter - Blue - 1KG

PRODUCT ID: 2146
Having a 3D printer without filament is sort of like having a regular printer without paper or ink.  And while a lot of printers come with some filament there's a good chance...
OUT OF STOCK

Materials & Tools

In addition to the parts above, you'll also need:

  • A 3D printer or have it printed by a 3D printing service
  • 2 ea. galvanized nails
  • A small glass jar
  • CA glue (a.k.a. "super glue")
  • A handheld rotary tool

Optional:

  • Acrylic craft paint & brushes
  • Acrylic paint spray sealer

Code the CLUE

In order to code the gardner, first follow these instructions on getting CircuitPython and the necessary libraries installed on your CLUE board.

Once you've gotten the board set up, click Download: Project Zip below in the code guide. From the .zip file drag the two .bmp images to your CLUE's CIRCUITPY drive via USB.

Then, copy the code from the code-block below and paste it into the Mu editor and save it to your CLUE as code.py (or copy code.py from the zip file and place on the CIRCUITPY drive).

Your CLUE's CIRCUITPY drive should look like this.

# Bonsai Buckaroo + CLUE Plant Care Bot

import time
import board
from digitalio import DigitalInOut, Direction
from analogio import AnalogIn
from adafruit_clue import clue
from adafruit_display_text import label
import displayio
import terminalio
import pulseio

moist_level = 50  # adjust this value as needed for your plant

board.DISPLAY.brightness = 0.8
clue.pixel.fill(0)  # turn off NeoPixel

clue_display = displayio.Group(max_size=4)

# draw the dry plant
dry_plant_file = open("dry.bmp", "rb")
dry_plant_bmp = displayio.OnDiskBitmap(dry_plant_file)
dry_plant_sprite = displayio.TileGrid(dry_plant_bmp, pixel_shader=displayio.ColorConverter())
clue_display.append(dry_plant_sprite)

# draw the happy plant on top (so it can be moved out of the way when needed)
happy_plant_file = open("happy.bmp", "rb")
happy_plant_bmp = displayio.OnDiskBitmap(happy_plant_file)
happy_plant_sprite = displayio.TileGrid(happy_plant_bmp, pixel_shader=displayio.ColorConverter())
clue_display.append(happy_plant_sprite)

# Create text
# first create the group
text_group = displayio.Group(max_size=3, scale=3)
# Make a label
title_label = label.Label(terminalio.FONT, text="CLUE Plant", color=0x00FF22)
# Position the label
title_label.x = 10
title_label.y = 4
# Append label to group
text_group.append(title_label)

soil_label = label.Label(terminalio.FONT, text="Soil: ", color=0xFFAA88, max_glyphs=10)
soil_label.x = 4
soil_label.y = 64
text_group.append(soil_label)

motor_label = label.Label(terminalio.FONT, text="Motor off", color=0xFF0000, max_glyphs=9)
motor_label.x = 4
motor_label.y = 74
text_group.append(motor_label)

clue_display.append(text_group)
board.DISPLAY.show(clue_display)

motor = DigitalInOut(board.P2)
motor.direction = Direction.OUTPUT

buzzer = pulseio.PWMOut(board.SPEAKER, variable_frequency=True)
buzzer.frequency = 1000

sense_pin = board.P1
analog = AnalogIn(board.P1)

def read_and_average(ain, times, wait):
    asum = 0
    for _ in range(times):
        asum += ain.value
        time.sleep(wait)
    return asum / times

time.sleep(5)

while True:
    # take 100 readings and average them
    aval = read_and_average(analog, 100, 0.01)
    # calculate a percentage (aval ranges from 0 to 65535)
    aperc = aval / 65535 * 100
    # display the percentage
    soil_label.text = "Soil: {} %".format(int(aperc))
    print((aval, aperc))

    if aperc < moist_level:
        happy_plant_sprite.x = 300  # move the happy sprite away
        time.sleep(1)
        motor.value = True
        motor_label.text = "Motor ON"
        motor_label.color = 0x00FF00
        buzzer.duty_cycle = 2**15
        time.sleep(0.5)

    # always turn off quickly
    motor.value = False
    motor_label.text = "Motor off"
    motor_label.color = 0xFF0000
    buzzer.duty_cycle = 0

    if aperc >= moist_level:
        happy_plant_sprite.x = 0  # bring back the happy sprite

Assemble the Bonsai Buckaroo

Wiring up your Bonsai Buckaroo

For this project, you'll need a Bonsai Buckaroo, a CLUE, a water pump, some tubing, alligator clips, and two nails (or something else conductive will work too!). It's super simple to connect them up.

Here are the basic steps -- you can then use the photos below for more detail.

  • Mount the Bonsai Buckaroo to the CLUE using the included mounting hardware.
  • Connect the red wire of the water pump to the top of the motor controller terminal.
  • Connect the black wire of the water pump to the bottom of the motor controller terminal.
  • Connect an alligator clip to the 3V pad on the Bonsai Buckaroo.
  • Connect an alligator clip to the PIN#1 pad of the Bonsai Buckaroo.
  • Connect the other end of the alligator clip wires to nails stuck into the soil of your plant.
  • Connect the tubing to the water pump
  • Place the other end of the tubing in the soil of the plant.

Fasten

First, use the included screws to fasten the CLUE board to the Bonsai Buckaroo.

Wire

The Bonsai Buckaroo has a motor driver built in to run the DC pump.

To wire it, place the red wire in the top terminal and the black wire in the bottom one.

Push down the tabs with a screwdriver as you insert each wire to get a solid connection.

Tubing

Press fit the tubing onto the pump outlet.

For and extra secure connection, you can use a zip tie like a hose clamp. Pull it tight and trim off the excess.

Probes

To make the soil moisture probes, simple clip one end of each lead to a nail.

Push the nails deep into your flower pot soil.

You will then connect the other ends to 3V and Pin 1 connections on the Bonsai Buckaroo.

Pump and Water

Now, to use the watering feature of the project, you'll need a container of water into which you can you submerse the pump.

Make sure the tubing is positioned over the flower pot and then turn it on.

If the soil is moist, you'll see a happy plant graphic and the percentage displayed.

When the soil becomes dry over time, the display will show the percentage reading, and if it gets below 50%, the dry plant graphic will be shown, the motor will start pumping, and the buzzer will sound until the moisture level is back above 50%.

Build Chauncey the Flower Care Bot

Model Files

Download the model files from the link below. You'll need to open the .stl model files into your slicer of choice (I used Cura) and prep them for printing. In general, a 0.4mm nozzle with 0.2mm layer height and 10% infill works well for these parts.

Big Creations from Small Printers Chauncey’s parts have been carefully designed to print on a small desktop 3D printer with a build area of roughly 6″x6″x6″. The assembled final robot is much larger than one that could be printed in a single pass on most printers.

Print and Assemble the Legs and Feet

Print three copies of the fBot_foot.stl file.

You can pick specific filament colors, or if you want to paint them later, color won't matter, so you have a chance to use up some colors you don't always use!

Print three each of the lower socket fBot_lowSocket.stl, and upper leg fBot_legBend.stl.

Assemble the legs by pushing the lower sockets into the tops of the feet, and the bends into the lower sockets.

Print the Body

In order to create a body larger than the build platform of many printers, Chauncey’s body is printed in four sections and later assembled.

Print one copy of the fBot_bodyFL.stl, fBot_bodyFR.stl, fBot_bodyBL.stl, and fBot_bodyBR.stl files.

(In the photo, you will note that the front left body section is blue and white, due to a mid-print filament switch.)

Before joining the body parts, print the three leg sockets - fBot_legSocketCenter.stl, fBot_legSocketLeft.stl, and fBot_legSocketRight.stl, and the eye tube fBot_eyeTube.stl.

 

Assemble the Body

In order to assemble the body parts, we’ll use a dual-bonding technique of gluing and friction welding.

The glue creates a bond to hold the parts together temporarily, but it’s the friction welding that creates the real strength, since the friction-heated PLA plastic bonds the parts together. This method also has the benefit of filling in any gaps between parts.

To begin assembling the body, place a small amount of superglue on the clean surface of one of the two parts to be joined.

Press the parts together for 30 seconds as shown here.

Follow the directions on the superglue container as to safety. Wear eye protection and do not touch glue to skin.

Friction-Welding Technique

Chuck the free end of a PLA filament spool into your rotary tool and tighten the chuck. Then use diagonal end cutters to snip off the PLA filament—leaving about 1/2″ of filament protruding from the tip.

Turn the rotary tool up to a 25,000–30,000 RPM setting. Moving in small circles, push the filament tip into the seam or gap you wish to weld, moving back and forth and overlapping across to both sides of the seam.

Press hard enough that you see the PLA melt a bit as it heats up. Note the small circles in the plastic seam.

Use eye protection to avoid injury from flying plastic bits!

The filament bit will get used up as you work. Turn off the tool, waiting for it to stop spinning. Loosen the rotary tool chuck, pull out another 1/2″ length, re-tighten, and turn the tool back on to continue welding. Repeat this until you have to refill the tool with a new length of PLA from the spool.

Welds can take 10 to 20 seconds to fully cool. You can take advantage of this by adjusting the fit of some parts while the weld is still warm.

Assemble the Leg Sockets and Eye Tube

Once the body welds are made, glue the center leg socket to the back right panel. The glue will help with holding the pieces in place when you later friction-weld the seams.

Let this part dry, then fit and glue the back right and back left body quarters to the socket. Once these have dried you’ll use the friction-welding technique to permanently bond the parts as shown.

Proceed in this manner, gluing and welding the left leg socket to the front left body quarter, and the right leg socket to the front right body quarter.

These two quarters will be closed around the eye tube before gluing and welding. Some small tack welds will be enough to keep the eye tube in place.

Add the Eye

Print the fBot_iris.stl and fBot_pupil.stl parts and then fit the iris into the eye tube from the back, and the pupil into the iris from the front.

Deck Rim

The top of the ‘Bot has a deck rim running all the way around it to hold the deck in place. Print four copies of fBot_rim.stl, then glue and weld them to the top of the ‘Bot’s body.

If there are any gaps between sections, these can be filled in with friction welds, for that time-worn, hard-working robot look!

Railings

Print four copies of the safety railing model, fBot_railing.stl, and then join them together with a bit of glue.

The railing goes on top of the deck rim; you can glue it on before or after painting, or not glue it down at all.

Stovepipe

Print the two parts of the stovepipe, and then glue them together.

Once dry, push the stovepipe assembly into the port hole in the body to check the fit.

We’ll be priming and painting it separately, then reinserting it later.

Test Fit the Legs

The legs of the ‘Bot can be placed into the sockets without permanently adhering them, just to check the fit. We’ll assemble it again later after priming and painting.

Priming

If you haven’t printed your parts in their final colors, this is a good time to paint the robot.

Use a fine, white spray primer, such as Tamiya model primer or automotive primer. Follow the directions on the can and prime in a well-ventilated area.

Let the first coat dry, and prime with a second coat for best coverage.

Painting

You can then use acrylic craft paint and brushes to paint the robot in your favorite color scheme—even using techniques such as ink washes and dry-brushing highlights.

There are many good resources on the internet on painting models, so we won’t go into too many details here.

The basic technique used here was to start with a few coats of a base color, and then add a darker wash later to add some patina.

Seal It

Once the Flower ‘Bot is painted and has dried, glue the stovepipe in place.

Then seal the paint with a matte finish spray sealer to prevent the paint from chipping.

Deck Build

This updated Mk. II version of Chauncey has a different deck design than the Mk. I -- this one allows for different sized pots to be set into it, and does not require access for below-deck components. The CLUE, water vessel, and pump will all remain above deck.

Print the fBot_deck.stl file. You can optionally paint it at this point (I decided to leave this one its natural 3D filament color.)

Pump Cup

To keep the pump secured, we'll print the fBot_pump_cup.stl

It has notches built into the bottom to hold the pump in place. Since 3D printed cups can be difficult to make perfectly water tight (any gaps will be found by water!) this short cup is made to be placed inside a larger vessel, such as a medium sized glass jar.

Setup

This is where it all comes together! First, set the deck onto the top of the 'Bot.

Place the pump you prepared earlier with the tubing and optional zip tie, into the pump cup.

Set the pump cup inside the glass jar, and fill with water.

Place your flower pot in one of the deck holes. It's best to use a closed bottomed pot so no leaking will occur.

As before, the motor and probes should be connected to the Bonsai Buckaroo, with the probe nails embedded in the soil.

Power on the CLUE using USB or battery power.

This guide was first published on Mar 25, 2020. It was last updated on Mar 25, 2020.