WiPy2.0: funny antenna effect
Hi, first of all: Congratulations to WiPy project, I find it great!
I am working on a data acquisition system and want migrate my hardware from another microcontroller to WiPy2.0. Basically, it works fine so far, but I made a funny experience:
- I have a prototype board with a 28-pin socket for WiPy (making use of most digital I/Os, SPI and SDcard).
- When I connect these 28 lines by wires (ca. 10 cm) to the corresponding pins of the Expansion board, all runs fine.
- When I have the WiPy in an extra 28-pin socket connected by wires (ca. 10 cm) to my prototype board, all runs fine.
- When I have the WiPy directly inserted into my prototype board, it does not work at all.
running fine = heart beat LED is blinking, Pymakr is connected via WiFi, my software runs perfectly.
not working = after power up, heart beat LED blinks just a few times, WiFi is off, manual reset repeats the sequence, sometimes red light shows up at heart beat LED for a couple of seconds, the WiPy remains "dead".
This happens identically with all 3 WiPys I have. There is no specific software in the flash memory (as received state, just updated to most recent firmware by Pycom upgrade software tool, but the effect is independent of firmware release).
After hours of bug searching, the following was found to solve the problem:
A ca. 10 cm long wire attached to the whatever-it-is component located in the lower right corner of WiPy (large ceramic bar below the "pycom" logo). The wire is attached to the soldering face at the pcb´s corner, see photo.
With this "add on", the WiPy runs perfectly in my prototype board: Heart beat LED blinks as it should, WiFi goes on air, Pymakr connects as it should, software development makes fun.
My questiones: Is there any rational explanation? What are the do´s and dont´s with respect to the HF issue on WiPy? Any documentation available? (could not find).
These things appear critical to my project, I must not have the risk of WiPy running crazy due to some undefined HF constraints.
Thank you for your support!
PS: Life would be much more easy if the schematic drawings of WiPy2.0 were available (as are for WiPy1.0)
PPS: Expansion board pin out (ver. of Jan. 16, 2017) has an error: USER LED (P9) Anode can not be connected to GND, it would not work.
@rustydusty This is a great contribution. I have the same problem with a LoPy module, I am going to apply the RF design rule on LoPy.
yes, I fully agree with you, we must look at the average power demand a device consumes in the application to rate it "low power" or not. At the same time, we must look at the power profile for selecting the optimum supply design. This makes sufficient buffering (i.e. bypass capacitors) crucial, if the power supply is not capable of driving the required peak currents.
I am pretty sure WiPy will meet my requirements, provided I can make use of the deep sleep mode with timer controlled wake up.
No ground plane and no signal tracks close to the HF/RF section of the WiPy board, preferentially have the chip antenna protrude beyond the edge of the application PCB.
Alternatively, make use of the external WiFi antenna - and do not forget to set the software switch.
right? (I will test the external antenna approach as soon as possible)
Reference designs would indeed be very useful, in all respects (RF, power, interfacing, etc.)
Thank you both again for your contributions, it was very helpful!
Well technicaly they're both EMC subjects (emissions and immunity) but FCC only requires EMC emissions testing (immunity is required only for medical devices) so you won't find references to immunity on the FCC listing.
I guess Pycom will have passed IEC 61000-4-3 for CE compliance and has that available somewhere. I wouldn't expect it to be compatible with 10 V/m though - as you probably know that's for industrial equipment and rather difficult to achieve uncased.
Most commercial modules I know of are only rated to 3 V/m.
I'm really not speculating on the power numbers. The ESP32 while running (with WiFi on but idling away) reads about 125mA on my power supply, the data sheet lists 260mA while WiFi is transmitting and if you look at the official ESP32 module:
ESP-WROOM-32 Datasheet https://www.espressif.com/sites/default/files/documentation/esp_wroom_32_datasheet_en.pdf
you'll see the "Operating current" under Recommended Operating Conditions is in fact 500mA. These are when operating from 3.3V. I expect the WiPy to be very similar.
The trick - as with anything IoT - is to keep it in deep sleep as much as possible.
One thing to try is to set WiFi(antenna=WLAN.EXT_ANT) and connect an external WiFi antenna instead (via the u.FL connector). This triggers the RF switch moving the RF path away from the internal ceramic antenna and onto the uFL connector. I wonder if that solves your problem?
It would be good for Pycom to provide a tested "reference design" (board layout and schematic) for integration and I really expect something like that for the OEM modules.
@Shaun thank you so much for this advice!
Indeed, there are some lines running underneath this critical area and it is my suspicion that these are the responsible ones. WiPy seems to be very sensitive in this respect, the distance to the board is ca. 10 mm (due to socket), nevertheless, it interferes.
@Rustydusty It is very important that there is no ground plane or signal tracks running under the modules chip antenna area.
It is preferred to have the chip antenna protrude beyond the edge of your application PCB
Thank you for fast responses!
your confirmation of my observations is very helpful, indeed! Yes, I am convinced that the problem is related to to the layout of my prototype board, which seems to create a strong HF interaction with the WiPy, some kind of feedback-loop, resonance, or similar.
So, it would be nice to have some layout rules for these modules in the future.
Meanwhile, I will continue by trial and error to find a technically sound solution.
Yes, your advice related to power supply is an excellent approach, it was the first thing I have investigated. I have tested 3 different power supplies: The one of my prototype, the USB-supply from my computer, and a mains-to-USB power supply rated for 1 amp. Result: no effect.
I also added bypass capacitors between 5V supply and ground, and between 3.3V board output to ground, in various combinations, using 1uF or 10 uF placed close to the WiPy. Result: no effect.
moreover, the fact that the problem disappears when the WiPy is separated from my board by wires contradicts the power-supply-theory, it should rather make the situation worse.
Yes, I have noticed that the soldering point of my miracle wire is low ohmically connected to ground. Nevertheless, attaching the wire directly to the ground pin of WipPy has no effect.
Final remark: If WiPy required indeed a power supply capable of 500mA for running stable, it would not be suitable for IoT applications, rather for IoPP (PP=power plants) :-). Luckily, it does not.
Anyway, the power management issue will be the next topic I must get into. sleep/deep-sleep issues are not so well defined yet, as it seems to me.
And I am sorry, but I must insist: Will Pycom ever make the schematic drawings available to users? It would be very useful as long as the WiPy hardware is not in all respects a fully defined black box.
I am looking forward to the progress of the excellent WiPy project and its documentation!
Thank you again!
@jmarcelino Thanks for that link.
I find reports for EMI (radiated emissions) and RF exposure, but no test report for EMC (susceptibility to external RF fields)
You can look up the WiPy's FCC certification including MPE (Maximum Permissible Exposure) test report
I had a similar antenna issue.
My original proto PCB was designed for a LoPy and development progressed.
I then later switched over to developing with a WiPy, and I could not get the WiPy to run it would simply crash and my PC would lose connection with the WiPy WiFi AP.
Placing my finger on the antenna would allow the module to work.
I later molded a blob of clay over the antenna portion of the module to keep it stable but occasionally ran into very strange semi failed UART routines etc..
My 2nd revision PCB was designed for the WiPy and subsequently had all ground plane below the WiPy antenna removed. This PCB is running stably.
I am a little concerned that the WiPy might not pass EMC testing, as it appears to be prone to hangup when reflections from its own antenna are received.
Perhaps a Pycom representative could shed light on whether the WiPy has passed both EMI as well as EMC testing, and if so, at what field strength was it tested? (10V/m?)
That ceramic bar is the WiFi antenna and I really strongly advise not soldering things to it as it's one of those components deeply tuned to it's surroundings.
That said the sides to which you soldered are just connected to ground so I imagine you're only adding extra ground capacitance?
I suspect you have a power supply issue powering the WiPy from your prototype board and the extra capacitance introduced by the wires is masking the problem. Make sure you have plenty of power available (I'd suggesting allowing for 500mA on 3.3v for the WiPy) and try adding a capacitor to the power rails on your board.