Working Prototype, Feature List

September 29, 2009

As promised, I heated up the good ol’ soldering iron to do a little bit of surface mount rework.  It went rather well.  I also pulled out the multimeter and checked all my connections.  I powered it up, and the POWER led lit up beautifully.  However, I noticed a small problem on the microchip and I unplugged it all to fix a short.  The rest is history – I lifted a few traces accidentally under the chip, which are very difficult to fix.  At least I know it powers up properly!

I also wanted to add the feature list to this post, maybe get a little bit of credibility in Google searches or something.  Here it goes:

The USB Squid is a generic IO controller with some advanced features that make it a little more interesting than most.  Here is the proposed feature list (so far):

12 High Power outputs. These are powered off a separate driver chip and are capable of up to 500mA each. You can use these for normal outputs too, but they are most suitable for driving relays or solenoids or other large loads.
10 Input/Output/Analog pins. These can be switched through software to be a digital input, an analog input, or a digital output with low current. These would be ideal to measure your sensors or drive LEDs.
Hardware reset. This is useful if your computer crashes and you want to reset the USB device.
USB 2.0. The whole thing will run off simple USB commands and is very fast.
All port PWM. Any of the ports can be configured to run in pulse width moderation mode. This is useful for controlling servos or LED brightness.
Special function inputs. There are several special functions hard-coded into the device. You chose an input pin and it’s function through software, and it can perform differently. For example, there is functionality for latching I/O, toggling outputs based on inputs, rotary encoders, LCDs, IR decoder, etc. You can theoretically use this device to connect and LCD and a volume knob to your computer while still maintaining your high powered outputs or your analog inputs!
USB Bootloader. Upgrade the firmware via USB! Configure new special functions and updates as they become available.
EEPROM Storage. You can store and read values from the device’s internal EEPROM memory simply and quickly. Since the device only uses a fraction to store information, you are free to read and write the rest!
Save State. The device can save the state of each input/output/analog set up so that next time it receives power it will keep the same configuration.
Auto Update. Configure a port to auto-update and every time that port changes, a report will be sent to the computer. This way your software interface is not overwhelmed with updates every 10ms like many other controllers! If nothing changes, no report is generated and your computer can run quicker and smoother without processing the extras.
Interrupts. Get notified the instant one of your inputs changes instead of polling!
Serial Interface. There will be an expansion interface using the onboard serial transceiver. With this interface, accessory boards can receive all the messages that the device receives through USB, and it can transmit them to the device for a sort of remote control. The possibilities are endless with this! You can make it wireless, you can add expansion ports, anything you want!  You can remove the host completely and use a serial device (perhaps a remote control?) to configure.
– Stand Alone Capability. With special function inputs, you could disconnect the device from the host computer completely and still have it run.  If you have set PWM modes, they will continue.  If you have outputs toggled by an analog signal or an input, they will still function.  Use this with a serial device connected along with Save States and the device will run completely independently once configured.