Na enige tijd bleken de metingen een onverwacht gedrag te vertonen. De ESP01 zou elke 10 minuten 1x moeten meten, maar bleek dat soms veel vaker achter elkaar te doen. De deep sleep werd verstoord.
Hierbij het verslag hoe met een transistor het nu is opgelost.
DHT22 lijkt op de DHT11 en kan ook onder 0 meten. Het boardje kan gekoppeld worden en werkt zonder problemen zonder deep sleep. Maar met deep sleep treden problemen op.
Nadat de DHT met ESP01 opstart, werkt alles prima tot en met de deep sleep. Na het ontwaken treden er problemen op. De oorzaak ligt er hoofdzakelijk in dat de ESP01 tijdens het booten een boot log uitzendt via de communicatie pinnen. Hierdoor raakt de DHT22 in de war en wordt soms zelfs onbereikbaar.
De eerste poging om dit op te lossen was om geen gebruik te maken van de communicatie pin GPIO2 voor data communicatie met de DHT22, omdat GPIO2 serial output is van de ESP01. De DHT22 datapin staat default HIGH zodat een verstoring daarvan ertoe leidt dat de DHT22 gaat reageren, terwijl het systeem nog boot. Als alternatief werd GPIO0 aangehouden. In eerste instantie leek dit een goede oplossing, maar na enige tijd begonnen de metingen onbetrouwbaar te worden. In plaats van GPIO0 zijn ook de andere pinnen geprobeerd, maar geen enkele leidde tot betrouwbare metingen. Er is nog meer aan de hand.
Een zoektocht op internet (“DHT22 deepsleep”) laat zien dat er veel problemen zijn met de DHT22 en de ESP01 in deep sleep. Velen hebben deze combi daarom niet meer in gebruik.
Een tweede poging was om de DHT22 als het ware 'uit' te zetten tijdens het booten en na het booten 'aan' te zetten en dan te meten. De sensor zou zodoende niet in de war raken. De poging was dus om de Vcc van de DHT22 te verbinden met een pin van de ESP01 en die dan naar wens HIGH te geven. Deze setup leidde ook tot het in de war raken van zowel de ESP01 en de DHT22. Het toevoegen van een diode leidde ertoe dat het allemaal wel opstartte, maar dat de DHT22, zoals te verwachten viel, te weinig spanning kreeg (minder dan 3.3 V).
De 3e en uiteindelijk geslaagde poging was het gebruik van een transistor om bovenstaande filosofie te gebruiken en het tekort van spanning bij te leggen door een verbinding met een hoger voltage, direct vanaf de batterij toe te staan.
In dit geval wordt GPIO2 gebruikt als base voor de transistor. Alhoewel deze dus leidt aan de boot log perikelen, wordt na de boot de de stroom op de DHT22 volledig uitgezet. Op het moment dat de sensor gebruikt moet gaan worden en de ESP01 al volledig stabiel is opgestart, wordt GPIO2 HIGH gezet en start de DHT22 schoon op. Na 2 seconden kan vervolgens een perfecte meting worden uitgelezen. Uiteraard had ook GPIO0 gebruikt kunnen worden, maar het principe blijft hetzelfde.
In deep sleep wordt 80 μA gebruikt, wat ok is voor batterij gebruik. Het geheel is aangesloten met 3 AA batterijen en de metingen lijken nu zeer stabiel te verlopen.