Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Teensy USB Development Board - 16MHz, $19 (pjrc.com)
110 points by andreyf on Jan 30, 2009 | hide | past | favorite | 58 comments


What practical use does this serve? Just for fun hacking?

For anything of significant use, I think you need something like the Beagle Board (beagleboard.org) or a Gumstix. Anyone know of any others?


The boards you're suggesting use a lot more power and provide a lot more computation power than the AT90USB162. This has 21 I/O lines. You could drive H-bridges for five stepper motors off of it, or a 14-digit LCD display, or an 8-digit LCD display and a 3×3 keypad, etc. It doesn't have an ADC but with a little external electronics you could easily use it to digitize signals from e.g. thermistors or pressure sensors or tilt sensors. You can run it from USB power, and USB power adapters are cheap and widely available. You can generate voice-quality audio using PWM, although I don't think you have enough CPU power to synthesize voice in real-time; you'd have to be reading it off a flash chip or a network or something.

If you want to build a white-LED-driven stroboscope to check your engine timing, or get fault codes out of your OBD-II, or sound an alarm when the air conditioner is on and the window is open, or control your five-axis robot, etc etc etc., something like this is ideal.

Atmel has a set of application notes for the chip at http://www.atmel.com/dyn/products/app_notes.asp?part_id=4097 that show some example things you can do with it.


I know you can make a DAC by using pulse width modulation.

Can you do that in reverse? i.e. make an oscillator who's frequency depends on the input (resistance presumably), then each time the oscillation goes above a certain voltage it would trigger a digital 'on' signal (edge trigger I guess). Count how many of those you get per time, and you have an ADC.

Would that work?


Yes. The way this is done is to make the oscillator's frequency dependent on the parameter you want to measure (normally a voltage) and the A/D conversion is done by measuring the osc. frequency. There are temperature sensors and accelerometers that provide output as a varying frequency so they can be fed straight into a digital input.I've been playing with a Maxim temperature sensor that works this way and it works really well.

Alternately, there is an old technique that generates a PWM-like output that is added with the signal-under-test (the thing you want to measure :-) and the output of that addition is monitored by an input pin. Measure the on vs. off time (PWM) at the input pin and you have a fairly accurate ADC. Low resolution, but it works.

But honestly, with so many precise, accurate and cheap ADCs available these days, doing conversions like this in software is relegated to designs where pennies are significant and the manufacturing costs dwarf the development time.


Yup, a good way of getting analog sensor data around eg:

http://www.analog.com/en/analog-to-digital-converters/voltag...

Also, sometimes all you care about is the value of a signal relative to a threshold, so you use a simple comparator to make a higher/lower signal.


You could also just feed a ramping pwm output to a lowpass filter and have it go into a comparator, with the other input to the comparator be the analog signal to be measured. You watch the pwm count and when the comparator fires, you have the digitized signal in the pwm count.


Right, and this sweet little chip already has the PWM output and the analog comparator, and you can get a wakeup interrupt from the comparator. And then there's the VFC/VCO approach someone else suggested. But I think you can get a higher sample rate with a dedicated ADC. How fast can you do the PWM/comparator trick on a device like this?


You can always get a higher rate with a dedicated chip, and they are pretty cheap these days. The max you can do the pwm trick is a function of the max clock rate, divide down pwm clock, and the number of bits you want for resolution. Take a look here:

http://www.designingwithsensors.com/applications/all_article...


Looks like fun to me.

I know very little about hardware hacking but I had an idea the other day: I wanted to rig a mini-stoplight up (green, amber, red LEDs) that I could plug into my computer's USB port and hit hot keys to change which LED was lit.

Then my wife could look over and see if I was super-focused or not. When I was thinking about code or trying to do science writing, I would toggle the thing to the red LED; when I was screwing around on HN, I would toggle it to green.

I looked around naively but couldn't find something small & easy. This product could maybe fit the bill nicely.

Whether my wife would appreciate such a thing is another matter. :)


This can be taken one step further to create a hacker-wife-trainer. Add a water pistol, a microphone and a stepper motor to the set up. Audio signal in wife's frequency range when LED is in red should trigger water pistol in the appropriate direction.


Hm, I wonder if you are married...


If so, it obviously hasn't been that long, since it's only a water pistol ..


Bonus if you write some code to detect your activity (based on active application or typing/clicking patterns or who knows what) and then communicate via usb to your stoplight.

At that point, you could probably sell the thing on thinkgeek.com and watch cubicles everywhere fill up with activity indicators. Of course, there would have to be manual override, so cube workers could set it to red all day when they don't feel like doing anything.


Nice. Maybe let user build rules like:

When a Terminal window is in the foreground and has an open ssh session --> amber

When Firefox in foreground, displaying news.ycombinator.com --> green.

Never automatic red, though: I would want to conserve its signaling value, so that it would always mean, "if you talk to me right now you are going to mess up a thought structure that was difficult to build".

[edit:

Hm, a little bluetooth-enabled one of these actually would be a pretty cool thinkgeek product.

]


  -- In AppleScript while I wait for tea to steep...  
  if application "Terminal" is frontmost then
  	tell application "Terminal"
  		get name of first item of windows of it
  		if result contains "ssh" then
  			set red to false
  			set yellow to true
  			set green to false
  		end if
  	end tell
  end if
  
  -- or a one-liner...  
  if application "Terminal" is frontmost then tell application "Terminal" to ¬
  if (name of first item of windows of it contains "ssh") then set stoplight to "yellow"


This is even easier with a window manager like Xmonad, since you can configure it to "log" state changes. No polling necessary.


Fold a piece of paper into a triangular prism.

Color and write text on it.

Turn so appropriate color is facing outward

Voilà.


You're missing the point. This is the festival of inappropriate technology. If you take your little tri-color prism and mount it end on, on a stepper motor with an optical sensor to detect which color is facing in the signal direction; then you're talking.

Extra points for if it: a. has an ethernet port b. reads rss feeds or email


I like it, but your idea only works if your back is to a wall.

My wife did the boolean version of this, though, when I told her I wanted to spend $100 on a fancy board from National Instruments. She folded a piece of paper in two, wrote "DO NOT DISTURB" on one half, and propped it up next to me.


Or maybe you could even rig it up to light up based on what programs were active on your computer.

IDE/text edit open -> red light, web browser -> yellow, game -> green.


Arduinos seem pretty popular around here (http://arduino.cc/), but I think they fall under the "just for fun hacking" category.

Once adafruit (http://adafruit.com/) gets the starter kit (http://is.gd/4sRs) back in stock, I'm going to order one for myself.


I just quoted someone about $3k to develop a simple datalogger that among other things needs to read a few switches through a USB connection. This would be perfect for that. Basically I would just need to get one of these, add connectors for the switch inputs, put it in an industrial enclosure along with a mini ITX mobo and write a few lines of code and I'm golden. It will save me a few hours of development time over using an FTDI chip and I can pocket that difference. Money changes hands and everyone's happy!


Since modern motherboards don't have serial / parallel ports, it seems like something like this would still let people get their feet wet with basic electronics hacking. A simple example that we did back in my day was to build our own TI-LINK cables for the parallel port with $5 in Radio Shack parts rather than the $40 for the cable.

When I saw this I also started thinking of connecting it to a relay for lighting applications. It'd be fun at a party to connect this to a set of relays and lamps and drive it from the output of a beat detection algorithm. Or to have it automatically dim the lights in the living room when the PVR computer starts a movie.


Fun hacking = prototyping.

This is a great way to test ideas on the cheap.


i've been using a butterfly, myself, which is what i learned on and know the best. plus, it does a good bit of stuff.


Can this device communicate via USB during runtime or is the USB port only there for programming purposes?


To answer my question:

The Teensy's USB port is multi-purpose. If the HalfKay bootloader is activated (via a push-button on the board), the USB port is used for firmware-manipulation purposes. HalfKay lives on the EEPROM.

Once the device is powered off then on, the USB port is used as a normal communication device and can be fully utilized to speak with the PC or other USB peripherals. USB communication code is in your program and lives on the FLASH.


"If your Teensy is not brand new, it will run whatever program the previous owner loaded, perhaps causing your computer to recognize new hardware and require drivers. Just cancel any driver setup. In the next step you will load the LED blink program."

So, yes - looks like it can.


In a few years, naming the product "Teensy" will seem ironic.


Not really. Further shrinking of that board is constrained by the number of I/O pins required, whose size cannot shrink because of the limitations of human solderers.


In a few years, your comment will seem ironic too ;)


Only if we switch to using iron based solders (or solderers)..... :)


Maybe we'll all have tiny micro-assembly bots and rapid prototyping printers that can also print electronics, so nobody needs to solder anymore.


Maybe someone will invent magic, and we'll be able to abacadabera in pea-sized 10ghz processors!

My dad told me once that some people from his generation were positive we'd have colonized the moon by 2010...


your dad was probably quoting people that were not taking in to account the various money sinks that ate up the funds that could have been used to make that happen.

Wars and such...


That's not it. It's not about the money - it's about the interest. There is just no reason to colonize the moon, so no one did.


There is a compelling long-term reason to colonize the moon: to solve the issues we need to solve to expand to other solar systems.

If we don't, it seems totally possible that at some point a large-scale disaster on Earth could wipe out all human life.


Sufficiently advanced technology is indistinguishable from magic.


Technology distinguishable from magic is insufficiently advanced.


I wonder if this can be used to create Halloween Haunting effects - i.e. playing a sound when an IR trigger is ...triggered. I would love to embed something like that in a scarecrow with a crazy mask sitting on my front porch in a rocking chair. Kids come up - trip the IR - and the eyes light up and it says 'Happy Halloween MUHAHAAHAHA!!!!.


It definitely can.


Well fine. If you are going to sell me one laid out better than I managed and assembled for less than I can have the board fabricated and the parts purchased for a lot of 10 then I'll just have to buy your product instead.

I was close though. About 10% larger in area.


I heard way more people doing stuff with the Arduino.

Do people know how Teensy and Arduino compare?

I do know that Arduino is 100% Open Source which is why so many cottage electronic outfits provide them premade.


Comparing to arduino:

* Teensy has a native USB, much faster than the USB/serial bridge of an Arduino. I also find the discrete transaction nature of USB easier for communication, though good old fashioned serial is easier for many people to integrate on the host side.

* Arduino has analog inputs, the chip in Teensy does not. If you need analog you can either add an analog converter chip, or go ghetto and use a digital pin, a resistor, and a capacitor and time how long it takes to recharge after you flush the charge. Drawbacks abound.

* Arduino is a complete environment tailored to easy uptake. This is the most important point of Arduino. You can take someone who does not know what a compiler is, and in minutes they can be in control of hardware. The brilliance of Arduino does not show in the bullet list, it is brilliance by omission.


I was just about to look for a brain for my robot. Excellent! The only concern I have is that the AVR is soldered down; it won't do unless there is a socket.


I don't think any of the AVR USB microcontrollers come in a DIP format. Sockets for the available formats tend to be pricey, large (relatively), and not a good choice for high vibration environments.

Why do you worry about being soldered down? I suppose if you are going to accidentally blow the chip it is a cheaper repair, but with a cheap hot-air unit and the video tutorials at SparkFun you should be able to replace that chip if you like. (You will have to figure out how to load the initial bootloader if it is different from the one supplied by AVR, but AVR's is sufficient.)

If you do blow a pin, it probably isn't a total loss. I was winging a little change to just such a processor and ran a 24v line to a digital pin. The pin stopped working, but the rest of the chip continued just fine. The moral is for prototyping you can just use different pins, learn your lessons, and your final deployed unit should be fine.


And with proper design you won't blow the chip. Let me rephrase: with proper design, the only thing that will blow the chip will blow the entire board!

Even so, if you do it's only $19!


Proper design doesn't cover: "Oh look, I can also monitor the 24v battery level if I stick a little voltage divider onto this extra pin" followed by soldering the pin to the wrong end of the high resistor 30 seconds later and powering up.

Frequently these breadboard type computers get accidental shorts from large fingers or are attached to incompletely specified devices ripped from old equipment. That's the only pin I've ruined in many projects and lots of breadboard work, but it happens. It's nice to know I can just move to the next extra pin and continue.


[Shrug] At risk of sounding like a curmudgeon: learn to be careful, this isn't software.

With experience some things become second nature: no loose conductors on the test bench; double check before powering up; test one change at a time; add a temporary BIG resistor to any input that's over the PS voltage, don't change connections with power applied, etc.

Ask me how I know that EPROM based devices release a pretty purple flash right before the smoke comes out :-)


Because it isn't necessary for my robot to carry around a programming board. If I come up with another application that uses a microcontroller, I have to pay for another USB programming board/AVR combo.


Neat. I've had good luck with Olimex stuff, for example http://www.sparkfun.com/commerce/product_info.php?products_i... . You need to buy a parallel, usb, or serial programmer as well but that's a one time cost.


Awesome! How do you use it in Linux?



Great, thanks! I wonder if there's a free-software approach too.


Digging a bit deeper, yes:

http://www.pjrc.com/teensy/loader_cli.html

Has the source to a command line downloader (GPL)


I've used these in the past - http://www.ti.com/msp430 - I believe they have lower power requirements than the AVR (at the expense of less memory). Does anyone know if the AVR has a external memory controller?


That AVR does not, but they come in other variants with much more memory and ones that allow external memory (though at the expense of many pins).


Could anyone recommend a cheap, small GPS unit that would work with this?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: