Simple 3D-printed NRF remote - Arduino controlled

Has anyone had a problem with spring being very tight? Mine is made of 0.49 mm thick wire. Throttle really bounces back hard when released and it’s a work out to move the wheel forward and backwards. Perhaps it will loosen up with time, I guess I’m yoused too my Maytech remote with thumb throttle too much - it is softer ( 1 axis joystick).

Also - @solidgeek any chance to easily disable deadman switch in the code ? Just to have as an Option, as I think my hand will have spasms after a while :wink:

If another guy has electric skateboard and has the same remote won’t it cycle between the two remotes because the signal has most likely the same pipe? When I was testing that thing happened to me, if someone had the same address etc…

1 Like

@Sander Nordic’s Explanation of Pipe Address(s).

We recommend using at least 32bits address, preferably 40bits address. The reason we don’t recommend using a shorter address is that the nRF device might demodulate random noise on the air which might match with the correct address. Using a long address avoids this problem.

For instance with a 16bit address and 1mbit speed, the chance is that random noise hits the correct address about every 65ms. Statistically with a 32bit address hits the correct address every 70 minutes.

We recommend enabling 16bit CRC, this ensures that the received payload is correct. Both the address field and payload must be equal to the CRC checksum. All bits must be correct otherwise the packet is discarded.

Here are some guidelines when choosing an address:

A. The address made by (5, 4, or 3) equal bytes (0x00 or 0xFF) is not recommended because it usually makes the packet-error-rate increase.

B. Addresses where the level shifts only one time (i.e. 0x000FFFFFFF) can often be detected in noise giving a false detection, which again may give raised packet-error-rate.

C. First byte of the address should not start with 0x55… or 0xAA… as this can be interpreted as part of a preamble, causing an address mismatch for the rest of the address.

Quick summary:

Use at least 32bit address and enable 16bit CRC. Avoid addresses that start with 0x00, 0x55, 0xAA and 0xFF.

openWritingPipe Open a pipe for writing. Addresses are 40-bit hex values, e.g.:

openWritingPipe(0xF0F0F0F0F0); Parameters:

address: The 40-bit address of the pipe to open. This can be any value whatsoever, as long as you are the only one writing to it and only one other radio is listening to it. Coordinate these pipe addresses amongst nodes on the network. openReadingPipe Open a pipe for reading.

Warning: all 5 reading pipes should share the first 32 bits. Only the least significant byte should be unique, e.g.

openReadingPipe(0xF0F0F0F0AA); openReadingPipe(0xF0F0F0F066); Parameters:

number: Which pipe# to open, 1-5. address: The 40-bit address of the pipe to open.

So from the code in Github for Solidgeeks Controller:

Transmitter (Transmitter.ino)

const uint64_t pipe = 0xE8E8F0F0E1LL;

Receiver (Receiver.ino)

const uint64_t pipe = 0xE8E8F0F0E1LL;

Change the address to whatever you want to make it but follow the notes, rules above. Recompile your code and upload to your Ardunio Device and you should now have a different address then someone elese’s controller. Of course what is in the Github is going to be the same for every controller until you change it to something different.

I will post the link to Nordic and look at Appendix A for detailed information about “Pipelines” https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf Hope this helps.

8 Likes

@solidgeek looks like @Wajdi took your recommendation of using orange for his top piece for his design of his new remote.

3 Likes

Nice work! I like the name you gave it! I gotta find a name for mine as well :smile:

@solidgeek

5 Likes

Done printing my remote! How do i wire up the arduino that is going to the esc?

11 Likes

I like the Firefly SolidGeek text at the bottom, but I’m not sure about the weird icon at the top.

@Clonkex Suppose to be like a Firefly/dragon fly mix.

I would rather have a minimalistic logo inly instead of logo and text swell

Hi @solidgeek ! Im trying to find which on/off switch you are using? Itˋs not on the partslist😬

1 Like

@Wajdi Thanks! I love your work mate, it looks amazing :slight_smile:

I have been thinking of adding a logo of some kind, however, it’s hard to find the right print-settings to make it work. I think it looks awesome, but I am not sure if I can print it … Will try it out tomorrow :slight_smile:

@DjamboBuksne looks great! The receiver nRF24 is wired the same as the remote. The Arduino should be connected to the VESC in this manner:

TX → RX RX → TX 5V → 5V GND → GND D5 → PPM

You will have to unplug the receiver from VESC while uploading firmware because the serial port (TX, RX) is connected directly to VESC. I also recommend adding a big capacitor (220uF will do) on the 5V rail, to ensure a stable 5V output to the Arduino. I will have a tutorial ready in the following week.

@Mozillum oh I see, well the switch I got from a local store. Its a 13mm Slide switch but any in that size should work just fine. I am able to find a lot of 10mm, however the 12-13mm is hard to come by. Does anyone know of a good supplier?

7 Likes

You got a donation link? For those of us that cant afford the remote but would still love to support you lol. Looks amazing!

3 Likes

For those who may be struggling with good, not so good or loss of communication with the NRF’s please read below. Link will be at the end.

https://hackaday.io/project/12123-electric-longboard/log/40963-nrf2401-power-capacitor-experiment

1 Like

@solidgeek looks like you changed the throttle. I see there is more that extends to help for a better grip when going forward or reverse. Looks good. When do you think the drawings will be uploaded with the new changes with the beta’s, etc?

This is such an awesome project… I have already put all the necessary parts in my cart but before I make the order I wanted to ask a few things.

  1. Can one remote control two different boards? Like how in RC radios you can have two models but share the same remote.

  2. If my buddy also builds one, will we be able to ride together without interference? I’ve read the whole thread plus the wiki but there isn’t much mention about how to bind the remote to the receiver.

Thanks a lot and I look forward to building my own!

  1. With some code changes you could, but you’d also need to add a physical switch or button to the controller to set which “pipe” to use in the code.
  2. You don’t “pair” per se. You’d need to change the “pipe” addresses in the code of the controller AND receiver, and I’d recommend anyone that uses this controller should do that, otherwise they may skate near someone else with this controller (who also hasn’t changed their pipe addresses) and things would go wrong.

Thanks!

I suppose I can code it in somehow, enter the menu and then swap from one model/board to another. This will be super useful so I don’t have to build another remote for another board, which I currently need to do with my GT2B unless I keep rebinding when I swap boards.

Good point about not using the default the pipe address!

I’ll put down an order and hope everything goes according to plan!

Oh ok thanks! Is there any way to use it with the esc? I don’t need all of that data, I just want to make it work.

Can i connect it like this; 5v to 5v gnd to gnd D5 to signal

Will it work?

There you have “tip designer” option

1 Like