# See N Say Brain Transplant

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/118/004/medium800/hacks_seesay-0942.jpg?1675217295)

https://youtu.be/CytjApTys-s

By now we all get it, **cows** say **moo**. Sure. But what about **subway car doors** and **jackhammers**? What do they say? Build your own city-themed See N Say to teach the children!

![hacks_rosariorat_small2.png](https://cdn-learn.adafruit.com/assets/assets/000/118/009/medium640/hacks_rosariorat_small2.png?1675228123)

This project replaces the brains of a classic talking toy with a modern, CircuitPython-powered KB2040 microcontroller, with a collection of typical urban sounds and custom illustrations.

**illustrations by Brian Kesinger. Explore more of his work at [Briankesinger.com](https://www.briankesinger.com/)**

## Parts
### Adafruit KB2040 - RP2040 Kee Boar Driver

[Adafruit KB2040 - RP2040 Kee Boar Driver](https://www.adafruit.com/product/5302)
A wild Kee Boar appears! It’s a shiny **KB2040**! An Arduino Pro Micro-shaped board for Keebs with RP2040. (#keeblife 4 evah) A lot of folks like using Adafruit parts for their Keeb builds – but with the ItsyBitsy not being pin-compatible with the Pro Micro pinout, it...

In Stock
[Buy Now](https://www.adafruit.com/product/5302)
[Related Guides to the Product](https://learn.adafruit.com/products/5302/guides)
![Angled shot of short black microcontroller.](https://cdn-shop.adafruit.com/640x480/5302-07.jpg)

### Adafruit I2S 3W Class D Amplifier Breakout - MAX98357A

[Adafruit I2S 3W Class D Amplifier Breakout - MAX98357A](https://www.adafruit.com/product/3006)
Listen to this good news - we now have an all in one digital audio amp breakout board that works incredibly well with the&nbsp;[Raspberry Pi](https://www.adafruit.com/category/105)! If you're looking for an easy and low cost way to get your digital sound files...

In Stock
[Buy Now](https://www.adafruit.com/product/3006)
[Related Guides to the Product](https://learn.adafruit.com/products/3006/guides)
![Angled shot of blue, square-shaped, amplifier breakout with a pre-soldered terminal block.](https://cdn-shop.adafruit.com/640x480/3006-04.jpg)

### Adafruit MiniBoost 5V @ 1A - TPS61023

[Adafruit MiniBoost 5V @ 1A - TPS61023](https://www.adafruit.com/product/4654)
This adorable little board will come in very handy whenever you need a good amount of 5V power. It's the size of a linear regulator, but it's actually a mini-booster! Input 2-5VDC on one side, and **get 5V at up to 1A supply** on the other. Perfect for use with...

In Stock
[Buy Now](https://www.adafruit.com/product/4654)
[Related Guides to the Product](https://learn.adafruit.com/products/4654/guides)
![Angled shot of boost converter PCB.](https://cdn-shop.adafruit.com/640x480/4654-03.jpg)

### Adafruit Perma-Proto Quarter-sized Breadboard PCB - Single

[Adafruit Perma-Proto Quarter-sized Breadboard PCB - Single](https://www.adafruit.com/product/1608)
Customers have asked us to carry basic perf-board, but we never liked the look of most basic perf: it's always crummy quality, with pads that flake off and no labeling. Then we thought about how people **actually** prototype - usually starting with a solderless breadboard and...

In Stock
[Buy Now](https://www.adafruit.com/product/1608)
[Related Guides to the Product](https://learn.adafruit.com/products/1608/guides)
![Angled Shot of the Adafruit Perma-Proto Quarter-sized Breadboard PCB - Single.](https://cdn-shop.adafruit.com/640x480/1608-03.jpg)

### Mini Panel Mount SPDT Toggle Switch

[Mini Panel Mount SPDT Toggle Switch](https://www.adafruit.com/product/3221)
This or that, one or the other, perhaps or perhaps not! So hard to make decisions these days without feeling like you're just going back and forth constantly. Deciding whether or not to use this mini toggle switch? That's the easiest decision you'll make all day!

This...

In Stock
[Buy Now](https://www.adafruit.com/product/3221)
[Related Guides to the Product](https://learn.adafruit.com/products/3221/guides)
![Angled shot of blue, mini, SPDT toggle switch.](https://cdn-shop.adafruit.com/640x480/3221-01.jpg)

### USB Type A to Type C Cable - approx 1 meter / 3 ft long

[USB Type A to Type C Cable - approx 1 meter / 3 ft long](https://www.adafruit.com/product/4474)
As technology changes and adapts, so does Adafruit. This&nbsp;&nbsp; **USB Type A to Type C** cable will help you with the transition to USB C, even if you're still totin' around a USB Type A hub, computer or laptop.

USB C is the latest industry-standard connector for...

In Stock
[Buy Now](https://www.adafruit.com/product/4474)
[Related Guides to the Product](https://learn.adafruit.com/products/4474/guides)
![Angled shot of a coiled black, USB-C to USB-A cable.](https://cdn-shop.adafruit.com/640x480/4474-02.jpg)

 **Fisher Price Classic Farmer Says See 'N Say**

Available at toy stores and online, such as [here](https://www.amazon.com/Fisher-Price-Classic-Farmer-Says/dp/B00IVJK8Y0). Note, this project uses the modern electronic toy, not a vintage mechanical one.

![hacks_seensay.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/760/medium640/hacks_seensay.jpg?1675020650)

### Shottky Diode

You can use a regular power diode such as the one below, but a proper [Shottky diode](https://www.digikey.com/en/products/detail/vishay-general-semiconductor-diodes-division/1N5819-E3-73/4764824) is even better, it only has a ~0.3V drop vs. closer to ~0.7V.

### 1N4001 Diode - 10 pack

[1N4001 Diode - 10 pack](https://www.adafruit.com/product/755)
This here is a 10 pack of the classic 1N4001 power blocking diode. These are good for reverse polarity protection (put it between your DC power jack and circuitry to avoid a negative-voltage that would zap your delicate electronics), kickback protection (place across your solenoids, relays...

In Stock
[Buy Now](https://www.adafruit.com/product/755)
[Related Guides to the Product](https://learn.adafruit.com/products/755/guides)
![ 10 pack of 1N4001 Diodes](https://cdn-shop.adafruit.com/640x480/755-03.jpg)

### "Wire Wrap" Thin Prototyping & Repair Wire - 200m 30AWG Blue

["Wire Wrap" Thin Prototyping & Repair Wire - 200m 30AWG Blue](https://www.adafruit.com/product/1446)
This stuff is called "wire-wrap wire" because it used to be used for wire-wrapping high-speed digital circuits on a special kind of contact board. It's pretty rare to see wire-wrapping in these days of low-cost PCB fabrication but the wire is still really handy for prototyping work. It's...

In Stock
[Buy Now](https://www.adafruit.com/product/1446)
[Related Guides to the Product](https://learn.adafruit.com/products/1446/guides)
![Large spool of Wire Wrap Thin Prototyping & Repair Wire](https://cdn-shop.adafruit.com/640x480/1446-03.jpg)

### Part: High Temperature Polyimide Tape
quantity: 1
1cm wide x 33 meter roll
[High Temperature Polyimide Tape](https://www.adafruit.com/product/3057)

## Optional

You can replace the toy's graphics with your own, or the handy downloadable graphics included in the guide. Vinyl sticker paper for laser printers works well, [such as this](https://www.amazon.com/gp/product/B086HK7RL3/?th=1).

# See N Say Brain Transplant

## CircuitPython

[CircuitPython](https://github.com/adafruit/circuitpython) is a derivative of [MicroPython](https://micropython.org) designed to simplify experimentation and education on low-cost microcontrollers. It makes it easier than ever to get prototyping by requiring no upfront desktop software downloads. Simply copy and edit files on the **CIRCUITPY** drive to iterate.

## CircuitPython Quickstart

Follow this step-by-step to quickly get CircuitPython running on your board.

[Download the latest version of CircuitPython for this board via circuitpython.org](https://circuitpython.org/board/adafruit_kb2040/)
 **Click the link above to download the latest CircuitPython UF2 file.**

Save it wherever is convenient for you.

![install_circuitpython_on_rp2040_RP2040_UF2_downloaded.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/655/medium640/install_circuitpython_on_rp2040_RP2040_UF2_downloaded.jpg?1618943202)

![](https://cdn-learn.adafruit.com/assets/assets/000/108/852/medium800/adafruit_products_KeeBoar_boot_reset.jpg?1644515196)

To enter the bootloader, hold down the **BOOT/**** BOOTSEL button**(highlighted in red above), and while continuing to hold it (don't let go!), press and release the**reset button**(highlighted in red or blue above).&nbsp;**Continue to hold the BOOT/BOOTSEL button until the RPI-RP2 drive appears!**

If the drive does not appear, release all the buttons, and then repeat the process above.

You can also start with your board unplugged from USB, press and hold the BOOTSEL button (highlighted in red above), continue to hold it while plugging it into USB, and wait for the drive to appear before releasing the button.

A lot of people end up using charge-only USB cables and it is very frustrating! **Make sure you have a USB cable you know is good for data sync.**

You will see a new disk drive appear called **RPI-RP2**.

&nbsp;

Drag the **adafruit\_circuitpython\_etc.uf2** file to **RPI-RP2.**

![install_circuitpython_on_rp2040_RP2040_bootloader_drive.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/656/medium640/install_circuitpython_on_rp2040_RP2040_bootloader_drive.jpg?1618943666)

![install_circuitpython_on_rp2040_RP2040_drag_UF2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/657/medium640/install_circuitpython_on_rp2040_RP2040_drag_UF2.jpg?1618943674)

The **RPI-RP2** drive will disappear and a new disk drive called **CIRCUITPY** will appear.

That's it, you're done! :)

![install_circuitpython_on_rp2040_RP2040_CIRCUITPY.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/658/medium640/install_circuitpython_on_rp2040_RP2040_CIRCUITPY.jpg?1618943864)

## Safe Mode

You want to edit your **code.py** or modify the files on your **CIRCUITPY** drive, but find that you can't. Perhaps your board has gotten into a state where **CIRCUITPY** is read-only. You may have turned off the **CIRCUITPY** drive altogether. Whatever the reason, safe mode can help.

Safe mode in CircuitPython does not run any user code on startup, and disables auto-reload. This means a few things. First, safe mode _bypasses any code in_ **boot.py** (where you can set **CIRCUITPY** read-only or turn it off completely). Second, _it does not run the code in_ **code.py**. And finally, _it does not automatically soft-reload when data is written to the_ **CIRCUITPY** _drive_.

Therefore, whatever you may have done to put your board in a non-interactive state, safe mode gives you the opportunity to correct it without losing all of the data on the **CIRCUITPY** drive.

### Entering Safe Mode
To enter safe mode when using CircuitPython, plug in your board or hit reset (highlighted in red above). Immediately after the board starts up or resets, it waits 1000ms. On some boards, the onboard status LED (highlighted in green above) will blink yellow during that time. If you press reset during that 1000ms, the board will start up in safe mode. It can be difficult to react to the yellow LED, so you may want to think of it simply as a slow double click of the reset button. (Remember, a fast double click of reset enters the bootloader.)

### In Safe Mode

If you successfully enter safe mode on CircuitPython, the LED will intermittently blink yellow three times.

If you connect to the serial console, you'll find the following message.

```terminal
Auto-reload is off.
Running in safe mode! Not running saved code.

CircuitPython is in safe mode because you pressed the reset button during boot. Press again to exit safe mode.

Press any key to enter the REPL. Use CTRL-D to reload.
```

You can now edit the contents of the **CIRCUITPY** drive. Remember, _your code will not run until you press the reset button, or unplug and plug in your board, to get out of safe mode._

## Flash Resetting UF2

If your board ever gets into a really _weird_ state and CIRCUITPY doesn't show up as a disk drive after installing CircuitPython, try loading this 'nuke' UF2 to RPI-RP2. which will do a 'deep clean' on your Flash Memory. **You will lose all the files on the board** , but at least you'll be able to revive it! After loading this UF2, follow the steps above to re-install CircuitPython.

[Download flash erasing "nuke" UF2](https://cdn-learn.adafruit.com/assets/assets/000/101/659/original/flash_nuke.uf2?1618945856)
# See N Say Brain Transplant

## Code the See N Say

## Text Editor

Adafruit recommends using the&nbsp; **Mu** &nbsp;editor for editing your CircuitPython code. You can get more info in&nbsp;[this guide](https://learn.adafruit.com/welcome-to-circuitpython/installing-mu-editor).

Alternatively, you can use any text editor that saves simple text files

## Download the Project Bundle

Your project will use a specific set of CircuitPython libraries, and the&nbsp; **code.py** &nbsp;file. To get everything you need, click on the&nbsp; **Download Project Bundle** &nbsp;link below, and uncompress the .zip file.

Drag the contents of the uncompressed bundle directory onto your KeeBoar board's&nbsp; **CIRCUITPY** &nbsp;drive, replacing any existing files or directories with the same names, and adding any new ones that are necessary.

## Upload the Code and Libraries to the KB RP2040

After downloading the Project Bundle, plug your KB2040 into the computer USB port. You should see a new flash drive appear in the computer's File Explorer or Finder (depending on your operating system) called&nbsp; **CIRCUITPY**. Unzip the folder and copy the following items to the KB2040's&nbsp; **CIRCUITPY** &nbsp;drive.&nbsp;

- **lib** &nbsp;folder
- **wavs** folder
- **code.py**

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/See_N_Say/code.py

## Make Your Own

[Here's a great guide](https://learn.adafruit.com/microcontroller-compatible-audio-file-conversion) on prepping your own audio files for use on microcontrollers.

To convert your own .wav files, use audio software such as&nbsp;[Audacity](https://manual.audacityteam.org/man/mp3_export_options.html)&nbsp;to save them with these settings:

- bits per sample: **16**
- sample rate: **11kHz&nbsp;**
- channels: **mono**

A great place to start is freesound.org. The sounds used in this project are:

https://freesound.org/s/86938/  
https://freesound.org/s/125557/  
https://freesound.org/s/200338/  
https://freesound.org/s/339918/  
https://freesound.org/s/353180/  
https://freesound.org/s/405628/  
https://freesound.org/s/417281/  
https://freesound.org/s/434085/  
https://freesound.org/s/523952/  
https://freesound.org/s/612857/  
https://freesound.org/s/619087/  
https://freesound.org/s/633976/

## How It Works

The code does two key things -- wait for button presses and play audio. Here's how it does it.

First, we import libraries, including `os` for reading the file system, `audiocore`, `audiobusio`, and `audiomixer` for audio playback/mixing, and `digitalio` and `adafruit_debouncer` for button input.

```auto
import os
import audiocore
import board
import audiobusio
import audiomixer
from digitalio import DigitalInOut, Pull
from adafruit_debouncer import Button
```

## Button Setup

Next, we set up the button input pins and button objects using the debouncer library.

```auto
button_pins = (
                board.D2, board.D3, board.D4, board.D5,
                board.D6, board.D7, board.D8, board.D9,
                board.D10, board.MOSI, board.MISO, board.SCK,
)
buttons = []   # will hold list of Debouncer button objects
for pin in button_pins:   # set up each pin
    tmp_pin = DigitalInOut(pin)  # defaults to input
    tmp_pin.pull = Pull.UP      # turn on internal resistor
    buttons.append(Button(tmp_pin, value_when_pressed=False))
```

## Sound Setup

The sounds list is created by alphabetically sorting the **.wav** files found in the **wavs/** directory. This means you can place track numbers in front of your file names to assign them to the desired spot on the wheel.

Then, the `audio` object is created to send digital audio over **I2S** to the amp. The `mixer` object is created to play the chosen wav, and the audio mixer is set to play with a half-volume voice level of 0.5.

```auto
sounds = []
for filename in sorted(os.listdir("/wavs")):
    filename = filename.lower()
    if filename.endswith(".wav") and not filename.startswith("."):
        sounds.append(filename)

audio = audiobusio.I2SOut(bit_clock=board.A1, word_select=board.A2, data=board.A3)
mixer = audiomixer.Mixer(voice_count=1, sample_rate=11025, channel_count=1,
                         bits_per_sample=16, samples_signed=True)

audio.play(mixer)
mixer.voice[0].level = 0.5
```

## play\_sound() Function

The `play_sound()` function is defined to receive an integer number which it then uses to open the corresponding wav file and play it once.

```auto
def play_sound(sound_number):
    wave_file = open(("wavs/" + sounds[sound_number]), "rb")
    wave = audiocore.WaveFile(wave_file)
    mixer.voice[0].play(wave, loop=False)
```

## Main Loop

The main loop of the program checks for button presses and when one is pressed it calls the `play_sound()` function to play the sound.

```auto
while True:
    for i in range(len(buttons)):
        buttons[i].update()
        if buttons[i].pressed:
            play_sound(i)
```

# See N Say Brain Transplant

## Build the See N Say Circuit

![](https://cdn-learn.adafruit.com/assets/assets/000/117/762/medium800/hacks_seesay-0737.jpg?1675026690)

## Open the Case

Flip the See N Say over and unscrew the battery door, then remove the batteries.

Unscrew the seven screws and set them aside, then carefully pull open the case.

![hacks_seesay-0739.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/765/medium640/hacks_seesay-0739.jpg?1675026836)

![hacks_seesay-0740.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/766/medium640/hacks_seesay-0740.jpg?1675026846)

![hacks_seesay-0741.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/767/medium640/hacks_seesay-0741.jpg?1675026854)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/768/medium800/hacks_seesay-0742.jpg?1675026910)

## Sound Button Press

Most of the pull string mechanism is there to spin the selector arrow, the only part in the front case section that causes sounds to play is the small plastic nub on the central gear -- when the string is fully pulled out that nub raises up slightly and presses the associated rubber dome switch.

![hacks_seesay-0743.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/769/medium640/hacks_seesay-0743.jpg?1675027063)

![hacks_seesay-0744.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/770/medium640/hacks_seesay-0744.jpg?1675027092)

## Button Pad

The electronics are all on a single PCB. The center of the PCB is a set of 12 open contact buttons that are closed by pressing rubber domes with conductive pills in them. This is the same as what you'll find in a video game controller or rubber dome switch keyboard.

Carefully remove the rubber ring, then unscrew the two screws holding the PCB in place.

![hacks_seesay-0745.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/771/medium640/hacks_seesay-0745.jpg?1675027143)

![hacks_seesay-0746.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/772/medium640/hacks_seesay-0746.jpg?1675027154)

![hacks_seesay-0748.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/773/medium640/hacks_seesay-0748.jpg?1675027167)

![hacks_seesay-0750.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/774/medium640/hacks_seesay-0750.jpg?1675027240)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/786/medium800/hacks_seesay-0752.jpg?1675027424)

## Glue Removal

You'll desolder the battery wires and speaker wires from the board, since we only need the button contacts and common contact test points, the rest of our electronics will be transplanted.

Flip over the PCB and you'll see the battery wires and speaker wires have hot glue blobs on them for strain relief.

Dab on some isopropyl alcohol to loosen and then remove the hot glue.

![hacks_seesay-0755.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/787/medium640/hacks_seesay-0755.jpg?1675043328)

![hacks_seesay-0756.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/789/medium640/hacks_seesay-0756.jpg?1675043457)

![hacks_seesay-0757.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/790/medium640/hacks_seesay-0757.jpg?1675043476)

![hacks_seesay-0758.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/791/medium640/hacks_seesay-0758.jpg?1675043371)

Warning: 

## Wire Desoldering

Heat the **two gray speaker wire** solder points and the **two (one red, one black) battery**  **wire** solder points with a soldering iron while gently pulling down on the wires with tweezers or pliers.

![hacks_seesay-0759.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/792/medium640/hacks_seesay-0759.jpg?1675043515)

![hacks_seesay-0760.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/793/medium640/hacks_seesay-0760.jpg?1675043567)

## KB2040 Prep

Jumper the **USB+ \> RAW&nbsp;** pads with some solder. This will allow us to use **5V** power from the MiniBoost (which takes the ~3V AA battery input and converts it). The I2S works better with 5V as well.

![hacks_seesay-0766.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/794/medium640/hacks_seesay-0766.jpg?1675043553)

![hacks_seesay-0767.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/795/medium640/hacks_seesay-0767.jpg?1675043831)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/797/medium800/hacks_seensayfritzfinal.jpg?1675044765)

## KB2040 on PermaProto

Solder the KB2040 to the PermaProto board as shown.

You can use the castellated pads instead of adding pins if you like, this keeps it a bit more svelte.

![hacks_seesay-0768.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/796/medium640/hacks_seesay-0768.jpg?1675043654)

![hacks_seesay-0769.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/798/medium640/hacks_seesay-0769.jpg?1675044851)

## Amp

Solder the MAX98357A I2S amplifier board to the PermaProto as shown.

You can use bare header pins as shown to keep things low profile.

![hacks_seesay-0770.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/799/medium640/hacks_seesay-0770.jpg?1675044884)

![hacks_seesay-0779.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/800/medium640/hacks_seesay-0779.jpg?1675044839)

## MiniBoost Prep

Add some Kapton tape or electrical tape to insulate the MiniBoost mounting hole from the PermaProto.

This isn't normally necessary, but since we're keeping it super low profile, the mounting hole plating could short some pads otherwise.

Solder the MiniBoost to the PermaProto board.

![hacks_seesay-0783.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/801/medium640/hacks_seesay-0783.jpg?1675119398)

![hacks_seesay-0786.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/802/medium640/hacks_seesay-0786.jpg?1675090830)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/805/medium800/hacks_seesay-0787.jpg?1675045436)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/843/medium800/hacks_seesay-0788.jpg?1675091628)

Danger: 

## Button Pad Wiring

Conveniently, there is a test pad next to each pair of switch contacts! Solder a thin wire, approximately 5" long, to each test pad as well as the GND pad.

Wire wrap wire, enamel coated magnet wire, and 28-30 gauge silicone covered wire all work well for this. Make an effort to run the wires inward so they won't disrupt the elastomer pad.

![hacks_seesay-0790.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/844/medium640/hacks_seesay-0790.jpg?1675091743)

![hacks_seesay-0791.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/845/medium640/hacks_seesay-0791.jpg?1675091672)

![hacks_seesay-0793.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/846/medium640/hacks_seesay-0793.jpg?1675091824)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/850/medium800/hacks_seesay-0798.jpg?1675092133)

## Button Connections

Place the button board and PermaProto into the back case temporarily to get a sense of the wire lengths and trim/strip as needed.

Then, one-by-one, feed a wire through the PCB's center hole and solder the twelve button wires to their respective GPIO pins, as well as the GND from the button board to the PermaProto.

![hacks_seesay-0799.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/851/medium640/hacks_seesay-0799.jpg?1675121135)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/852/medium800/hacks_seesay-0803.jpg?1675040737)

## KeeBoar Ground

Since the KB2040 is hanging off the edge of the board for space considerations, you'll need to free-wire its GND to the PermaProto. Run a wire from each side to the ground rails, so both sides of the PermaProto have common ground.

![hacks_seesay-0804.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/853/medium640/hacks_seesay-0804.jpg?1675040669)

## Battery Box Connections

Place some insulating tape over the battery box contacts so nothing is shorted to the PermaProto accidentally.

Solder the battery box **ground** (black) wire to PermaProto ground rail, and the battery box **+V** (red) wire to the **Vin** pad on the MiniBoost.

Solder the MiniBoost **GND** to the PermaProtoGround rail.

To prevent any issues in case the KB2040 is plugged into USB when the batteries are also supplying power, solder a Shottky diode from MiniBoost **5V** to PermaProto power rail as shown.

Run a wire from one PermaProto power rail to the other, then wire the KB2040 **RAW** pin to the PermaProto power rail.

![hacks_seesay-0806.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/854/medium640/hacks_seesay-0806.jpg?1675040889)

![hacks_seesay-0807.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/855/medium640/hacks_seesay-0807.jpg?1675040921)

![hacks_seesay-0815.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/856/medium640/hacks_seesay-0815.jpg?1675041107)

## Power Enable Switch

You'll turn the toy on and off with a DPST toggle switch that shorts the MiniBoost enable pin to ground.&nbsp;

Solder one wire to the center common pin and another to either outer pin of the switch.

Ream out the packaging key hole a bit and then insert the switch through it. Tighten the nut from the other side to secure.

Solder the center wire to ground and the other wire to the MiniBoost **En pin.**

![hacks_seesay-0817.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/857/medium640/hacks_seesay-0817.jpg?1675041166)

![hacks_seesay-0818.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/858/medium640/hacks_seesay-0818.jpg?1675041278)

![hacks_seesay-0819.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/859/medium640/hacks_seesay-0819.jpg?1675041363)

![hacks_seesay-0820.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/860/medium640/hacks_seesay-0820.jpg?1675041375)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/866/medium800/hacks_seesay-0821.jpg?1675041439)

## I2S Audio Amp Wiring

Wire the MAX 98357A I2S Amp as follows:

- KB2040 **A1** to **BCLK** (bit clock)
- KB2040 **A2** to **LRC** (word select)
- KB2040 **A3** to **DIN** (data)
- **Ground** to **GND**
- 5V power rail (from MiniBoost output post-diode) to **Vin**
- **Speaker wires&nbsp;** to&nbsp; **speaker output**

![hacks_seesay-0826.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/868/medium640/hacks_seesay-0826.jpg?1675041439)

Place the elastomer button pad ring back on the PCB, pulling the rubber nub legs through their respective holes.

![](https://cdn-learn.adafruit.com/assets/assets/000/117/874/medium800/hacks_seesay-0828.jpg?1675041792)

## Test It

This is a great time to test it out! Put the two AA batteries back in the case, flip on the toggle switch, and press each rubber dome button to hear the audio.

## Secure the Brain

Use double-stick foam tape to secure the PermaProto and elecronics to the inside of the case on the back of the battery box.

Screw the original PCB back in place.

![hacks_seesay-0831.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/880/medium640/hacks_seesay-0831.jpg?1675041887)

![hacks_seesay-0832.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/881/medium640/hacks_seesay-0832.jpg?1675041895)

## Wire Dressing

Use Kapton tape to secure wiring in any places where it may be a bit loose in order to avoid any snags.

![hacks_seesay-0833.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/882/medium640/hacks_seesay-0833.jpg?1675041972)

![hacks_seesay-0839.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/883/medium640/hacks_seesay-0839.jpg?1675041901)

## Close the Case

Pull and hold the pull-string to get the arced gear out of the way (it will slide under the transplanted PermaProto board during operation), then close the case.

Release the string slowly to make sure there are no obstructions.

![hacks_seesay-0840.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/884/medium640/hacks_seesay-0840.jpg?1675042069)

## Screw the Case in Place

Refasten the seven case screws, then insert two AA batteries and close the battery door, securing it with the captive screw.

![hacks_seesay-0843.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/885/medium640/hacks_seesay-0843.jpg?1675042081)

![hacks_seesay-0844.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/886/medium640/hacks_seesay-0844.jpg?1675042115)

![](https://cdn-learn.adafruit.com/assets/assets/000/118/005/medium800/hacks_seesay-0937.jpg?1675217395)

https://youtu.be/41_llWmVdXU

# See N Say Brain Transplant

## See N Say Graphics

![](https://cdn-learn.adafruit.com/assets/assets/000/117/997/medium800/hacks_see_n_say_kesinger_print.png?1675216936)

You can print out this wonderful set of illustrations by the incredible [Brian Kesinger](https://www.briankesinger.com/) and use them to customize your city-themed See N Say!

Matte finish vinyl sticker paper for laser printers worked very well for me -- I used the "heavy paper" setting in the print dialog to make sure the toner bonded well with the paper.

If you'd like to use other graphics, import the graphic above into a graphics editor at 100%, change things, then save.

Print at 100% size, cut carefully with a hobby knife, and peel and stick, being sure to smooth out bubbles as you go.

![](https://cdn-learn.adafruit.com/assets/assets/000/117/998/medium800/hacks_seesay-0933.jpg?1675217144)

![](https://cdn-learn.adafruit.com/assets/assets/000/117/999/medium800/hacks_seesay-0930.jpg?1675217196)

![](https://cdn-learn.adafruit.com/assets/assets/000/118/000/medium800/hacks_seesay-0931.jpg?1675217213)

![](https://cdn-learn.adafruit.com/assets/assets/000/118/001/medium800/hacks_seesay-0932.jpg?1675217228)

![](https://cdn-learn.adafruit.com/assets/assets/000/118/002/medium800/hacks_seesay-0934.jpg?1675217239)

![](https://cdn-learn.adafruit.com/assets/assets/000/118/003/medium800/hacks_seesay-0942.jpg?1675217269)


## Featured Products

### Adafruit KB2040 - RP2040 Kee Boar Driver

[Adafruit KB2040 - RP2040 Kee Boar Driver](https://www.adafruit.com/product/5302)
A wild Kee Boar appears! It’s a shiny **KB2040**! An Arduino Pro Micro-shaped board for Keebs with RP2040. (#keeblife 4 evah) A lot of folks like using Adafruit parts for their Keeb builds – but with the ItsyBitsy not being pin-compatible with the Pro Micro pinout, it...

In Stock
[Buy Now](https://www.adafruit.com/product/5302)
[Related Guides to the Product](https://learn.adafruit.com/products/5302/guides)
### Adafruit I2S 3W Class D Amplifier Breakout - MAX98357A

[Adafruit I2S 3W Class D Amplifier Breakout - MAX98357A](https://www.adafruit.com/product/3006)
Listen to this good news - we now have an all in one digital audio amp breakout board that works incredibly well with the&nbsp;[Raspberry Pi](https://www.adafruit.com/category/105)! If you're looking for an easy and low cost way to get your digital sound files...

In Stock
[Buy Now](https://www.adafruit.com/product/3006)
[Related Guides to the Product](https://learn.adafruit.com/products/3006/guides)
### Adafruit MiniBoost 5V @ 1A - TPS61023

[Adafruit MiniBoost 5V @ 1A - TPS61023](https://www.adafruit.com/product/4654)
This adorable little board will come in very handy whenever you need a good amount of 5V power. It's the size of a linear regulator, but it's actually a mini-booster! Input 2-5VDC on one side, and **get 5V at up to 1A supply** on the other. Perfect for use with...

In Stock
[Buy Now](https://www.adafruit.com/product/4654)
[Related Guides to the Product](https://learn.adafruit.com/products/4654/guides)
### Adafruit Perma-Proto Quarter-sized Breadboard PCB - Single

[Adafruit Perma-Proto Quarter-sized Breadboard PCB - Single](https://www.adafruit.com/product/1608)
Customers have asked us to carry basic perf-board, but we never liked the look of most basic perf: it's always crummy quality, with pads that flake off and no labeling. Then we thought about how people **actually** prototype - usually starting with a solderless breadboard and...

In Stock
[Buy Now](https://www.adafruit.com/product/1608)
[Related Guides to the Product](https://learn.adafruit.com/products/1608/guides)
### Mini Panel Mount SPDT Toggle Switch

[Mini Panel Mount SPDT Toggle Switch](https://www.adafruit.com/product/3221)
This or that, one or the other, perhaps or perhaps not! So hard to make decisions these days without feeling like you're just going back and forth constantly. Deciding whether or not to use this mini toggle switch? That's the easiest decision you'll make all day!

This...

In Stock
[Buy Now](https://www.adafruit.com/product/3221)
[Related Guides to the Product](https://learn.adafruit.com/products/3221/guides)
### USB Type A to Type C Cable - approx 1 meter / 3 ft long

[USB Type A to Type C Cable - approx 1 meter / 3 ft long](https://www.adafruit.com/product/4474)
As technology changes and adapts, so does Adafruit. This&nbsp;&nbsp; **USB Type A to Type C** cable will help you with the transition to USB C, even if you're still totin' around a USB Type A hub, computer or laptop.

USB C is the latest industry-standard connector for...

In Stock
[Buy Now](https://www.adafruit.com/product/4474)
[Related Guides to the Product](https://learn.adafruit.com/products/4474/guides)
### 1N4001 Diode - 10 pack

[1N4001 Diode - 10 pack](https://www.adafruit.com/product/755)
This here is a 10 pack of the classic 1N4001 power blocking diode. These are good for reverse polarity protection (put it between your DC power jack and circuitry to avoid a negative-voltage that would zap your delicate electronics), kickback protection (place across your solenoids, relays...

In Stock
[Buy Now](https://www.adafruit.com/product/755)
[Related Guides to the Product](https://learn.adafruit.com/products/755/guides)
### "Wire Wrap" Thin Prototyping & Repair Wire - 200m 30AWG Blue

["Wire Wrap" Thin Prototyping & Repair Wire - 200m 30AWG Blue](https://www.adafruit.com/product/1446)
This stuff is called "wire-wrap wire" because it used to be used for wire-wrapping high-speed digital circuits on a special kind of contact board. It's pretty rare to see wire-wrapping in these days of low-cost PCB fabrication but the wire is still really handy for prototyping work. It's...

In Stock
[Buy Now](https://www.adafruit.com/product/1446)
[Related Guides to the Product](https://learn.adafruit.com/products/1446/guides)

## Related Guides

- [Adafruit MAX98357 I2S Class-D Mono Amp](https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp.md)
- [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040.md)
- [Planetary Gear Dreidels](https://learn.adafruit.com/planetary-gear-dreidels.md)
- [Motorized Camera Slider 2-Axis](https://learn.adafruit.com/motorized-camera-slider-2-axis.md)
- [LED Trampoline](https://learn.adafruit.com/led-trampoline.md)
- [Rotary Phone Dial Keypad](https://learn.adafruit.com/rotary-phone-dial-keypad.md)
- [How to Choose a Microcontroller](https://learn.adafruit.com/how-to-choose-a-microcontroller.md)
- [MX MIDI Guitar](https://learn.adafruit.com/mx-midi-guitar.md)
- [DOOM Keeb](https://learn.adafruit.com/doom-keeb.md)
- [PB Gherkin 30% keyboard with KMK, CircuitPython, & KB2040](https://learn.adafruit.com/pb-gherkhin-30-keyboard-with-kmk-circuitpython-kb2040.md)
- [Hacking Yoto Music Players](https://learn.adafruit.com/hacking-the-yoto-music-players.md)
- [Breadboards for Beginners](https://learn.adafruit.com/breadboards-for-beginners.md)
- [ Analog IC Insights On-the-Go by Maxim Integrated](https://learn.adafruit.com/maxim-app.md)
- [3D Printed Frankenstein Monster with NeoPixel Eyes](https://learn.adafruit.com/neopixel-frankenstein.md)
- [Super Nintendo USB Controller](https://learn.adafruit.com/super-nintendo-usb-controller.md)
- [Soundboard Speaker for Bikes & Scooters](https://learn.adafruit.com/soundboard-speaker-for-bikes-scooters.md)
