Up, not North

Portal turret plushie

When I finally got around to playing Portal, I was a bit surprised at how much the Internet loved the companion cube. Sure, the cube is pretty great, but in my mind it pales in comparison to the turrets, the real scene-stealers of the game. In fact, they inspired a Veruca Salt-esque covetousness in me.

I wanted one.

Badly.

And, of course, it just wouldn’t be the same if it didn’t talk…

With the excitement of Portal 2 coming out, and in collaboration with Leigh Nunan, I finally was able to get my turret. Or, rather, to make it.

We’ve named her Trudi. Judging by her head-to-body ratio, Trudi’s a baby turret.

Features:

  • Authentic game dialogue
  • Motion detector, so it knows when you’re there and when you’ve left
  • Pressure sensor, so it knows when you’ve picked it up
  • Tilt sensor, so it knows when you’ve knocked it over
  • LED light-up eye
  • Exaggerated features for extra adorableness

I can barely hem a pair of pants, so I’m certainly not skilled enough to design and make a plush toy. Fortunately, I was introduced to Leigh Nunan; amongst other things, Leigh has created an incredible giant squid plushie that’s about twice as large as I am. Leigh both designed the turret pattern and sewed it together (which, to me, is essentially magic).

Here’s the Terminator-esque skeleton of the electronics and supporting framework.

The structure is made from heavy-gauge copper wire, a laser-cut platform, and hot glue. It may not be pretty, but it gets the job done. Internally, the electronics are housed in a plastic cup to keep them separate from the stuffing (thanks for the suggestion, Adam Smith!).

As much as we’d love to make you one or sell you a kit, the last time I suggested doing something like that I was very quickly disuaded. So, if anyone from Valve sees this and wants to talk about giving us permission, or at least turning a blind eye, please get in touch! Otherwise, sorry: you’ll have to make your own. Information about the electronics are provided below. The pattern is still a work-in-progress, but once Leigh’s ready I’ll post that here, too.

Electronics

The circuit is made of:

If I make more, I’ll use something like a BBB instead of an Arduino to keep costs down, but I used what I had handy.

The Passive Infrared sensor detects changes, so it can give a lot of false positives and false negatives; in the future I might try an IR rangefinder instead, but they come with their own problems.

I’m particularly proud of the “lift” sensor: it’s just a little button on the bottom of one of the legs. The weight of the plushie keeps it pressed when it’s standing up.

The LEDs are completely independent of the rest of the electronics. In a future version I’ll have them controlled by the Arduino, so I can fade them out when the plushie is knocked over.

If you’d like, you can download the code. I wrote a function to randomly play a sound file from a given directory, and then tied a directory to each event. It’s not quite as simple as “event triggers sound”: it only places a “tipped over” event if it’s also “lifted,” after being righted it plays an “activated” sound before resuming normal behaviour, etc. All it all, the interactivity works pretty well (if I say so myself).

What’s next?

There are, of course, many little improvements that both Leigh and I want to make to our respective parts of the design. There will be at least one more revision, because we both want to have one to keep, so we’ll have a chance to incorporate things we’ve learned from this first version.

As mentioned above, I’d like to have the LEDs controlled by the Arduino, so that they can fade out when the turret “shuts down.” I’d also like to add in an additional amplifiers, to allow a wider range of volumes, and make the controls a little more accessible: right now you need to reach inside the turret to turn it on and off, which, in additional to being inconvenient, feels a little wrong.

Over at Site 3, my friend Dana Sarafinchan is working on a life-sized Turret replica. I think once that’s done we’re going to work on making it fully functional: not just sensors and sounds, but opening side panels and perhaps even throwing some Nerf or Airsoft guns in there.

As always, if you’re interested in seeing what comes next, you can subscribe to my RSS feed.

§ 223 Responses to “Portal turret plushie”

  • Gman says:

    This sounds great. I have ordered the components from various online stores. I may need to learn a little code as the tilt sensor is a different one.

    Thanks for providing the information to try this ourselves. You’re a champ!

    Now, to pull out the old Meccano set and build me a turret! … and learn to solder… and write code…

  • Geeky McGeekpants says:

    It would be awesome If you would just make and sell the skeleton with all the sensors in it.

    • For the whole turret I believe I could sell enough to take advantage of certain economies of scale, but for just the skeleton I don’t think it makes financial sense. Frankly, I just don’t think it would be worth it in terms of the number I could sell, the amount of time it would take me to make them, and the amount of profit I would make on each one. Or, in other words, in order to make it profitable I would need to charge much more than I am comfortable charging for an incomplete product.

  • NeurotoxinCatbox says:

    With what do you open the code to view/edit?

    Thank you,

    M.

  • Agent Rocket says:

    If your friend could provide us with a pattern for sewing the hull (can i call it “hull”? im not a native english speaker) together, one would have everything needed to build his/her own plushie.
    well except mad electronics- and sewing-skills

  • Mark says:

    Hey,
    Firstly an amazing project with a great looking result! Nice job.
    Any chances of getting a copy of the circuit diagram you came up with?

    • There’s no circuit diagram to speak of: the switches just connect to ground on one side and the Arduino on the other. The pin numbers are listed in the code, and the comments hopefully explain everything.

      • Mark says:

        Thanks Jonathan. I’ll see what I can come up with.

      • Jimmy L says:

        Hi, Jonathan.
        I wrote you a mail the other day on this particular subject, but you did not respond. I’ve followed what you said here with the lift and tilt sensor and haven’t it gotten it to work at all.

        I’ve made the connection Ground>(switch/sensor)>Pin
        And nothing.

        I would not want to say that the hardware is faulty cause i’ve tried the hardware with good results, but this boggles my mind.

        Am i missing something? A resistor? The need for a 5 volt source to complete the circuit or what?

        /Best regards

      • Sorry I haven’t replied, Jimmy, I’ve been trying to think about what could be causing your problem, but nothing comes to mind. No need for a 5 volt source on the switches: the code uses the Arduino’s internal pull-up resistors, so it’s just detecting whether or not the pin is connected to ground. I’d suggest writing a simple test program — maybe using the “Button” example sketch in the Arduino library as a starting point — and then seeing whether you can debug from there.

  • Gman says:

    I’ll soon have everything you listed under the “circuit is made of” list, will there be anything else I might need to put this together?

    I suspect I’ll need something to connect the battery with to power it.

    Thanks

    • You’re right: you’ll need something to connect the battery (I recommend something with a switch on it). You’ll also a speaker that works with the Wave Shield (you’ll find more info on what you need at the Adafruit site) and some wire to put it all together. If you want to eye to light up, you’ll also need some LEDs and appropriate resistors for your power source; if you don’t know what I’m talking about, there are plenty of calculators on the web, like this one.

      Good luck!

      • Gman says:

        Thanks so much for helping me and everyone else here! If I ever build a robot army, I will ensure I include you in the world domination speech

      • Alex P. says:

        i wish u could make one and sell it on amazon

  • Laura says:

    AWESOME!! I think my boyfriend and I are going to try to make one this summer. We came up with a couple of ideas for dimming the LEDs (a potentiometer that can be controlled with the Arduino, if that exists, or a capacitor that takes time to power down and dims the LEDs as it does). I actually think that will be one of the most difficult parts, since LEDs are usually used with digital pins, not analog….

    I also kind of want to make a defective turret: http://www.youtube.com/watch?v=w1u0LlIDQKM&feature=related

  • Henry says:

    Does the code tell us how to make it? Oh yeah, does the code have the sounds already put on it? I saw TURRET~0.WAV on it but doesn’t play.

  • Alec O. says:

    Do you think you could make a video tutorial on this? IT IS SO AWESOME! I HAZ TO MAKES ONE!!!

  • SwordedWings says:

    A couple of questions here, I really hope you answer them, since I want to understand the code and how everything works (I have a passion for learning, as you can see):

    1.- What are the names of the directories and files, and can I find them in the code? (or change them)

    2.- Are “TURRET~0.WAV” , “TURRET~4.WAV” , etc. files? Are “WaveHC.h” , “WaveUtil.h” directories? If so I think I am understanding a bit here. (it would be nice to have a list of them though)

    3.- Are the directories supposed to be in the root of the SD card?

    4.- Is it ok if I use the Optical Range Finders instead of the Passive Infrared Detector with this exact same code?

    5.- What is the name of the programming the code is written on? (I don’t know if I said that correctly, but hopefully you understand)

    6.- Is it the same if I use a BBB (again, with the same code) since it is way cheaper?

    Thank you VERY much in advance, I really liked this in an unexplainable way and suddenly I find myself wanting to make thousands of them.

    (P.S: Sorry for the wall of text :P)

    • 1. They are in the code.
      2. Yes, “TURRET~0.WAV” etc. are files. No, “WaveHC.h” etc. are not directories, they are library files. Please see the Arduino documentation for information about what libraries are and how to use them.
      3. Yes.
      4. Probably not.
      5. It is the Arduino programming language, which is C++ with some additions and simplifications.
      6. It should, but I haven’t tested it.

  • Ashley says:

    You really inspired me to try to make one! My boyfriend is self-taught in programming and he got really interested in looking at the code. It still boggles him but he’s treating it like a puzzle, and once he can understand it he’d love to start building the electronics.

    I’m more of an artistic person. I was thinking of sculpting a mini-model, but I’m still teaching myself how to use insulation foam and silicone. I would definitely let you know how that goes. :)

    I just wanted to thank you for being so open about your project. It’s really cool that you’re also helping others that are trying their shot at it.

    Good luck with your other projects!

  • Hamtoast says:

    I NEED ONE OF THESE OR I WILL DIE!

  • Billy says:

    I have a couple of questions.

    1.How do I connect all the circuits together???
    2.Do we need wires to connect it???
    3.Does it matter what kind of battery is put into the plushy???
    4.Can I connect a battery slot instead of just the battery???
    5.Can you put pictures (if not a video) of how you made it or at least explain it in words???

    Thanks!!!

    • 1. Read the code. You might want to read a little about basic electronics and the Arduino first.
      2. Yes.
      3. As long as it can power the Arduino, it should be fine.
      4. Sure.
      5. I’m afraid I probably won’t have time for that.

  • Shea says:

    For the light, how hard would it be to switch out the LEDs for EL cable on the Arduino board? I know the lights on this one are seperate, but if I could get EL cable on the board it might look cool.

  • Sarah. W. says:

    Where can i get one and how much! <3 <3 <3

  • sell the rights to valve dude! make a freaking fortune!

    • Valve doesn’t need me to sell them anything: they own the character, they own the sound clips. If they want to make them, they can.

      I’d love it if Valve responded to my emails about it, but I doubt they ever will.

  • Rena says:

    This is really cool, all I can say is well done! For my summer project this year I am going to attempt to make one as well, lets hope I don’t give up, if on the off chance I complete it I’ll post up a link.

    Once again, brilliant,
    Rena

  • J.Dies says:

    Make more and sell them, for GlaDos sake!!!!!

  • Austin says:

    Make them for sale, i’ll pre-order!

  • n.k.hart says:

    I was wondering if you would be able to write some detailed instructions on how to construct one of these?
    This is an amazing little project and when i showed my gf she really wanted one.
    You have probably answered this type of question below but if you would like to get in contact i would definitely reimburse you for your hard work.

    I just need to get one of these badly hahaha

    • I’m afraid I probably won’t have time to do that. All the information you need for the electronics is on this page, though, and I wouldn’t be able to write instructions for the plushie, anyways.

      • n.k.hart says:

        Well you have done a great job anyway! i have until November so i might have a few friends who are capable with assisting me with the construction.

        Thank you again for such a great idea!

  • madox says:

    Hey Jonathan – Thanks for the Creatron tip, that place is great (but pricy)! I have one question that is bugging me – why do you only have one wire going to the lift button? Is the leg an active wire also and not just structure?

    Anyone working on making one should check out ShapeLock for making the structure. I hope this stuff makes it heavy enough to press the lift button. http://www.makershed.com/ProductDetails.asp?ProductCode=MKSHL1

    I put progress pics here http://imgur.com/a/kxOeB

    • You got it: the leg is a low-gauge wire, and I use it as the second conductor for the switch.

      If the ShapeLock isn’t heavy enough, I found that batteries work well as balast.

    • Henry says:

      What did you connect the wave shield to?

      • The Arduino. I recommend looking at the instruction page for the Wave Shield.

      • Henry says:

        I mean like the power cable (red and black one). Its sticking out of the wave shield and doesnt look like its connected to the Arduino Uno.

      • The power connector is connected to the barrel jack of the Arduino. The Wave Shield is connected to all of the inputs and output pins of the Arduino, because that’s how the shields work. Everything else is indirectly connected to the Arduino Uno board via the Wave Shield: the tilt switch, the pressure switch, and the motion sensor (although in the picture on the page some of the wires are disconnected). The speaker is also connected to the Wave Shield.

  • Eric M says:

    Very excellent project, I just finished building the wave shield for my own. Though I also lack any semblance of sewing skill so instead taking a stab using a scaled up version of this excellent paper model on deviant art which I have more practice with.

    http://billybob884.deviantart.com/art/Portal-Turret-Assembled-78245191

  • Henry says:

    Do we need to upload the code into the Arduino Uno?

  • exa says:

    What about kickstarter project of it ?

  • Henry says:

    Do you know the measurements for the outside of the turret? I want to make a pattern for the fabric.

  • Jimmy L says:

    Reading and trying to edit the code I come upon a thing I’m unsure how to edit and wondered if you could help me.

    if(isTipped()){
    randPlay(DISABLED);
    while(isTipped()){} // Don’t say anything until we’re back upright
    delay(3000);
    playFile(“THANK”,”THANK.WAV”); // “Thank you, your business is appreciated.”
    delay(1000);
    }

    If i would want the turret to first when tipped play a tipped message, followed by a short delay, then do the disable message and being quiet until it’s put back into upright position, how would i edit the code?

    Thank you in advance.

    • if(isTipped()){
      randPlay(DISABLED);
      delay(howeverlongyouwantbetweenmessages);
      playFile(yourdir,yourfile);
      while(isTipped()){} // Don’t say anything until we’re back upright
      // Uncomment these lines to have it play the deploying message after being moved upright
      //delay(3000);
      //playFile(“DEPLOY”,”TURRET~4.WAV”); // “Activated.”
      //delay(1000);
      }

  • Slav Kalchev says:

    Hello, Jonathan!

    Really awesome stuff, so you’ve inspired me in making one. One question (for now): will you have the time to upload the sewing template?

    Thank you soo very much!

    • Unfortunately, it’s not a matter of me having time, it’s a matter of Leigh (who made the plushie) having time. I honestly don’t know when (or if!) she’ll have time, but as soon as I get a pattern, I’ll post it.

  • Jacquelyn says:

    This is one impressive Turret plushie. And it’s so cute too! Maybe someday I’ll make one for myself, when I acquire more sewing skills.

  • Alex P. says:

    your turret is so awesome! i love it! also today i saw a life size turret online with a eye lazer can talk and can do the theme song!

  • Madeleine says:

    Hi, I’ve never done anything like this, so I was wondering, are there different types of Arduinos? If so which is best, and about how much should this all cost

    • There are different types of Arduinos, and any of them should work. If it’s your first time doing this, I recommend the “standard” Arduino Uno, which should cost a little under $30 (US). You can find prices for the rest of the parts by following the links.

      Good luck!

  • Mathew says:

    Hey, I would LOVE to buy one of these if that is possible. thanks.

    • Sorry, it’s not possible. I don’t have a license from Valve, they aren’t interested in granting me a license, so I can’t legally sell them. However, there’s lots of information on this page so you can make your own!

      • Mathew says:

        i would love too! but however, i m not great at building things from scratch and i can find time, another thing, wouldn’t it be only illegal if it had there brand on it?

        thank you.

      • No, it would still be infringing their intellectual property, especially since it uses their actual sound clips taken from the game!

      • Mathew says:

        okay but what if i bout a random smaller item like a pen or something off you for however much and you give me the toy as a gift with the pen. i KNOW that’s legal. :)

      • Unless you can get me a letter from Valve saying that it’s OK, I’m not selling them.

  • CB says:

    I know little about electronics, but am willing to learn in order to make something like this. Here’s a question, though. Is there an easy way to construct this plush so that the infrared/motion sensors are removed and the various sound bytes just play when the plush is squeezed? Trying to make it a little cheaper as well as small-child-friendly. I’d probably need the Arduino and the Wave Shield, but is there another handy button-like item I could use to detect it being squeezed?

  • TIM says:

    OBV youve fort about remote sync. have it inf. red and then a switch on its leg to make it fall over. then we can pretend to shoot it with out phone/control/gun.

    This is definatly a slice of the cake :)

    Tim

  • Adam Lambert says:

    Okay Im willing to learn electronics just to make this. A Few Questions though:

    1) Do you have another picture from different angles of skeleton?
    2) The Actual WAV files for the voice is it in the code or do I need to get those from somewhere else?
    3) If I do have to get the Audio Files from Somewhere else is there a specific file name to give them before placing in SD card for Wave Shield?
    4) Can you say how you created the lights for the Eye?
    5) The Arduino and Adafruit Wave Shield how do you put those pieces elements together?
    6) Did you use a glue gun or something else to put everything together?
    7) Is this way out of my league?

    Trying to make one for my wife who loves these guys. Thank you

  • Mew says:

    Oh man I wish you were able to sell these. I want one so bad and I don’t have the brain power to put one together myself. I love the turrets! They’re just so cute.

  • Shyloh says:

    I was wondering if it is possible, since, you are correct, it would be infringement to sell the whole thing, however, my question is, since I am no technological genius like some people on here, if it were possible to have you make a skeleton for it, and I could compensate you for it. Though I’m sure you’ll most likely refuse, I just wanted to know if it was at all possible.

  • Cave Johnson says:

    have you ever thought of an Atlas or P-Body? the cooperative testing initiative robots. or maybe a plastic turret, full size? maybe a GLaDOS light/lamp for bedrooms. or make a jumpsuit. there are many ways to go here. let me know if you like my ideas.

  • David says:

    If you want to build one of these you need to buy everything he listed for parts. After you get the parts and learn how to put it together many of your questions will be answered. I have most of the parts, and I have it talking.
    I just need to get the turret sounds somehow and get this thing to look and sound like it is real.
    Lots of fun.

  • kimmie says:

    ILL TAKE EM THEYRE SO CUTE!

  • dean says:

    Thanks for the great project Jonathan. Am trying to make myself one and am making progress but would much appreciate a little help. This is my first ever hobby electronics project so dumb questions are certainly possible!

    1. Could you say how the PIR, tilt switch and pressure switch connect to the wavshield? I see in the arduino sketch that they go on pins 15,16,17 but these are single holes on the wavshield board and the PIR and tilt switch have 3 leads and the pressure switch has 2… so i’m not sure how to connect them!

    2. can i/do i connect the speaker to the 2 holes on the wavshield just behind the speaker jack and next to the capacitor there? Does polarity matter?

    Thanks again… am having lots of fun with it but am now stuck! any help would be greatly appreciated!!

  • James says:

    Great job on the Portal turret! So cool! I am curious if your turret is in any way related to the one from Think Geek (supposedly officially licensed). Do you know if Valve saw your turret or read your emails and liked the idea?

    • It’s certainly not related in any official way! I can’t say whether they were inspired by my work or not; I emailed Think Geek, but they never replied to me. Valve did reply, but only to say that they were not willing to grant me a license to produce more of them.

      All I can say is that their version has one fewer sensor than mine does: it can’t distinguish from being picked up and knocked over. And I think Leigh’s plushie design is cuter.

      • lotuk says:

        Hehe, I’ve ordered one from think geek with the goal of pulling out their electronics and inserting yours :P

      • Awesome! Personally, I’d see if I could hack the existing electronics first.

      • lotuk says:

        I tore out the poor turret’s insides and all I found was the little chip in the battery pack. I think I’ll stick with your design once I convince myself to attempt soldering (afraid I’m going to kill the board).

  • Felix B. says:

    can’t you sell the turrets without any sounds? So i can transfer them via usb myself. I bought the game. And why doesnt valve give you a license?

  • Iruno says:

    Hi, I love your work xD it’s so awesome! :3

    I wanted to ask you something:
    If i make a turret without sounds, just a plushie, and sell it to people all over the world, would that be illegal?
    And if i make a turret with sounds and sell it, would that be illegal?

    Sorry, you must be tired of this kind of questions… ^^’
    Thanks! =)

    • I’m afraid I’m not qualified to give you legal advice. My belief is that making use of somebody else’s intellectual property for financial gain is illegal copyright infringement, but what do I know? I’m just some guy on the internet.

  • Marcelo says:

    http://www.thinkgeek.com/geektoys/plush/e71c/#tabs

    looks like someone copied your project and is selling it O_o

    • As far as I’m concerned, there’s nothing really wrong with what they did: they have Valve’s permission to make Portal merchandise, and I don’t.

      Would I have liked it if that had involved me in some way, or given me some credit? Sure. I also think it would’ve made a great story: “Fan project becomes official product!” Do I blame them for not doing that? No, that’s their right, and I bear them no ill will for it.

  • as8 says:

    Hi, well done and thanks for the build details. How is the battery life using what looks like a single 9v?

  • LOTUK says:

    Heya,

    If you’re still checking this, would really appreciate some further help. I’ve soldered up the wave shield and arduino, but I’m kind of at a loss without instruction and think I’ve gotten as far as I can.

    1. The tilt switch has 2 pins on it, but from what I can make from your image it’s just a single wire connected to it. Do I just connect both pins to the 1 wire?

    2. How do you connect the sensor?

    3. I don’t suppose you have any more close up photos of the circuit boards?

  • Marcel says:

    You could ofcourse sell the frame of the turret without the speach and provite a guide on how to upload your own sounds into it.

    This way you wont be selling copyrighted material or anything that resembles something ingame.

  • kasuke says:

    Hi,
    I don’t saw others comments,
    I would like to do the same thing like you but with french voices (yes I’m French so sorry for my english)
    But I’ve got a few knowledge about electonic, so I would like to Know what Arduino card I can use,
    and If you have the diagram of the card with the connections between each components, I’d like to see it :)
    Great Job for your work ;)

§ Leave a Reply

*