ESC's make Wifi-module blank-out

First off, I’m trying to build my own drone using an arduino micro, IMU, some ESC’s, some engines, and a wifi-module.

Wifi-module: NRF24L01 @ 3.3V (from the Micro)
ESC’s: DYS XSD30A XSD 30A 3-5S ESC BLHeli_S @ 13.6V - 16.8V (LiPo battery 4S 2.2Ah)
Engines: EMAX RS2205

The Micro has it’s own power-source, sometimes a battery, sometimes through the USB from my laptop. The ESC’s draw their power from the LiPo, which is not connected to the Micro’s circuit. The ECS’s are controlled by the Micro through three separate PWM signals generated by pin 9, 10 and 12. Controlling the engines works fine, each individual and together.

Here’s the problem. While using all three ESC’s at the time my wifi-connection starts to get drop-outs around 25% of the engine’s output, from there-on the connection get worse with increased output to the point that no connection can be established at all (messages don’t get received or send).

Here’s my debugging:

[Wifi-module doesn’t get enough power]
I ran into this before and fixed it by bridging it’s 3.3V and GND with a 10uF capacitor. This worked for my earlier problems. I’ve now changed the capacitor for a 220uF, this did not solve this issue. I’m using the black, cilinder version (forgot the name) but have heard that ceramic capacitors work better with high frequency stuff (see next issue).

[Power-cables of the ESC’s / engines generate electro-magnetic noise]
The engines are 3-phase controlled, which is generated by the ESC’s. There’s a big chance that the ESC’s don’t generate sinusoidal signals but rather block-waves. In the instances that the ESC’s switch between outputs the current towards the engines has to stop and continue, making small pulses through the cables which could generate electromagnetic waves in the Wifi-spectrum. All power-cables come in pairs of + and -, which should mean come-and-go of the current, and are always in parallel. This should reduce the induction effects. I’ve also wound the power-cable (the piece between the battery and the split to the ECS’s) several times around a bolt to create an induction-coil which should stabilize the current/induction of the power-cables.
I’ve then extended the cables of the wifi-module and moved the module around towards/away the battery, engines or cables. This had no apparent effect on the Wifi connection. I’ve also had my phone directly above the system, it had no drop in connection with my wifi router at home. So I want to rule this problem out.

[Generating high value PWM signals is somehow difficult]
Leaving all components attached but not giving the ESC’s power shows no problems while generating high value (% of output) PWM signals.

[One of the ESC’s / Engines is broken]
Disconnecting the PWM signal between the ESC’s and the Micro while remaining power on all three shows that each ESC on it’s own works fine (or rather, they don’t produce the problem enough to be noticeable by themselves). Testing pairs of ESC’s shows that 1&2 and 1&3 do fine, while 2&3 re-create the problem.
I’ve tried to switch ESC 2 and 3 (including their engine) in their place, this changed nothing.
All ESC’s have the same programming, engines, PWM signal and connection to their battery. The only difference is that ESC 1 is a version 2 of the DYS.

I Have not been able to solve the problem. I’ve been trying to think of a relation between the engine’s output and the Wifi-module’s connectivity. Is there any other way a PWM signal can transfer noise to the Wifi-module? Does a ceramic capacitor help with high frequency noise? Does the DYS V2 not work with the V1?

I’m hoping for your help

Image from Original Post so we don't have to download it. See this Simple Image Guide


First off, an nRF24 is not WiFi. However it is perfectly suited to your project.

You have not provided any details of how the communication failure manifests itself. Can you post some samples of the output from your Arduino programs to illustrate what is happening?

A photo of your project would be a good idea, One wild guess is that the nRF24 antenna is not suitably positioned.

It seems as if you are drawing 3.3v power for the nRF24 from the Micro. It may not be able to supply enough current. You can test this easily by temporarily powering the nRF24 from pair of AA alkaline cells (3v) with the battery GND connected to the Arduino GND.

Simple nRF24L01+ Tutorial


Using two AA batteries (2 x 1.2V) to power the nRF24 (don't forget to connect the ground with the Micro), seems to have done the trick. I feel like this is the standard answer to 95% of these kinds of problems and I am both frustrated that I find out only now (and with your help) and relieved that its a matter solved so easily.

You're a legend, thanks.

Using two AA batteries (2 x 1.2V) to power the nRF24 (don’t forget to connect the ground with the Micro), seems to have done the trick.

I presume you don’t want to fly with the weight of two AA cells so I suggest you get an LD117 / LD33 voltage regulator to produce the 3.3v from your power bank’s 5v output. The SOT-223 version of the chip is small but not so small as to be difficult to solder with a fine-tipped soldering iron.