Assistive Tech Pete the Cat: Light Up Shoes

by birtesophia in Living > Kids

682 Views, 3 Favorites, 0 Comments

Assistive Tech Pete the Cat: Light Up Shoes

20230502_125906.jpg
Pete the Cat: Assistive Tech

This is an Assistive Tech Project I built for my Physical Computing class at Boston College with Professor Gallaugher.

This stuffed animal is inspired by the popular kids cartoon cat Pete the Cat. In the story "Pete the Cat: I love my white shoes" he walks around and steps into a pile of strawberries, blueberries, mud and water, which turns his shoes different colors. My stuffed animal version is connected to a button, neopixel strips and a speaker. When the button is pressed a song starts playig and his shoes light up in different colors.

This is the Link to the Youtube Video of "Pete the Cat: I love my white shoes".

Supplies

Sewing material:

  • Blue minky fabric
  • Small pieces of yellow, white and black cotton fabric (or optionally fabric markers)
  • White Socks
  • 7x7" piece of cotton fabric
  • Zipper
  • Thread (black, white, yellow, blue)
  • Sewing machine
  • Seam ripper
  • Washable Marker

Electronics:

  • Pico W
  • SD card (32 GB)
  • SD Card breakout board
  • Hamburger Mini Speaker
  • Button
  • Female Audio Jacks
  • Neopixel strips
  • Jumper Wires

Other supplies:

  • Soldering Equipment
  • Electrical Tape
  • Polyfill
  • Flexible Hair Rollers

Eyes

20230501_220128.jpg
20230501_225109.jpg
20230501_230137.jpg
20230501_231330.jpg

To sew the eyes I drew a half circle on the white fabric using a pencil. After drawing the eyes I sewed the outline of the pieces and cut them with fabric scissors. This way the fabric does not unravel as easily. I repeated this step by sewing the white half circles on to the black fabric and sewing the outline of the black half circle. After cutting the black circles I finally sewed them onto the yellow fabric. To ensure that the fabric is not seethrough I folded the fabric in half creating two layers of the yellow fabric. After sewing all of the edges, i cut out the eyes.

Head

20230430_141451.jpg
20230430_141619.jpg
20230430_142640.jpg
20230501_233323.jpg
20230430_144027.jpg
20230430_142823.jpg
20230430_145404.jpg

Moving on to the head, I cut out all of my ear and head pieces (4 each) and sewed along the rounded side of the ears, leaving an opening at the bottom to stuff the ears with polyfill. To create the head, I sewed along the straight side of two of the fabric pieces creating a circular shape. I repeated this step for my other two head pieces. To attach the ears to the head I flipped them inside of the fabric (right sides facing each other) and sewed along the curved line, leaving an opening at the bottom to attach the head to the body.

Body

20230501_235848.jpg
20230502_001155.jpg
20230502_002555.jpg
20230502_025915.jpg

This step has to be repeated for all of the body parts (including arms, legs and tail). After cutting out the fabric I stiched along the side leaving an opening at the top of all of the pieces. This way I can stuff the parts with polyfill and insert flexible hair rollers into the legs and tail. For the legs I attached neopixel strips to the hair rollers and inserted them into the legs. A small opening in the foot lets you pull out the neopixel strip. This way you can wrap the strip around the foot and put on white socks. For the tail I added the female connection of an audio jack.

Body

I sewed a small pouch for all of the electronics to fit in. This puch is closed by a zipper and lets you easily access all of the parts for quick fixes. Additionally, you can store a batery pack and speaker inside of the stuffed animal. After sewing the puch I attached it to the backside of 2 out of the main body parts. Below the pouch I attached the tail and legs. Lastly, only the arms need to be sewed on. After attaching all parts besides of the head, you can pull all of the wires thorugh a small hole inside of the pouch.

Soldering

20230501_213832.jpg
20230501_214035.jpg

To create a longer connection for the female audio jack and LED neopixel strips I soldered jumper wires on to them and taped the end with electrical tape to ensure a stable connection.


Last Steps

FRVOE5QLH6A513S.jpg

Lastly, you only need to attach the eyes on the head by handstitching them centered on to two of the fabric pieces. After that is done, I stuffed the stuffed animal with polyfill and handstiched the head onto the neck hole.

Code

# ASSISTIVE TECH PROJECT: PETE THE CAT
# All import Statements
# Statements Audio
from audiomp3 import MP3Decoder
from audiopwmio import PWMAudioOut as AudioOut
from audiocore import WaveFile
# Statements Neopixel
import board, neopixel, time, busio
# Statements SD Card
import sdcardio, storage
# Statements Button
import digitalio
from adafruit_debouncer import Button
# Statement Color
from adafruit_led_animation.color import (
    AMBER, #(255, 100, 0)
    AQUA, # (50, 255, 255)
    BLACK, #OFF (0, 0, 0)
    BLUE, # (0, 0, 255)
    CYAN, # (0, 255, 255)
    GOLD, # (255, 222, 30)
    GREEN, # (0, 255, 0)
    JADE, # (0, 255, 40)
    MAGENTA, #(255, 0, 20)
    OLD_LACE, # (253, 245, 230)
    ORANGE, # (255, 40, 0)
    PINK, # (242, 90, 255)
    PURPLE, # (180, 0, 255)
    RED, # (255, 0, 0)
    TEAL, # (0, 255, 120)
    WHITE, # (255, 255, 255)
    YELLOW, # (255, 150, 0)
    RAINBOW # a list of colors to cycle through
    # RAINBOW is RED, ORANGE, YELLOW, GREEN, BLUE, and PURPLE ((255, 0, 0), (255, 40, 0), (255, 150, 0), (0, 255, 0), (0, 0, 255), (180, 0, 255))
)
# Statements SD Card
import sdcardio, storage
# Statements Audio
from audiopwmio import PWMAudioOut as AudioOut
from audiocore import WaveFile
from audiomp3 import MP3Decoder


# Set up Neopixels 1
pixels1 = neopixel.NeoPixel(board.GP0, 60, brightness = 1, auto_write=True)
BROWN = (101,67,33)
# Set up Neopixels 2
pixels2 = neopixel.NeoPixel(board.GP5, 60, brightness = 1, auto_write=True)


# Set up Button
button_input = digitalio.DigitalInOut(board.GP15) # Wired to GP15
button_input.switch_to_input(digitalio.Pull.UP) # Note: Pull.UP for external buttons
button = Button(button_input) # NOTE: False for external buttons


# Set up SD Card
sck = board.GP10
si = board.GP11
so = board.GP12
cs = board.GP13
spi = busio.SPI(sck, si, so)
sdcard = sdcardio.SDCard(spi, cs)
vfs = storage.VfsFat(sdcard)
storage.mount(vfs, "/sd")


# Set up Audio
audio = AudioOut(board.GP16) # Wired to GP16


# Set up Path
path = "/sd/pete/"

# Set up mp3 Decoder
filename = "introduction.mp3" # Edit sound name
mp3_file = open(path + filename, "rb")
decoder = MP3Decoder(mp3_file)


# Play Sound Function
def introduction(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(WHITE)
        pixels2.fill(WHITE)


def white(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(WHITE)
        pixels2.fill(WHITE)


def red(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(RED)
        pixels2.fill(RED)


def blue(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(BLUE)
        pixels2.fill(BLUE)


def brown(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(BROWN)
        pixels2.fill(BROWN)


def wet(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(WHITE)
        pixles2.fill(WHITE)


def moral(filename):
    decoder.file = open(path + filename, "rb")
    audio.play(decoder)
    while audio.playing:
        pixels1.fill(WHITE)
        pixles2.fill(WHITE)


# Order of .mp3 files
# introduction
# white shoes
# red shoes
# blue shoes
# brown shoes
# wet shoes
# moral


pixels1.fill(BLACK)
pixels2.fill(BLACK)
while True:
    button.update()
    if button.pressed:
        press += 1
        if press == 1:
            print("sound1")
            introduction("introduction.mp3")
            print("done")
        elif press == 2:
            print("sound2")
            white("white shoes.mp3")
            print("done")
        elif press == 3:
            print("sound3")
            red("red shoes.mp3")
            print("done")
        elif press == 4:
            print("sound4")
            blue("blue shoes.mp3")
            print("done")
        elif press == 5:
            print("sound5")
            brown("brown shoes.mp3")
            print("done")
        elif press == 6:
            print("sound6")
            wet("wet shoes.mp3")
            print("done")
        elif press == 7:
            print("sound7")
            moral("moral.mp3")
            print("donedone")
            press = 0