About a month ago, an artist named Brian Kane published a viral video showing a Big Mouth Billy Bass novelty singing fish, seemingly voiced by Amazon’s Alexa virtual assistant. The internet went nuts for it, and so did I -- but mostly I just wanted to know how it worked so that I could make my own.

After seeing a number of Raspberry Pi projects that made use of Alexa, I initially assumed that Brian had created an Alexa-powered Pi project that doubled as a means to animate the existing Billy Bass hardware -- and that may be the case. I even posed this idea on my weekly YouTube show, Maker Update.

But after giving it some more thought, I figured the easiest hack would be a way to simply use the audio from a $49 Amazon Echo, and process it through an Arduino to drive existing motors.

I already had an Arduino and a motor shield handy (though this was my first time using the shield).

Next, I ordered the Billy Bass used on Amazon for around $15. I’m sure you can pick up a used one at a yard sale or Thrift store for less money, but I wanted one quickly. I also ordered the Echo Dot new.

With those ordered, I moved on to research. Two Instructables provided me with hope: this 2012 guide from sfool on using an Arduino to make a servo move to sound and this 2013 guide from Dotten on understanding the animatronics of a Billy Bass toy.

Understanding that the Billy Bass (much like a Furby) is essentially driven by two cheap 5v DC toy motors -- the problem then becomes simply how to make these motors twitch in response to sound. With a little trial and error, I found a workable solution. The code is far from perfect and there are a lot of other features I want to build in, but I wanted to get this up so that everyone can help make this better.

Materials Needed

  • Big Mouth Billy Bass Singing Fish (1)
  • Arduino Uno (1)
  • Arduino Uno power supply (1)
  • Adafruit Motor Shield v2 (1)
  • Panel-mount minijack (1)
  • Stranded hookup wire (multiple colors helps)
  • Amazon Echo Dot (though any audio source should work) (1)
  • Small rechargeable speaker of some kind (1)
  • Minijack (⅛”) audio cable (1)
  • Minijack splitter cable adapter (1)

Tools Needed

  • Small Screwdriver
  • Soldering Iron and Solder
  • Wire strippers
  • Snips
  • Drill and bits

Step 1: Prepare the Fish

For better or worse, by used fish was dead on arrival. At least I had no hesitation about opening it up and hacking it. For my hack, simply undo the screws on the back, open it up, and apply gentle pressure to unseat the cable harnesses so that the back can be removed completely.

To create more room for the electronics we’ll be adding, unscrew and remove the Billy Bass circuit board and piezo buzzer.

What you have left is one 4-wire harness sticking up from the fish. This includes two wires that animate the mouth (you can see them trail into the fish) and two wires that raise either the head or the tail depending which way direction you run the motor.

The last step in preparing the fish is to cut four equal lengths of different colored wire, expose and tin the tips, and insert the ends into each of the four sockets in the wire harness. In the next step, we’ll connect these to the Arduino motor shield.

<p>Is the bass powered by the arduino uno or does it need to be powered by the ac adapter/batteries?</p>
<p>Great project!!</p><p>But I wonder about a different method: would it be possible to connect the jack for an audio source in such a way that it replaces the song signal Billy Bass uses, and not bother with the Arduino and motor shield?</p>
<p>This was Great way to get introduced to Arduino. Everything has worked exactly as described. First time N00B on using the Arduino Programming tool and uploading code to the board. Now, since I know ZIP about coding, I may have to wait until others &quot;perfect&quot; the code...or...maybe not...I do know how to screw things up all by myself...</p>
<p>Hello, My big mouth bass has the red and black wires and also the orange and yellow ones. However, the yellow has another white attached and the oranges has another dark orange attached. And also it does not have those white connectors, it is directy wired to the bord What does this mean and how do I Do the project with it?</p>
<p>iv'e got some ideas for the tail and neck. im thinking a timer that taps the tail at a regular interval like it did during its normal songs .5 sec maybe. as for the neck im thinking a 4 second timer. if the audio threshold is reached set a timer for 4 sec, count down to 0. any time the threshold jumps up, reset to 4 sec.</p><p>if timer != 0 neck motor is on. 6 v is too much,( grinds the gears) im going to try 3.5v </p><p> im also thinking we can ground the motors with the output pins, and not need the motor drivers.</p><p>im going to mess with it tomorrow.</p>
I like it. I'm looking into more motor sketches that integrate the (millis) function for timing things without introducing delay that would effect the mouth movement. There's a lot out there to wrap your head around (no pun intended) but I prefer that to there being no info.
<p style="margin-left: 20.0px;">After appealing to the Reddit Arduino forum, one lovely sole named <a href="https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay" style="">Hello_Mouse</a> gave me a few ideas to streamline the code and possibly get the tail moving without compromising the mouth movement. You can read the thread here (<a>https://www.reddit.com/r/arduino/comments/5heyq7/n...</a>, but the gist is that perhaps I'm wasting time by ramping the motors up and down instead of just driving them at a single defined speed. As for the tail, I'm told to investigate the &quot;Blink without Delay&quot; example, found here (<a>https://www.arduino.cc/en/Tutorial/BlinkWithoutDel...</a> and explained here (<a>https://www.baldengineer.com/blink-without-delay-e...</a>. I did some playing around with it and I'm optimistic, but it will take some time for me to figure out how to swap out the LED example given for a motor function. Seems possible, though.</p><p style="margin-left: 20.0px;">That's it. Just wanted to give you all an update. I'm also exploring a way to simply drive both motors separately using two Arduinos and two inexpensive DC motor shields from Pololu.</p>
<p>So I got this thing put together and it works; great instructions! Now I want to make it more or less self-contained. Power is my main concern, though; has anybody tried running this all off of a LiPo battery?? I'm tempted to get a PowerBoost1000, make a power strip and give it a shot...</p>
<p>I haven't tried, but I'm optimistic. I don't expect that the power demands of just one or two little DC motors is all that much, but I could be wrong. Let me know how it goes. </p><p>My goal is to just have one power cord going to the whole thing and find a way to get audio to Billy wirelessly using a Bluetooth dongle like this: https://www.amazon.com/dp/B008AGQMQC/ref=wl_it_dp_o_pC_nS_ttl?_encoding=UTF8&amp;colid=8ZA72X1NMKIT&amp;coliid=I20UKXGESPER28</p>
<p>I was thinking the same thing, too; I tried using a 9v battery to power the motors and it seemed to work, I just don't know how long it would last for. I was also thinking of hooking up the power switch on the back to the battery so I could turn it on and off, and connect it to the Dot via Bluetooth like you were saying.</p><p>Any updated versions of the hardware code out there yet?? That's what I'm struggling with adjusting the most, and I'd love to get the head to face forward on activation like Brian's did.</p>
<p>I also built this and I was thinking the next step would be to solder the power supply from the 4 AA batteries in series on the back of the billy bass to the 5-12V motor power on the arduino shield. I think you can leave the VIN Jumper sleeve on and that keeps the power supply the same between the board and the motors, though ideally I think you would want to have them separate to protect the board. The 9V battery probably wont last long because it will deliver inconsistent current, I would recommend a lead acid battery maybe?</p>
<p>I think I'm going to go with a PowerBoost and 3.7v Lithium Ion battery; I really want to set it up as an animated Bluetooth speaker I can connect Alexa (or even my iPhone to for podcasts like Bill Burr's) to, so that's the ultimate goal at this point.</p><p>Has anybody found or written any code to animate the head and/or tail on Alexa activation?? That'd be cool to include in the build, too, but my C skills are pretty n00b level</p>
<p>I got the head and tail to move properly with initiation of Alexa, but I still haven't resolved the interference that Donald also encountered (the head would come up but the mouth wouldn't move properly). I originally was using the 2-DC motor setup on the newer Billy Bass, but after blowing up a capacitor trying to figure out how to get the head/tail to play nice with the mouth motor, I ordered an older Billy Bass that has the 3-DC motor setup (one for head, one for tail, one for mouth) so I'll see if I have better luck. Trying to integrate a signal filter and ordered a different power supply and hoping that will resolve the interference. If I make any progress I will be sure to let you know and link you to the code!</p>
<p>I'm excited to hear what happens! Thanks for the update.</p>
<p>I had the blessing and curse of a battery compartment that didn't work to begin with. I tried continuity testing the compartment and it's just mysteriously defective -- so I jumped right to using an external supply. </p><p>That said, if I were to make this a wireless project, I would probably try combining one of the larger 3.7v Lithium Ion battery packs from Adafruit and a Powerboost board to bring it up to bring it up to 5. You'd still want to wire a power switch though so it's not constantly running.</p>
<p>Just wanted to say thanks with a gif (if it will work) for the great instructable!</p>
<p>I'm so glad it worked out! It really makes me happy to see something I made actually motivate and help others to make it too. It's a good feeling.</p>
<p>So I am actually in the process of piecing this whole thing together using your directions! Everything you've suggested as worked thus far, however, I seem to be struggling with a lack of power to the mouth motor (or the head/tail motor I am playing with that as well). Any suggestions? The mouth just doesn't open up all the way. Thanks!</p>
<p>Is it opening and closing, but just not as much as you'd like? Is it similar to the action in the video, or much less pronounced? I'm using a 9v, 1amp power supply, for what's worth. Also, be sure to raise the volume on the audio you're supplying to the Arduino. Since the movement is based on the audio source, low volume will result in restrained movement.</p>
<p>Ah ha! Thanks for the reply. In the interim since commenting I bumped up the current and added an audio gain, that seemed to solve the problem as you suggested. I also ordered a 9v 2A power supply in the event that the interference is due to a lack of current? I need to measure the current draw from the motors still, it's on the to-do list. Presently working on a filter for some of the low-signal noise and trying to address that pesky head/tail and mouth motor interference you were referencing. If I make considerable headway (get it... head motor, headway...) I will let you know!</p>
<p>Excellent! I'm excited to see the result.</p>
<p>So in my experimentation I blew off the electrolytic capacitor on the head/tail motor. By chance can you see what size that capacitor is on yours?</p>
<p>Ha! I just went looking for this hidden little guy and found that I melted mine at some point to. I can still see that it's a 100uf though. Hope that helps.</p>
<p>ive got an idea to make the neck bend out on the first sound and bend bck a few seconds after the sound stops. </p>
Excellent! If you like, you can email me the modified code at Donald@makerprojectlab.com and I can test it. If it works, I'm happy to credit you in the updated code.
<p>Is there any way to hook up a device that would enable switching <br>between the original audio and movement and this whole setup? (Space <br>would not be an issue)</p>
<p>It's possible. I would just find a way to switch the motor connections between the original board and the Arduino.</p>
<p>Currently I have 6 billy 'bigmouth' Bass. My goal is to oneday have a wall of billy's, connected to sign a chorus. First the fish then the music!</p>
<p>Have you checked out the Sashimi Tabernacle Choir? https://www.youtube.com/watch?v=kYlSTvAW1Po</p>
<p>Sorry, great project and thanks for the assistance with my project. Looking to hear of the program updates</p>
<p>uh... that's sing..... uh</p>
<p>This is the most fun type of hacking! Taking something old and irrelevant, and spicing it up with a hybrid mix of newer tech and older aesthetics, and a different functionality.It would be awesome if you could turn the Billy Bass into a wireless bluetooth speaker that hung on the wall and sang songs to you!</p>
<p>Great idea! In it's current configuration it doesn't do so well with music -- just sorta hangs its mouth open. Speech is perfect though, so audiobooks and podcasts. You could also easily tweak it into a sorta of fortune teller fish. Maybe press a button and have it randomly select a pre-recorded fortune to tell. </p><p>My next step is to try and adapt this so that it can be a self-contained thing for my wall instead of a mess of electronics on my table. So that means I need to figure out a battery solution and maybe find a way to amplify audio from within the plaque so that an external speaker isn't necessary.</p>
<p>It's like a modern day Teddy Ruxpin!</p>
<p>I wish we could've had this 20 years ago. &quot;Step. Away. From. The. Printer.&quot;</p>
That is hilarious! I'll bet that can be done with those talking toy parrots I've seen at Cracker Barrel!
<p>Yes, there's a whole world of these types of toys thatI'm eager to try. I want to get my hands on a Furby next, but a parrot would be great too. You could upgrade it with a longer recording time and use it to leave messages for your family.</p>
<p>This is great! I haven't seen a Big Mouth Billy Bass in forever!</p>
<p>It's also fun to have him read podcasts!</p>
<p>This is hilarious! I love it :)</p>
<p>Thanks! I can't believe it's taken me this long to write my first Instructable.</p>

About This Instructable




Bio: I run the Maker Project Lab blog, and a weekly video series called Maker Update. Email me at donald@makerprojectlab.com
More by Donald Bell:Raspberry Pi Home Network Music System Animate a Billy Bass Mouth With Any Audio Source 
Add instructable to: