NRF24 Robot Rover

I wanted a rover with longer range (WIFI is to short).
On this robot the video and control signals is transferred by a NRF24L01+.
The video is very low resolution and frame-rate (320x240, about 1 frame a second).
And a also build a remote control with a Raspberry Pi 7" Touchscreen Display
The range is at least 400 m.


  • Motor controller is a Sabertooth 2X5 driving  4 small DC-motors.
  • A NoIr Raspberry Pi camera can be tilted up and down by a servo.
  • Servo is controlled by a Adafruit 16-Channel 12-bit PWM/Servo Driver.
  • A small OLED display to show IP number
  • A digital voltage meters.
  • It has two IR LEDs. 
  • The first IR LED is fixed to the camera, but that did not work because it is reflected in the protective cover.
  • So I fixed a large infrared lamp on top of the rover instead.
  • The IR lamp is powered by a extra Buck converter that is controlled by a DIL relay which in turn is connected to a GPIO.
  • The protective cover is clear plastic glass that i heated and shaped.
  • It is powered by 2 3S LiPo (1300mAh each)
  • And a NRF24L01+ to transfer video to the remote control (and receive commands).

  • The remote control has a  Raspberry Pi 7" Touchscreen Display with Chromium running in kiosk mode.
  • I use nodm as display manager to automatically starts an X session at system boot.
  • You enable this in Steelsquid Kiss OS by executing: steelsquid browser-on http://localhost/nrf24rover
  • A small OLED display to show IP number
  • A digital voltage meters.
  • Powered by a 3S LiPo (2200 mAh)
  • And a NRF24L01+ to transfer commands to the rover (and receive the video)


  • The Rover is the master and takes a picture that then is divides into 31 byte packages to transfer to the remote.
  • The last byte tells the remote if there is more data or if the whole picture is loaded.
  • Between every package from the rover the remote can send a command (drive, tilt or lamp) to the rover (payload ack).
  • The remote takes the picture and saves it where the web-server can reach it.
  • The HTML5-page has a canvas that you can draw your finger on to tilt the camera and drive the rover.
  • Double-tap to enable or disable the IR-lamp.


Robot rover controlled by a NRF24L01+ transceiver

  • Control method: NRF24L01
  • CPU: Raspberry Pi
  • Operating system: Steelsquid Kiss OS
  • Programming language: Python
  • Target environment: outdoor

This is a companion discussion topic for the original entry at

Really wanna learn how to send images over NRF24 and also how to receive it