Bluetooth vs NRF24L01 vs xBee for a new project.

I have built a large Pan/Tilt platform for a camera long lense. This was to overcome very shakey hands when trying to photograph wildlife with a very heavy lens remotely. Currently, I use a long cord to control vertical and horizontal movement. I would like to convert to wireless. I used xbee several years ago, Bluetooth more recently, and nrf24 not at all yet.

I started by looking at Bluetooth and app inventer 2, but couldn’t find a button up block. I moved on to nrf24, but there is a learning curve. I don’t mind if it will end up working, but not completely sure it will.

The current wired version is simply four buttons (left-right and up-down) and it works fine. Fore this to work wirelessly, the buttons would have to be just as responsive.

Anybody got 2 cents they would like to throw in on these alternatives.?

You need to define “responsive” but for my two cents, the NRF24 is more than capable for what you describe. If you’re using them in close proximity, you may need to reduce the power output to prevent receiver overload which tends to slow response times.

I won't ask what a button up block is, but I bet your wheel has already been invented, and it is done by using Bluetooth. The Android Bluetooth Joystick thread on this forum is over sixty pages long and should by now have most of what you need.

Anybody got 2 cents they would like to throw in on these alternatives.?

I like the idea of bluetooth and a phone for convenience.

I'm not familiar with i-phones and ble, but with Android I think you could do this simply with an HC05 and a bluetooth terminal app and not get involved with app inventor unless you wanted to make it more elegant.

Kai Morich's Serial Bluetooth Terminal has configurable buttons.
You could have a left/right/up/down/stop. The Arduino will be programmed to respond how you want. For example, a left button press could start a periodic increment left until stop was pressed.

What does your current code look like for response to the buttons? If you could convert that to Serial input instead of the buttons, you will be almost finished, as the conversion to bluetooth will be very simple. If the current program responds to a button held down and released, then you can replace that with a Serial start/stop command. You can also have a jog command for small moves.

The nRF24 modules are cheap and work well.

Have a look at this Simple nRF24L01+ Tutorial.

Wireless problems can be very difficult to debug so get the wireless part working on its own before you start adding any other features.

The examples are as simple as I could make them and they have worked for other Forum members. If you get stuck it will be easier to help with code that I am familiar with. Start by getting the first example to work

Bluetooth makes sense if you want to send the commands from a device (like a phone) that already has Bluetooth.

I have not used XBee - to my mind it is very expensive.

...R

“You need to define "responsive”

I need the lens to move when I press the directional button and stop immediately when I let off. I started with a joystick, but found my shakey hands did not allow for precise movements.

By “up block” I mean in app inventer, (I haven’t learned to program apps any other way) there does not seem to be an action (block) for when a button is released

Robin2: I have looked at your tutorial and will again. I am playing with nrf24 now but finding some timing issues. There seems to be a half second or more delay which is a problem. With a long lens, the target can leave the frame rather quickly. Still playing.

Bluetooth would be my first option if I can figure out how to get the phone app to respond as I need (start movement imidiatly when the button is pressed, and stop when the button is released)

All good points. Trying to overcome my own limitations is the biggest issue.

Thanks for the input.

By “up block” I mean in app inventer, (I haven’t learned to program apps any other way) there does not seem to be an action (block) for when a button is released

I would think that these two button events are what you would use.

TouchDown()
Indicates that the button was pressed down.
TouchUp()
Indicates that a button has been released.

I would still recommend getting started with a Bluetooth terminal app with start and stop before tackling app inventor. You could quickly find out if the latency from the phone is a problem compared to the physical buttons.

crchisholm:
There seems to be a half second or more delay which is a problem.

There must be something wrong with your code, or some wireless interference. I have built a control system for model trains that sends 10 messages per second - and that is by no means the limit. IIRC a message plus auto-acknowledgement takes about 3 to 5 millisecs.

...R

Cattle dog, I just reread your reply. I am going to check out you suggestion more closely. App inventer is great for someone like me, but I’m sure there are other ways to do this.

Robin2: you are right. Found a problem with my code. Fixed and there is no delay now.

Nick_Payner: I will look at that, but 60 pages of posts is pretty scary, considering how long it takes me to absorb anything.