Wednesday, July 18, 2012

The Man Who Mistook His Mic for a Hat Stand

I'm using a mic for a hatstand.  Sm58 in a straight round-base stand.  Works pretty well.  The PA just came back from a gig and there's no room in the closet to store all of it.

Doesn't help that the robot worktable is still set up and I have carving foam, paint, plastic bits, and of course electronics strewn around.  I really need to move some projects from "in progress" to "done and can be put on a shelf out of the way."

Lacking the time and space for that, I'm putting more things in boxes today.  So at least the half-done project has all the essential parts collected in one place.  One such (large) box is filled with vacuumform Lewis Gun.  Which spills over into another box, which also contains grenade spoons and other parts to build some prop smoke grenades.

On the table is the camera head we didn't use for the robot.  I'm half-tempted to keep it.  And instead of pulling out the mini servo, program an AVR to do random moves.

Actually, if I was doing random robotics that had any connection to the show I just opened, I'd be putting proximity/movement sensors in a basic servo to build a couple of what the BEAM community calls Head-type Squirmers.  And then I'd put a big foam-core cube on the servo and paint it up like a candy.  Which is to say; I'd be building some "Square candies that look 'round."

It is awfully tempting.  I have all the hardware here.  If I skipped active tracking and just had pre-programmed behavior linked to a simple IR proximity sensor.....

Argh!  My goal for today was actually to log hours in element repair.  I'm getting paid for that, at least.  And I need some spares for the weekend.  The other goal before the next weekend of the show begins is upgrades to the robot.  And with my Vex apparently dead I was going to leverage the two new XBee nodes I just picked up.

The second test was going to be -- hopefully still will be -- trying out direct mode for control of a servo.  I've seen it done as a demonstration at Makers Faire.  Apparently the PCM output of the analog pins is close enough to drive an un-modified servo.  And all you need for the transmitter side is a potentiometer.  Of course, adding a couple trim resistors/pots would be smart.

I still prefer -- especially for something as fragile as my robot -- to set the servo limits in software.  And this also means that if you are transmitting power on/power off signals to the lights and wireless camera (which draws power from the 7.2 nicads in the chassis), you can transmit a single "toggle" command instead of having to depend on continuous transmission of either the "on" command or a "kill" function.  Plus, the eyes were wired with six high power LED's each in 3 colors, and with a micro somewhere in the signal chain you could command these to color mix or to chase.

All I really hope to get done by this weekend's shows is adding a camera and light kill switch, though.  Which I can probably do with no more than my existing XBee nodes and the "Really" (aka "Relay") board I purchased from one of the Kowloon-based electronics suppliers via eBay.

The coolest way to do it is, of course, with full serial.  Although I/O line passing on the XBee nodes is near-transparent and simple to set up, establishing a serial link gives a more robust link and a practically unlimited command set.  Plus, of course, having client-side intelligence means you can program the thing to operate autonomously between commands.  On the server side, set up an Arduino/AVR and wire that to buttons and switches.  Or write an application in Processing and put in virtual buttons and switches/monitor keyboard and mouse.

This is more of the sort of thing I taught myself about "naked" AVRs for, so I didn't have to waste a whole $28 Arduino on an embedded application.  But I'm not fluent and practiced enough with them so I can quickly write some serial data routines for the built-in UART and upload it to a 45-cent chip.  It might only be basic C, but straight C is worlds away from Wiring (aka Processing/Arduino) wrapped inside that handy IDE.  When you are programming for micros, you lose much of that layer of abstraction between you and the metal -- "Serial.print ("hello, world");" begins to look a lot more like "PORTB |= (0 << 2);"

Well.  Maybe if I can get stuff boxed and the table cleared and XBees show they have the right firmware and the servo responds...I might hook up the IR proximity detector I have and see how fast I could make a "square candy that looks 'round."

No comments:

Post a Comment