Simple 3D-printed NRF remote - Arduino controlled

For anyone interested in a prebuilt, I’ve got 1 more currently available:

Have you installed the RF24.h library? There are a few libraries you have to install other than the VESCUART one.

2 Likes

Hey are you still selling these things? If so, can you make different colors?

I’m not currently producing different colors right now

Thank you, I did that and it work. Transmitter is all good. So now the reciever code is giving me this error:

Arduino: 1.8.6 (Windows 10), Board: “Arduino Nano, ATmega328P (Old Bootloader)”

Reciever:127:2: error: ‘VescUart’ does not name a type

VescUart UART;

^

C:\Users\theli\Documents\Arduino\libraries\Reciever\Reciever.ino: In function ‘void setup()’:

Reciever:139:7: error: ‘UART’ was not declared in this scope

   UART.setSerialPort(&Serial);

   ^

C:\Users\theli\Documents\Arduino\libraries\Reciever\Reciever.ino: In function ‘void setCruise(bool, uint16_t)’:

Reciever:453:5: error: ‘UART’ was not declared in this scope

 UART.nunchuck.lowerButton = cruise;

 ^

C:\Users\theli\Documents\Arduino\libraries\Reciever\Reciever.ino: In function ‘void setThrottle(uint16_t)’:

Reciever:488:5: error: ‘UART’ was not declared in this scope

 UART.nunchuck.valueY = map(throttle, 0, 1023, 0, 255);

 ^

C:\Users\theli\Documents\Arduino\libraries\Reciever\Reciever.ino: In function ‘void getUartData()’:

Reciever:537:10: error: ‘UART’ was not declared in this scope

 if ( UART.getVescValues() )

      ^

exit status 1 ‘VescUart’ does not name a type

This report would have more information with “Show verbose output during compilation” option enabled in File -> Preferences.

1 Like

Hey, i have some questions about this remote:

  • is it possible to use the switch for reverse mode? (would like to keep ppm with brakes but have possibility for reverse mode)
  • is it possible to use said button for cruise control?
  • do i have to connect uart pins on my master vesc, or is slave also ok? because i would like to have bluetooth module on master

thanks

Having the same issue, what are we doing wrong?

1 Like

Hello, so my first issue was that I didn’t install the rf24.h library. Now the second issue is for my reciever and it says the vescuart does not name a type. I’m not sure what that’s suppose to mean, I’m a noob at coding. Any help is appreciated. I’ve read that if you basically downgrade to an older version of the arduino ide, some things will upload then on the newer version. It’s because when the code is made in the older version, its specific to that version. Some things may be ok in the newer version because they havnt change, however, some other things may have. I just hope I can find a fix other then trying that.

1 Like

Ah, I guess I’ll give that a try. Also having an issue getting the trigger to limit acceleration/braking in the OLED display, which is confusing because the trigger function works when booting into the settings, so I imagine my soldering connections are sound.

1 Like

It makes it super easy when you make a custom PCB. Try easyeda, itll clean up a lot of the wire clutter.

1 Like

Just seeing if anybody has found a fix for the “VescUart does not name a type” error in the receiver code. By the way i tried an earlier version of arduino and it didn’t work.

I got 2 of these units https://www.adafruit.com/product/3176 at $24 each It has lipo charger, radio built in. It also operates at around 900mhz which makes the range longer(longer wavelength lower energy dissipation) also less interference from 2.4Ghz wifi networks.

Porting the code doesn’t seem difficult. Let’s see. image

Did you try the VescUart fix from solidgeek?

I was about to try it, but I think my receiver is showing its Chinese clone colors… doesn’t allow any uploads now… errors out with:

avrdude stk500_recv() programmer is not responding arduino nano

Case of the Mondays

1 Like

Hi guys,

Anyone have this issue? Sometimes when I ride, the motors would register a reverse signal spike. You can see from the my video that even though I’m not engaging my remote the board would reverse by itself for literally a split second.

Sadly this has happened way too often and even one time during high speed so I opted to switch out for the time being. If I didn’t have straps I would have been flown off of the board.

I think I got that error and had to choose ‘old bootloader’ when selecting your processor inside the IDE

please report back how this feather works. could make smallest remote ever with that all in one:)

1 Like

@atlas You have to use the VescUart library I released on Github, if you want to use the latest development branch.

@neiru37 How did you configure your VESC? What firmware do you use? Which version of the receiver software do you have? Have you configured the PPM options in the Vesc? We cant help you if you dont supply any information.

Woops, sorry wasn’t sure what to include as supplementary information.

I’m using ackmaniac on my vesc and have calibrated ppm on the vesc tool.

I’m not sure how I should answer your question on how I set up my vesc.

I used the development version of your receiver firmware before the recent changes you pushed.

Here’s a direct link to the video in case the preview doesn’t load: https://drive.google.com/file/d/1Egwbgk_t3qJdiuje9l9CiDpHQGu7bc76/preview

1 Like

Omg this is awesome… :heart_eyes:

Are u working on this?

Any particular reason you left out the Wh reading from the vesc?

case COMM_GET_VALUES: // Structure defined here: https://github.com/vedderb/bldc/blob/43c3bbaf91f5052a35b75c2ff17b5fe99fad94d1/commands.c#L164

		ind = 4; // Skip the first 4 bytes 
		data.avgMotorCurrent 	= buffer_get_float32(message, 100.0, &ind);
		data.avgInputCurrent 	= buffer_get_float32(message, 100.0, &ind);
		ind += 8; // Skip the next 8 bytes
		data.dutyCycleNow 		= buffer_get_float16(message, 1000.0, &ind);
		data.rpm 				= buffer_get_int32(message, &ind);
		data.inpVoltage 		= buffer_get_float16(message, 10.0, &ind);
		data.ampHours 			= buffer_get_float32(message, 10000.0, &ind);
		data.ampHoursCharged 	= buffer_get_float32(message, 10000.0, &ind);
		ind += 8; // Skip the next 8 bytes 
		data.tachometer 		= buffer_get_int32(message, &ind);
		data.tachometerAbs 		= buffer_get_int32(message, &ind);
		return true;