All articles

Calibrate your RC car radio signal with Arduino ESP32

If you have already tried to read an RC receiver signal with an Arduino, you may have been surprised by the result: oscillating values, neutral that isn't at 1500, and sometimes even a completely inverted signal. No panic, it's completely normal and easily manageable.

Understanding the RC PWM signal

All RC radios use a PWM signal (radio PWM signal) to communicate with the receiver. This signal is an electrical pulse whose width varies with stick position:

  • ~1000 µs : position extrême dans un sens
  • ~1500 µs : position neutre (centré)
  • ~2000 µs : position extrême dans l'autre sens

These values vary by radio. Some are 1000-2000, others 1100-1900 or even 1028-1633 like the Absima CR3P. That's why calibration is essential.

The inverted signal problem

On some radios, especially when trim or channel direction is modified, the signal can be inverted: full forward = low value, full back = high value. It's not a bug — it's simply how some manufacturers program their transmitters.

💡 Flare RC gère ça automatiquement : lors de la calibration guidée, l'app détecte si le signal est inversé et adapte le comportement en conséquence. Vous n'avez rien à modifier dans le code.

Calibration with Flare RC

The app offers automatic calibration in 4 guided steps:

  1. Neutre : centrez le stick, l'app enregistre la valeur pendant 3 secondes
  2. Plein avant : poussez à fond, l'app enregistre
  3. Plein arrière : tirez à fond, l'app enregistre
  4. Zone morte : calculée automatiquement (5% de la plage)

Values are then saved in the ESP32's flash memory and survive power outages.

What is the dead zone?

The dead zone is a range around the neutral where throttle is considered zero. It avoids false positives when the stick isn't perfectly centered. A value of 20 to 40µs is generally ideal.

Automatic 4-step calibration

Flare RC guides calibration and detects errors automatically.

Related articles
▶ Download Flare RC
← Back to the blog