Find all your DIY electronics in the MakerShed. 3D Printing, Kits, Arduino, Raspberry Pi, Books & more!

After a quick search of the posts I’ve written for MAKE, it’s clear that I overuse the word “awesome.” It’s not news to me, but I had no idea how bad my problem was. In fact, I think you could say that I abuse the word. In order to cut down on my usage of “awesome” and to help me find suitable replacements, I made The AWESOME Button. It’s a plug-and-play USB device that will type a random synonym for the word “awesome” when the button is pressed. The beauty of it is that it works on any computer with a USB port in any application.

Subscribe to the MAKE Podcast in iTunes, download the m4v video directly, or watch it on YouTube and Vimeo.

How is it made? At the core of The AWESOME Button is the Teensy USB, a really sweet* microcontroller that has the ability to act like a USB mouse or keyboard right out of the box. Not only that, but if you’re most comfortable writing code for the Arduino, you can load your Arduino sketches onto it directly once you install Teensy Loader and Teensyduino on your system. But don’t let that discourage you, they’re both a snap to install.

Of course, I’m not totally serious about this particular application, but I wanted to show how you can make your own custom USB human interface device. If you’re a gamer, you could make a controller exactly to your own specifications. Or perhaps you could hack an Etch A Sketch to control your mouse pointer. I think I want to mod an NES controller so that it works as a Flickr browser. There are many different tremendous* ways you could use this. Leave your terrific* ideas in the comments!

* Yes, these words were actually generated at random by The AWESOME Button. For the curious, here’s the full list of words programmed into it, comment below if you think I’ve missed any: brilliant, cool, crack, dope, excellent, exceptional, fabulous, fantastic, fine, first-rate, fly, fresh, incredible, keen, laudable, marvelous, neat, nifty, rad, super, superb, sweet, terrific, tremendous, wicked, wonderful, and worthy.

Matt Richardson

Matt Richardson

Matt Richardson is a Brooklyn-based creative technologist, Contributing Editor at MAKE, and Resident Research Fellow at New York University’s Interactive Telecommunications Program (ITP). He’s the co-author of Getting Started with Raspberry Pi and the author of Getting Started with BeagleBone.


Related

Comments

  1. I really liked this build. Gave me a few ideas for myself. Just a small note to all the people who are not that great with hardware, the same could have been done with a simple program like AutoHotKey as a software only solution with a small simple script. Now to get myself a teensy!

    1. Anonymous says:

      well sure, but the magazine is called “make” not “use some software that someone else wrote”

      1. Eric says:

        You must be new here. They have indeed been guilty of publishing projects that use software that someone else wrote, as the primary tool for the project. One of my first complaints about Make was involving a project that did that “light writing” thing they did in some commercial, and it required Adobe software to do 99% of it.

  2. Awes… Excellent project.
    Something to have try at over the upcoming Easter Weekend perhaps.

    1.  We are doing a project with multiple screens in a non-profit exhibition space. We want to run a simple DVD file off a pen drive plugged into the side of a TV. Simple system, but we want to have a physical button to press play for the public, rather than the remote.

      Does any of the above button ideas do this? Can anyone comment how this could be done?

      Thanks,
      David

  3. How about instead of using an array of predefined words you use an online thesaurus such as dictionary.com

    http://developer.dictionary.com/products/thesaurus

    1. You missed the point. He was showing us how to make a usb device. I’m sure he knows that you can use the web to find stuff cause he is using it right now to show a video.

      1. no, i think he meant you could make the teensy applet look online for words, instead of using a predefined array, makes it easier to port to other words/languages.

        1. johngineer says:

          It may be difficult to have the Teensy access the internet and act as a USB keyboard at the same time. It would basically have to disconnect as a USB keyboard, connect as some device which can access the TCP/IP stack (if that’s even possible), and then reconnect as the keyboard.

          You might be able to do this with an Arduino UNO + Ethernet Shield though.

  4. Moriash says:

    I ran across something somewhat similar, using a promotional Ecobutton ( http://www.eco-button.com/ ) given as a Christmas gift by a local contractor. If you’ve never seen these things before, they’re little green buttons with slow-scrolling LED special effects. Plug it into your USB port, install the software, and it puts your computer into a low-power sleep mode when pressed. Then it displays how much energy you’ve saved when you wake the computer back up. Silly gimmick, really, but it turned out to be kind of useful for other purposes.

    The button is, in effect, a hardwired macro recorder. When pressed, it sends the keyboard shortcut for the Windows Run command dialogue box, then types the word “ecobutton” and hits return. If you uninstall the software, Windows will dig around in its search path for anything else named “ecobutton”- such as a batch file dumped in the Windows directory (ecobutton.bat). I’ve used it to bring up my timesheet software at work (boss was impressed, anyway) and turn on the TV receiver on my home PC, but anything you can cram into a batch file will work. I’m sure there are a variety of USB widgets out there that work the same way. Could be repurposed to do all sorts of things.

    Anyway, thought I’d mention it- something else to add to the mental toolkit.

    1. What my version does new is you can send a string to the device and it gets programmed in eeprom. So you can change it to any output string to type when you type the button without the need to get a chip programmer and reflash it. Also it is much cheaper to produce and smaller too. Hopefully I’ll be able to finish my soldering of the mini keychain version soon ;). The eco-button uses drivers though. The anykey looks and acts just like a standard usb keyboard to the pc. This way you can plug it into any pc press the button and it will output your string no drivers, no installs it just works instantly. This is what you also need. Lets say your collegue needs your password to do some work on your account (happens all the time) you have to type it in and he looks the other way right? Well now you just pop in the anykey and press the button and he can’t peep at your password also it is just easy in day to day work…

      Here is the rather boring youtube vid, I will make a more exiting one soon. Happy I did it though since it prooves I was earlier with the idea as well ;).

      1. Moriash says:

        That sounds pretty cool! I look forward to seeing it develop, as I’d love to be able to add additional button functions.

        FWIW, the ecobutton thing doesn’t require drivers specific to the device. It reads and installs as a standard “human interface device” when you plug it in, like a generic keyboard. I’ve used it without even installing the ecobutton software- works as described. But, as you say, considerably less flexible. Still, for the price I paid (free), it’s kind of nifty.

    2. John B says:

      That’s funny about the EcoButton. I discovered the same method of using it as a general-purpose button a few years ago, and thought I was the only one who had figured out how to do that. I wrote a little script in AutoHotKey to put my computer in Standby mode, compiled it to an .exe named ecobutton.exe, and stuck it in my Windows folder. Works like a charm…

  5. Alan says:

    Cromulent project, dude.

    1. Ha hah, I had to look this up to get it.

  6. Kirt Stanke says:

    Stupendous! Groovy! Astonishing! Prodigious! Staggering! Sublime!

    1. Thank you! Those are stupendous ones!

  7. johngineer says:

    You have embiggened this project with vernaculous fantastitude!

  8. Addidis says:

    In yours an my own defense there is something to be said about saying the first word that comes to mind. People are quick to understand what your saying. That said, this is an /ingenious/ project highlighting how easy it is to make custom USB devices.

  9. Anonymous says:

    I didn’t know that you could do keyboard.print – I really like that. must look at that for my next project…

    1. Yes, the keyboard and mouse functions come along with the Teensyduino installer (and only work with the Teensy as far as I know).

  10. Can I make this button with an arduino duemilanove.

    1. I don’t know of a way that the Duemilanove can be a USB human interface device “out of the box.” Perhaps it could be done, but I haven’t seen it used that way anywhere. The best bet is with the Uno, but there’s not a lot of support for it to be used that way. I decided to go with the Teensy because it seemed like it was an easy way to do this, and ended up being easier than I imagined.

      1. My first thought as well was, “Could I do this with an Arduino?”

        I’ll give it a go and find out. :)

        1. Hey Pete! Not sure if you saw this, but another commenter posted a link which lead me to this: http://hunt.net.nz/users/darran/ It might be a good place to start. I’m hoping we’ll see HID support “out of the box” on the next iteration of the Arduino (Uno Punto Uno?)

          1. Oh yeah, I know there has been a little work with the Uno, but it looks like it’s not quite as HID as the Teensy… that said, I just ordered a Teensy for a specific project I have in mind. :)

  11. This is an amazing project! and quite easy too!
    Just a quick question, now that you’ve done all the hard work for us, can we just buy the normal Teensy USB (without the header pins), connect it via USB, program it, and then assemble the button?
    Or do you recommend buying ones with the header, getting a bread board and testing it for ourselves?

    1. Thanks! You don’t need the header pins to prototype, but it does make it a lot easier. Just don’t solder anything to the board until you’ve tested it, it could get messy if you make a mistake.

  12. Impressive,Overwhelming,Striking,Stunning,Wondrous,Unbelievable,Excellent,Awe-inspiring!

  13. So awesome, do you think it would be possible to interact with a computer and use this as a cubicle button

  14. Bill Cutter says:

    If irritating hipsters were water, this guy would float the USS Nimitz.

    1. @Bill Cutter – Wow! looks like you got up on the wrong side of the bed.

      @Matt – Great project. Remarkably simple and it illustrates the concepts beautifully. Thank you.

    2. johngineer says:

      Wow. Do you even know what a hipster actually is?

    3. Dan Rochman says:

      If comment trolls were fire, I would pour hipster-water on them to put them out.

      Also, big points for spotting Matt’s fixed-gear bike, cool tattoos, single-origin coffee, and vintage wardrobe in this video. All carefully hidden, but you spotted them. Go, you!

  15. Mark Allen says:

    I’ve got a million ideas for this, mostly involving World of Warcraft and the occaisional need to hit a very specific button very quickly.

    However, I’m a total newbie at this . I see I would need a teensyduino. Do I need an arduino as well?

    1. Mark, I’m glad that you’re interested. I think you’ll be surprised at how easy it can be. If you use the Teensy, don’t need another other microcontroller, but you’ll need to download the Arduino IDE, the Teensy Loader and Teensyduino. They’re all free and a snap to install.

      I encourage you to give it all a try though, and don’t worry about what you don’t know yet. Since you’re already comfortable with soldering and coding, I think the rest will come easily to you.

      1. Mark Allen says:

        Thanks! I may just do that. Great to know I just need the one board. I wonder how sturdy I can make it.

      2. This gives me confidence that when I put the anykey on the market for less than 10$ its gonna be wanted ;). I’m using only some resistors, diodes and an avr chip of 2$ ;).

  16. Yep this kind of hack I did a year ago without a teensy board on a smaller atmega chip (usb entirely in firmware). Patent pending already.
    Use the button to type in your daily password! its on my blog http://walter.schreppers.com
    I called it the anykey. Gathering resources to produce it (parts cost me around 5$). Anyone interested in joining the adventure?

  17. jeff kremer says:

    Keep up the awesome

  18. Hmm — I guess “”tubular” is too 20th-century? :-)

  19. Here’s some more: swell, bad (ass), bitchin’, gnarly

  20. Here’s some more: bad (ass), gnarly, sick, swell

  21. Anonymous says:

    I just wanted to point out that the Arduino UNO and Megs2560 can also be programmed to be USB devices like a Keyboard, Mouse, or MIDI device. Details here: http://arduino.cc/playground/Main/InterfacingWithHardware#USB

    1. Yes, true. Thanks! I’m looking forward to when the Arduino Team (or someone else for that matter) is going to make this an easier thing to do “out of the box.” I could see a lot of people using their Arduinos like this. For example, if you want data to come out of your Arduino and go into an open Excel spreadsheet, it may just be easiest to have the Arduino simply key in the numbers with tabs and returns when appropriate. Yes, you can get the data via serial, but I think that tends to take a little more trickery on the computer-side.

  22. This would be most excellent to use in the work place for pranks. Simply run the usb cord through to the next cubicle and place it in the back of the computer. Then randomly click away while your co-worker is attempting to type haha.

  23. Dude! To make it absolutely perfect, you gotta find a way to replace the word “easy” for “awesome” on your button!

  24. Can this be done on a mac? If I’ve never coded Arduino what do I need to install?

    1. Yep, it works on Mac, Linux and Windows. To load the code onto the the Teensy, you need to install Arduino, The Teensy Loader, and Teensyduino. They’re all very easy to install. Once the code is loaded, it acts like a USB keyboard, so it can be plugged into any computer without extra software.

  25. Anonymous says:

    One word: Awesome!

  26. DeAnne says:

    Such a fabulous idea! Here’s some more words for your list: astonishing, breathtaking, fascinating, inconceivable, magnificent, mind-blowing, peachy, phenomenal, primo, sensational, stunning, unreal

    Almost extinct colloquialisms- only you can save them!: bang-on, boss, fly, groovy, keen, out-of-sight, top drawer, whiz-bang.

  27. Matt, should there be debounce code in your example? Did you just leave it out to simplify things, or is it not needed with the Teensy?

    1. Debounce code is definitely needed. I put in a delay(500) after the word is printed as a simple (though not exactly elegant) way of avoiding the problem.

  28. I finally finished my version of the button. Details are here: http://rasterweb.net/raster/2011/05/09/the-button/

  29. Matt, this was Awesome, and your video gave me the idea to do an awesome way to LIKE posts with Kinect, check this video http://www.youtube.com/watch?v=Mcv1A7_M8Fk At first I wanted to use the easy button for it, but it was too easy ;) 

  30. I love projects I am disabled but I do have a degree in electrical engineering Technology!

  31. a b says:

    You awesome button is really cool, but why not use a USB keyboard, just like your google pedal hack….

    1. The Google Reader Pedal hack was an easy hack for sending a single letter to the computer. This one is little more complicated, it has to send an entire word and it has to choose it randomly.

    2. The Google Reader Pedal hack was an easy hack for sending a single letter to the computer. This one is little more complicated, it has to send an entire word and it has to choose it randomly.

  32. [...] but demands less motor ability from the user.A while ago I remember watching the Make Video on The AWESOME Button, and remembered one of the cool features of the Teensy USB, after looking round the site I ordered [...]

  33. Adam J. says:

    Thank you so much for this! For a school project I’m attempting to make a USB Keypad that has uncommon, but useful, keystrokes. This works perfect for making such a device! My friends are also attempting to make a USB device, but instead of a keypad, they want to make a portable USB game emulator for Gameboy games, but they not quite sure how to go about it. How could they use the “awesome buttons” concept to do such a thing?

  34. Even M says:

    Like this very much. But can someone please help me with a parts list or a place where i can buy the necessary components? :/

    1. Sean says:

      You just need the Teensy, a mini-USB cable and a button, plus some wires.

      The Teensy and the USB cable can be bought from the Teensy website. The link is in the description. (however, if you have a phone from the past 5 years, you will most likely have a mini-USB cable, especially if the phone is a smart phone.) The button and wires are available from any electronic store. Radio Shack is a great place for cheap supplies. http://www.sparkfun.com is also an awesome place.

  35. [...] the following: – An Arduino board: We recommend an Arduino UNO, however if you want to attend the Awesome-Button Class, you will want to get a [...]

  36. Merle says:

    My manager wants a Crazy Train button for when problems come into the Lab. I’m going to use part of your build for my off the clock project. I’m not a programmer but I’ll figure it out. We already have a stock Easy button for when the problems are fixed. Thanks for the fun video.

  37. [...] The AWESOME Button: A Made-to-Measure USB Input Device Share this: Pin ItLike this:LikeBe the first to like this. Makers in this post:Michael Mitchell [...]

  38. Nicholas Nagorski says:

    Matt, this is awesome! I bought a teensy after seeing this video and it’s awesome! I was just wondering if you could help me…I’m on a Mac and don’t see any code for typing the ‘command’ button. I tried [char ctrlKey = KEY_LEFT_GUI; Keyboard.press(ctrlKey);] but it didn’t work. Thanks in advance!

    1. Nicholas Nagorski says:

      Never mind! I was going through an entire list of Keyboard modifiers from an Arduino page and found this: Keyboard.press(KEY_LEFT_GUI);
      It worked!

  39. I wanted to modify the code a little to add a “tab” keystroke so that you can get to the next field to enter text. I tried adding Keyboard.Print(“\t”); but I did not get a tab keystroke. But the \n (newline character) worked. Anyone know where you can get the full documentation for the Keyboard.print function or why this happened?

  40. [...] tutorial and the other one shows how to make his awesome — I mean — wonderful Awesome Button. Matt also co-wrote (with Shawn Wallace) a new MAKE book called Getting Started with Raspberry Pi, [...]

  41. [...] is a BeagleBone tutorial and the other one shows how to make his awesome — I mean — wonderful Awesome Button. Matt also co-wrote (with Shawn Wallace) a new MAKE book called Getting Started with Raspberry Pi, [...]

  42. AlexK says:

    Can you code this button to play a video??

  43. […] I took inspiration from the Awesome Button […]

  44. […] Matt Richardson’s AWESOME Button […]