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.
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.
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.
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:
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.
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.
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"
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.
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.
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."
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.
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.
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!!!!.
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.
* 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!
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.
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?
For anything of significant use, I think you need something like the Beagle Board (beagleboard.org) or a Gumstix. Anyone know of any others?