I’m trying to build a little remote weather station with the Photon and a weather sensor (BME280), and cram them all inside an anemometer + shield. At first I had the sensor just an inch away from the Photon, and it was reading 5 degrees celsius too hot. I thought my sensor was broken, but no, it was just reading the heat generated by the photon, which according to my little meat thermometer touching the metal shield over the wifi module, it gets hotter than 30C in a 21C room.
Even seperating them by as much as the physical room inside the case allows, about 6 inches, the sensor is still picking up heat generated by the photon, about 1.5C too hot. I can confirm it’s the Photon doing this, because when I turn the whole module upside down, it no longer picks up that heat, because heat rises. Unfortunately because of the design of the case, I can’t have it upside down.
I thought about sleep modes, since I only need to transmit the temperature once every 1 or 2 minutes. But they all put the wifi module to sleep, which is fine for 1-2 hours, but since I would imagine it would take the wifi module a good chunk of time to reconnect to the wifi, I’m not sure this would really make sense if I’m waking it up every 1-2 minutes. And it’s only the wifi sleep mode I could use - I have to have the actual microcontroller awake the entire time listening to interrupts for the anemometer to work.
Are there any other ways to reduce the heat generated by the Photon? Does the wifi sleep mode reconnect very quickly, and am I wrong to say that mode wouldn’t help?
EDIT: Well I can answer my own question, but I’ll leave this up here for future googlers and the curious. Using System.sleep() massively reduces the amount of heat generated by the Photon. I have my code set up to update temperature once every 2 minutes. I send updates to 3 different services - Ubidots, Blynk, and the Particle Publish cloud service. After the final update call, I tell it to start a 5 second timer. After that 5 second timer, I tell it to sleep for 110 seconds. The 5 second timer is absolutely necessary - if I tell it to sleep right after the last Particle Publish line, it doesn’t publish everything, they get cut off. The system wakes from sleep much faster than the initial wifi connect on startup - I’d say a total of 3-4 seconds. The first half of this graph is showing how the temperature sensor slowly reads higher and higher temperatures as the Photon heats it up, right in the middle of the graph is when I updated the code to include System.sleep(), and the second half shows it finally cooling down to true ambient room temperature: