Best practice to forward a Signal by using a 2.4GHz Module

arduinoidentificationpwmRFwireless

I want to control the speed of a motor by using a 2.4 GHz receiver. I regulate the speed by sending an PWM-Info to the motor.

Its working great, if I use an arduiono and lots of wires. But I have to seperate the arduino and the motor, because the motor has to be portable. So I want to use a 2.4GHz transmitter module for arduino to control the motor.

I'd like to use this module, to receive the current frequence from the arduino and forward it to the pwm port: https://www.sparkfun.com/products/152

Is this possible as I imagine it? Is there anything else I need? When I could use an arduino, this would be very easy, but my solution has to be small. The smaller it becomes, the better.

In another scenario I use the arduino to control multiple motors at the same time, each motor has its own receiver. How can I identify the modules, so I can set the frequency for each motor.

Best Answer

That module gives you low level access to the radio -- e.g. you're not going to be sending high level prototcol data. Yes -- it's trivial for you to send any arbitrary message to the radio and have your arduino interpret the message as you please (set pwm duty cycle etc). You shouldn't need to do a whole lot else to get proof of concept. If you need super long range 0 dBm might not cut it, but it's definitely OK for several meters.

With regards to your second question: there are a million ways to identify the different radios. The most expensive and worst way is to have a different transmitter for each receiver. It's obvious why this is a bad solution. All your other solutions will require you to implement some kind of higher level protocol. There are lots and lots and lots of options here (this is a whole area of academic research). I used a similar Nordic radio several years ago and it had different channels you could utilize. That can help you (e.g. put one receiver on one channel), but it obviously doesn't scale well (e.g. if you have more devices than channels you're back to square one. Equally importantly you might not want to use certain channels -- they might be noisy, have poor PRR, etc). One simple, but not particularly robust (from the networking perspective) is to invent a protocol wherein you blast a message and depending on the contents of that message one and only one receiver responds. Your arduino will have to implement whatever protocol you want so obviously you can't go crazy with the complexity (e.g. you probably don't want to implement posix sockets). For a few motors (less than 10) you'll probably be OK doing something like this provided that you don't have stringent latency requirements.