RC for servos and the like.

To make a short story long, I've always had a fascination with animatronics, but never really tried my hand at them until a few years back when I got my first Arduino. Admittedly, I didn't know much about what I was doing, but I like the possibilities. My most succesful project was in animating a halloween skull decoration to rotate its head and open/close its mouth. It's not terrible, especially for someone with zero electronics experience, but it's a mess of wires and bad soldering for something I'm sure can be made much simpler.

A recent new show on SyFy has re-ignited my interest: Jim Henson's Creature Show Challenge. I've gleaned bits and pieces from what little of the actual technical stuff they show and I've been googling more and more to learn what I can. Traditionally, these big-time animatronic creatures use 2.4ghz transmitters and receivers to wirelessly control servos and pneumatics, with an operator, just off camera using a multi-channel RC device. Not wanting to spend several hundred bucks more on this type of equipment, my question to you out there is: Can something similar be achieved by augmenting parts I've already got?

I controlled the motion of the afforementioned skull using a Wii Nunchuck interface. I find it pretty flexible, with plenty of buttons I can assign to various potential functions. Ideally what I'd like to do is have a base controller, comprised of the Wii Nunchuck connected to the Arduino, transmitting wirelessly (radio or perhaps bluetooth) to some sort of receiver that can be mounted on my puppet and powered seperately, to drive the servos, LEDs or whatever I attach.

I'm at a loss to understand the use of Xbee components, shields, other Arduino add-ons, whether or not I need a second Arduino, and a slew of other feasability things.

Thoughts? Suggestions? Concerns? Questions? Please help. Thanks!

The first thing to find out is whether the WII nunchuck can be interfaced to an Arduino as that seems to be the new element of your experience. I never had one of them but I think I have seen other Threads discussing this. Have you had Google on the job?

...R

I think you misunderstand Robin. I've already got a working nunchuck interface. It's how I'm controlling the skull linked in the video. I'd like to continue using that control scheme, but I don't want to have 30 feet of wires between my puppet and I.

I'd like to be able to sit on my couch with my arduino and nunchuck, but transmit commands, wirelessly, to my puppet.

And yes, as I mentioned, I've been and continue to do a lot of googling

Then you need to stop talking about the Wii and talk about RF modules , because if you already have the wii chuck working then that's not what you are asking about. What your question should be is simply, "What kind of RF modules are available and what
kind of data can they send and what is their range. (I don't think the Wii is part of that question if you can get data from the wii to the arduino. It' the arduino to the puppet you need to be talking about which has nothing to do with the Wii.

raschemmel:
Arduino Playground - HomePage ...

I appreciate the links, but I already own and successfully use the WiiChuck adapter. My questions are focused on remotely activating my servos. Sending the input gathered from the chuck and interpreted on the arduino (or anything else for that matter) to another board/receiver via radio control or Bluetooth or whatever.

How about VirtualWire and some cheap 3xx or 4xx MHz modules?

raschemmel:
Then you need to stop talking about the Wii and talk about RF modules , because if you already have the wii chuck working then that's not what you are asking about. What your question should be is simply, "What kind of RF modules are available and what

I only mentioned it to describe the way I'm controlling the puppet live as opposed to a preprogrammed series of events. I thought I made it quite clear by the subject line and the rest of the post that I was interested in RCing my project. I don't understand all the derailing unless everyone stopped reading when they saw the word "Wii".

Just state the nature of the signals and the range you want. I don't know what kind of signals they are but if they are PWM then
you already know their value and should be sending and integer that represents the PWM value , one value at a time because I don't think any of the radio transmitters modulate PWM on the carrier so you need to send a continuous string of integer values that represent the PWM value. If the data rate is fast enough then it is effectively realtime (*/- a millisecond or two)

he servos are not important. The only thing important is the nature of the signal. You should change your post title to
"Transmitting PWM values in realtime via RF" Don't you think that describes your topic better than something vague like
"Servos and the like"

Why can't you use Xbee Wifi modems ?

Did you google this ?

raschemmel:
Don't you think that describes your topic better than something vague like
"Servos and the like"

What I think is that you'd rather laud your greater knowledge over a beginner like myself in order to stroke your own ego rather than offer any actual advice. Im already aware of my inexperience. It's my sole reason for posting on these forums. Unless someone less judgemental responds, I guess I'll just go back to Google. My bad for thinking people would be helpful here.

If you want help you have to put your ego aside and just deal with the issue and not take it personally . It's 1:00 in the morning here and I should be sleeping because I have to work tomorrow and I'm trying to tell you want you need to do and all you have to say is that I'm not being friendly enough ? Are you looking for friends or are you looking for answers ? You can use Xbee modems. You can tranmit PWM values.

jedimasta:
I don't understand all the derailing unless everyone stopped reading when they saw the word "Wii".

This may be all my fault - sorry. I didn't pick up on the fact that your earlier project used an Arduino as well as a nunchuck.

However I do agree with @raschemmel that your title does not lead one to think about wireless transmission between two Arduinos. As he says, you seem to know already how to do the servo stuff. Where I was confused was because I thought it was the nunchuck stuff you hadn't yet tried, when in fact it is the wireless stuff.

So ...

You need to help us with a useful description of the problem you want to solve. What will be at the end of the wireless link (I mean the thing that viewers will see, not the computer stuff)? What physical devices will operate it? What data is needed to control them? How often does the data need to be updated?

...R

Traditionally, these big-time animatronic creatures use 2.4ghz transmitters and receivers to wirelessly control servos and pneumatics, with an operator, just off camera using a multi-channel RC device. Not wanting to spend several hundred bucks more on this type of equipment, my question to you out there is: Can something similar be achieved by augmenting parts I've already got?

Ideally what I'd like to do is have a base controller, comprised of the Wii Nunchuck connected to the Arduino, transmitting wirelessly (radio or perhaps bluetooth) to some sort of receiver that can be mounted on my puppet and powered seperately, to drive the servos, LEDs or whatever I attach.

I'm at a loss to understand the use of Xbee components, shields, other Arduino add-ons, whether or not I need a second Arduino, and a slew of other feasability things. [

Unfortuneately , there does not seem an arduino 6 or 7 channel 2.4 ghz spread spectrum RC Radio Shield that the OP could just
plug into his arduino to replace the conventional RC hobbyist hand-held radio transmitter. However, IF such a product were allowed by the FCC, (don't know if it is or isn't), it would surely be expensive anyway.

Let me try a different appoach,
@jedimasta,
Luke, I'm your father....the Force is with you....

In order for us too help, we need more specifics. We need to know how many channels of radio control you need for your anamatronics project. Unfortunately ,

Not wanting to spend several hundred bucks more on this type of equipment

the cost is possibly the only thing we can't change. [/quote]

I'm at a loss to understand the use of Xbee components, shields, other Arduino add-ons, whether or not I need a second Arduino, and a slew of other feasability things.

This is probably the only thing we can help with. As you can see from the following tutorial, the Xbee uses serial communication, so your commands (if you used this approach) would have to be sent as serial characters and then decoded and translated into
PWM commands. ..

http://arduino.cc/en/Guide/ArduinoXbeeShield

whether or not I need a second Arduino

Unfortunately , yes you need a second "arduino" but not necessarily a factory manufactured UNO You can buy an ATmega328 chip with the bootloader installed for $3

and set it up on a breadboard to get it working first, then make a pcb later or solder wires.
http://www.arduino.cc/en/Main/Standalone

The good news is that it can be done with one transmitter and one receiver.
The master sends serial commands to receiver.
the receiver decodes the PWM serial command for each servo with 6 PWM channels available on one ATmega328 chip.
The slave receiver decodes the command and updates the selected channel to the PWM position sent .
So you need 2 chips , one xbee transmitter and one receiver
I have to get back to the DEATHSTAR now, sorry, gotta go...

raschemmel:
Unfortuneately , there does not seem an arduino 6 or 7 channel 2.4 ghz spread spectrum RC Radio Shield that the OP could just plug into his arduino to replace the conventional RC hobbyist hand-held radio transmitter. However, IF such a product were allowed by the FCC, (don't know if it is or isn't), it would surely be expensive anyway.

I suspect the nRF24xx transceivers could be programmed to do this. I have some devices with Cypress 2.4GHz transceivers and the guy I bought them from also sells the same device as an RC Tx that is compatible with Spectrum brand transmitters. However their main selling point is their small size so they are not cheap. 2.4GHz is not licensed.

However, as you say, it is probably unnecessary for the OP to go to that much trouble.

We eagerly await his input ...

...R

I've heard they have terrible range.
With a $5 TLC5940 chip , the OP could drive 16 servos from one ATmega328. I have a breadboarded ATmega328 with OPTIBOOT bootloader from DIP MICRO running 16 leds .

Since the OP appears to have quit, we need a voluteer to replace him as the Test Tech to continue the project. I don't have an Xbee
tx & rx , but I have everything else. We need a volunteer to continue this project
Requirements
1 Own 1 Xbee transmitter and 1 Xbee receiver
2. Have some breadboarding experience and willing to spend $3/each to buy two ATmega328 chips ready to program (with bootloader , see previous links)
3. Own at least 6, preferably 12 servos of any kind except continuous rotation.
4. Willing to spend $5 to buy 1 TLC5940 ic to drive more than 6 servos

That's pretty much it. That accounts for the MASTER & SLAVE uC, the Tx & Rx Xbee Wifi link, the TLC5940 as servo driver and
the 6 or more servos. Robin is perfectly capable of handling any software issues and I'll own all the hardware issues.
Any takers ?

PS- @OP, this post has been hijacked. We're going to mult-servos via single Xbee, dual ATmega328 land...

raschemmel:
I've heard they have terrible range.

Which have?

...R

Let me try starting over. For the moment, forget Arduino, for get Xbee, forget wifi and for the love of God, forget the Wii.

Radio control hobbyists use 2.4ghz, multichannel radio frequency transmitters and receivers. An RC pilot for example, uses a hand-held, battery powered transmitter to send commands to a 2.4ghz receiver attached to servos and engines aboard an RC plane within a several hundred foot range. Here's an example:

Modern animatronics use nearly identical setups, but instead of wing angle or rotor speed, they control eye-blinks and jaw movement. Now, have a look at this:

https://www.sparkfun.com/tutorials/348

In this tutorial, the tutor brings the Arduino into the picture. He connects the receiver unit (bottom right in the picture above) to the Arduino, so that signals from the transmitter (big thing in the picture above) are then interpreted by the Arduino and react accordingly to move his robot. I want to effectively reverse this.

I have some rudimentary knowledge of using only a transmitter and receiver to control servos, but I wanted to try and leverage some of the Arduino's power into the equation.

So, if I were to replace the RC control pictured above with an Arduino, what would it take to firstly transmit data (yes, just PWM) FROM the board (a shield of some sort I'm assuming) and what would be needed (another Arduino with a shield? a custom built receiver board? both?) on the other side to receive the signals and drive the servos. I'm looking for ideas, the less expensive the better. Whether it be Bluetooth, RF, or Wifi. What are each's benefits? Fast transmitted response is important, because I'm going to be intereacting with live people. IR isn't an option because I won't have line of sight.

That about covers it, as clear and concise as I can make it. For reference, I have the Uno and the servos, as well as some protoboard, so I'd be purchasing or fabricating everything else. I'm still very new to this stuff, so I'm asking for a little hand-holding, but I don't need baby-talk or condescending comments. I just want to learn.

see attached pinout for UNO.
It has 6 pins that are identified as PWM. This is the minimum possible. There is library that expands this to like a dozen or more.
You have to the Servo library because RC servo PWM is totally different than standard pwm. There is a chip TLC5940 that can allow you to control 16 servos from one UNO. All of this is basically plug & play. The servo library
http://playground.arduino.cc/ComponentLib/Servo
will allow you to drive servos before lunch. (meaning right now).
You can plug the servo power into your UNO +5V but some people will tell you that's bad. I do it all the time and never have a problem. The only thing to remember is that if a servo stalls, disconnect it from the arduino immediately because it will draw more
current and load down the regulator. It won't damage the regulator. The TLC5940 if wired properly can be up and running servos in under a hour or so. Don't miswire it . It is unforgiving. Do not under any circumstances deviate from the instruction regarding the current limiting resistor on pin 20 or you will fry everything. (except the UNO). I think the Xbee is the best choice but you'll have to decide for yourself. If you read my previous post , you need one master uno and one slave. All commands are sent as ASCII serial and decoded into specific commands for specific channels at the receiver end . Those channels signals continue until updated. If it is a positiion then it stays there until you send a new command. The code is basically a combination of lookup tables or arrays or something to specify the channel and decoding code.

I don't know what sort of range is required for the wireless part. The cheap un-amplified nRF24L01+ transceivers would be fine for line-of-sight over a few yards of a shorter distance through thin partition walls etc, but in my experience the available bandwidth is pretty low and I suspect the latency would not be acceptable - it can easily take tenths of a second to send a single message. I would have thought that a Bluetooth serial link would be easier and cheaper to use. With this approach the bluetooth modules would just provide an async serial data stream so the programming would be relatively easy and you could use a direct wired setup for development testing. The last option would be a pair of 433MHz transmitter/receivers, which again would give you a one-way async serial data stream.

You would need to decide how to encode your data for serial transmission. The simplest approach would be to encode your servo positions textually as a set of comma separated values with each set separated by a linefeed. This makes the data very easy to generate and view for test purposes.

The nRF24L01 range is about 10 ft and there is a 32 byte maximum package length.