Inhoudsopgave:

ESP-01 bewegingssensor met diepe slaap - Ajarnpa
ESP-01 bewegingssensor met diepe slaap - Ajarnpa

Video: ESP-01 bewegingssensor met diepe slaap - Ajarnpa

Video: ESP-01 bewegingssensor met diepe slaap - Ajarnpa
Video: Luister 5 Minuten En Je Gaat Onmiddellijk In Diepe Slaap; Muziek Die Je Helpt Slapen 2024, November
Anonim
Image
Image

Ik heb gewerkt aan het maken van zelfgemaakte bewegingssensoren die een e-mailbericht verzenden wanneer ze worden geactiveerd. Er zijn veel voorbeelden van instructables en andere voorbeelden om dit te doen. Ik moest dit onlangs doen met een op batterijen werkende PIR-bewegingssensor en een ESP-01. De ESP-01 is zeer functioneel en heeft alle benodigde mogelijkheden, dus waarom zou u niet het minimale en goedkoopste gebruiken? Toegevoegd aan de mix was een andere afzonderlijke en externe ESP-01-module die een zoemer activeerde wanneer de bewegingssensor werd geactiveerd.

De code en de uiteindelijke circuitlay-out zijn verzameld uit verschillende bronnen op internet en ik denk niet dat ik ze specifiek kan identificeren. Het idee om e-mails via Gmail te verzenden kwam van een instructable en andere bronnen en de uiteindelijke code is een amalgaam van die bronnen. Diep slapen om te werken leidde me op vele paden die vaak vruchteloos bleken. Het grappige is dat als een pad eenmaal vruchtbaar blijkt, je stopt met zoeken naar meer paden. Dus ik wil iedereen bedanken die heeft bijgedragen aan mijn succes en nog onbekend is.

Ik had hetzelfde probleem om de PIR-sensor te laten werken bij het activeren van de ESP-01 diepe slaap. Vele paden totdat er een was die werkte.

Onnodig te zeggen dat er enkele interessante hindernissen waren of misschien nog relevanter, een beter begrip van de elektronica die ik nodig had. Je blijft leren totdat iets werkt en dan hoef je niet meer te leren.

De ESP-01 slaapt net zo goed als elke andere ESP8266-module, zolang u geen getimede slaap nodig heeft. Als u wilt dat de module na een ingestelde tijd ontwaakt, is de ESP-01 niet de module die u moet gebruiken. Maar dat is niet wat ik wilde. Verstreken tijd is zinloos bij het gebruik van een PIR. Ik wilde dat de ESP-01 alleen ontwaakte wanneer deze werd geactiveerd door beweging die door de PIR werd gedetecteerd. Als er uren of dagen geen beweging wordt waargenomen, blijft de ESP-01 in slaap met minimaal batterijvermogen.

Je zult veel circuits zien die GPIO16 gebruiken die zijn aangesloten op de ESP8266 Reset omdat GPIO16 het weksignaal is. Dit is waar, maar het is het weksignaal van de getimede slaap. We kunnen deze pincode negeren, wat goed is omdat deze niet beschikbaar is op de ESP-01.

Kortom, alles wat we nodig hebben is om het signaal van de PIR te krijgen om de ESP-01 Reset-pin te activeren. De eerste moeilijkheid die u zult vermoeden, is dat Reset wordt geactiveerd op een LAAG signaal en de PIR een HOOG signaal verzendt wanneer deze wordt geactiveerd. Reset moet ook HOOG zijn of zwevend bij het opstarten. Dus om dit kort te houden, besloot ik na een aantal verschillende circuits te hebben geprobeerd een NPN-transistor met een pull-up-weerstand te gebruiken om de RESET-pin HOOG te houden tijdens het opstarten. De output van de PIR is minimaal, maar levert voldoende basisstroom om de transistor aan te zetten.

Zoals u in het onderstaande schakelschema zult zien, werd de ESP-01 elke keer dat de PIR beweging waarnam uit een diepe slaap gewekt.

Maar er was nog een probleem. De reset van de ESP-01 vond pas plaats nadat de PIR stopte met het detecteren van beweging en terugkeerde naar een laag signaal, waarbij de transistor werd uitgeschakeld en de reset-pin op HOOG werd gezet vanwege de pullup-weerstand. Dit zou betekenen dat de e-mail niet zou worden verzonden en dat de zoemer niet zou worden geactiveerd tot NADAT de PIR geen beweging meer waarnam. Ik wilde dat de trigger zou plaatsvinden zodra er beweging werd gedetecteerd.

Wat ik uit dit gedrag heb vastgesteld, is dat de ESP-01 daadwerkelijk triggert op de stijgende flank van het signaal. Door de reset-pin tegen de grond te houden, wordt de ESP-01 niet echt uit de diepe slaap gehaald, maar op het moment dat de spanning stijgt naar het HIGH-signaal, vindt de reset plaats.

Mijn zeer eenvoudige reactie op dit gedrag was om een condensator toe te voegen aan de lijn tussen de PIR-uitgang en de transistorbasis. Dit zorgde ervoor dat de transistor alleen aanging terwijl de condensator aan het opladen was. Eenmaal opgeladen was er geen stroom meer en ging de transistor uit. De weerstand van 5k zorgt ervoor dat de stroom naar aarde kan worden afgevoerd. Ik heb dit getest met een LED in plaats van de ESP-01 en kon de LED een fractie van een seconde zien knipperen voordat hij uitging. Deze kleine puls was genoeg om de reset-pin even naar de grond te trekken en lang genoeg om de reset uit diepe slaap te halen.

Stap 1: ESP-01 diepe slaapmodule

ESP-01 Diepe Slaap Module
ESP-01 Diepe Slaap Module
ESP-01 Diepe Slaap Module
ESP-01 Diepe Slaap Module

De diepe slaapmodule gebruikt twee werkspanningen. De willekeurige 5v+ van het batterijpakket voor de PIR en ook een 3,3 volt-regelbord voor de ESP-01. Ik neem ook een diode in het circuit op om te voorkomen dat beschadigde onderdelen van sperspanningen. Dit verbruikt wel wat extra stroom en verlaagt de accuspanning met 0,7 volt. De diode kan buiten het circuit worden gelaten als u zeker weet dat u de kabels van het accupack nooit zult verwisselen. Voor het gemak is er ook nog een schakelaar toegevoegd.

Deze module is een kleine update van mijn oorspronkelijke niet-diepe slaaplay-out. In de configuratie zonder diepe slaap is de PIR rechtstreeks verbonden met de RX-pin van de ESP-01. Ik gebruik de RX-pin van de ESP-01 om een paar redenen als de invoerpin voor de PIR. GPIO0 werkte niet omdat bij het opstarten de PIR-output-PIN LAAG zou zijn, waardoor de ESP-01 in de flitsmodus zou gaan. Ik heb GPIO2 niet gebruikt omdat ik dan de ingebouwde LED niet kon gebruiken voor visuele feedback. De RX- en TX-pinnen worden vaak beschreven als extra IO-pinnen, maar mijn ervaring is dat RX een extra INPUT-pin is en TX een extra OUTPUT-pin.

In diepe slaapconfiguratie is de RX-verbinding niet strikt noodzakelijk. Ik gebruik het alleen om te controleren hoe lang de PIR wordt geactiveerd door de LED aan te zetten terwijl de invoer HOOG is. Zoals eerder vermeld, is de RX-verbinding niet nodig als u de lusfunctie opruimt en alleen de setup-routine gebruikt.

Hier is de onderdelenlijst voor de ESP-01 diepe slaapmodule:

1 - 5 x 7 cm PCB-prototypebord

1 - 2-pins connector

2 - 1 x 3 vrouwelijke headers

1 - AMS1117 - 3.3 spanningsregelaar printplaat

1 - 1 x 3 haakse mannelijke koppen

1 - 1 x 3 vrouwelijke socket header pin

1 - 1 x 4 vrouwelijke socket header pin

1 - 2 x 4 vrouwelijke kop

1 - 1uf condensator

1 - HC-SR501 PIR-bewegingssensor

1 - 2N2222 Transistor

1 - 10k Weerstand

1 - 4.7k Weerstand

1 - 1k Weerstand

1 - 1N4148-diode

1 - schakelaar SS12D00G4 SPDT

1 - ESP-01

1 - 4AA batterijpakket

Houd er rekening mee dat in de video de printplaat een ESP-01 breadboard-adapter gebruikt in plaats van de 2 x 4 header. Hoewel deze adapter gemakkelijker te solderen is, werkt de 2 x 4-header prima en past hij eigenlijk beter.

Stap 2: ESP-01 Diepe slaapcode

De Deep Sleep-code heeft twee functies. Stuur een e-mailbericht (standaard via gmail) en stuur een http-webverzoek naar de bijbehorende ESP-01-zoemermodule om de zoemer te activeren.

Wanneer geactiveerd, biedt deze module twee meldingsopties en kan vooral handig zijn als u niet op e-mailberichten let.

U moet zes regels code bijwerken met uw specifieke waarden om de schets te laten werken:

const char* ssid = "xxxxx"; // Uw WiFi SSIDconst char* wachtwoord = "xxxxx"; // Uw WiFi-wachtwoord String Senders_Login = "xxxxx"; // uw e-mailprovider login String Senders_Password = "xxxxx"; // het wachtwoord van uw e-mailprovider

Naar = "xxxxxx"; Van = "xxxxxx"; // Gmail geeft er over het algemeen de voorkeur aan dat dit hetzelfde is als Senders_Login en kan dit vervangen

Ik vond de diepe slaapmodule onvoorspelbaar werken toen de PIR-sensor was ingesteld op minder dan 10 seconden voor de duur van de triggergebeurtenis. Ik heb de mijne ingesteld op 20 sec. Dit is zeer betrouwbaar gebleken, maar het betekent ook dat er met die frequentie gebeurtenissen kunnen plaatsvinden.

Ik heb ook code toegevoegd aan de loop-functie om de ESP-01-led aan te houden zolang de PIR nog steeds beweging detecteert. Alle code in de loop-functie kan worden verwijderd en de oproep tot diepe slaap kan worden verplaatst naar het einde van de setup-functie.

Ik gebruik de knipperfunctie voor een visuele indicator van activiteit met de ESP-01-module.

Hoewel ik connectiviteit met Gmail heb gebruikt en getest, werken andere e-mailproviders ook. Ik heb er een paar geprobeerd. Ik heb gmail zelfs lastiger gevonden. Gmail vereist dat je account is geconfigureerd voor toegang door minder veilige apps. Deze accountinstelling is standaard UIT, dus zorg ervoor dat u deze vindt en wijzig deze in minder veilig. Gmail werkt anders NIET.

Als u ervoor kiest om meer dan één zoemermodule te hebben, voegt u gewoon extra aanroepen van de http-client toe (herhaal de drie regels code, maar wijzig het gebruikte ip-adres en definieer ook de httpCode-variabele slechts één keer als int!

Merk op dat het ip-adres van de zoemer hard gecodeerd is in deze module. Je hoeft het door mij gekozen ip adres niet te gebruiken, maar je moet wel het ip adres van de webcall in deze module matchen met het ip adres van de webserver setup in de volgende module.

Stap 3: ESP-01 zoemermodule

ESP-01 Zoemermodule
ESP-01 Zoemermodule
ESP-01 Zoemermodule
ESP-01 Zoemermodule
ESP-01 Zoemermodule
ESP-01 Zoemermodule

De zoemermodule heeft een vrij eenvoudige installatie. Het gebruikt een USB-connector in plaats van een batterijpakket omdat ik denk dat deze module niet geschikt is voor een batterijpakket. Het moet te allen tijde aan staan en nework/wifi verbonden zijn, omdat het nooit weet wanneer een webverzoek zal worden gedaan. Dit vereist meer continu vermogen dan waar batterijpakketten nuttig voor zijn.

Zoemermodules kunnen gemakkelijk op meerdere locaties worden geplaatst en geven een melding van een bewegingssensor-triggergebeurtenis, waar u ook bent!

De zoemer is aangesloten op de 5v van de USB-connector en er is nog een 3.3v-regelbord dat stroom levert aan de ESP-01.

De zoemermodule werkt met TX, GPIO0 of GPIO2 voor de uitgang. In mijn configuratie gebruik ik GPIO0. (Op de afbeelding van de module is de draad verbonden met GPIO2 maar ik heb hem sindsdien verplaatst.) Hoewel GPIO0 niet werkte voor de diepe slaapmodule (als INPUT), werkt het prima met deze lay-out als OUTPUT. Het wordt niet naar de grond getrokken bij het opstarten, wat problemen zal veroorzaken. Ik heb GPIO2 gebruikt, maar toen kon ik de ingebouwde LED niet gebruiken voor feedback, maar door GPIO0 voor OUTPUT te gebruiken, kan ik de ingebouwde LED gebruiken.

Ik heb geprobeerd een NPN-transistor te gebruiken om de zoemer in het circuit van stroom te voorzien toen de ESP-01 een HOOG signaal op de GPIO0-pin zette, maar de resultaten waren vreselijk inconsistent. De zoemer leek altijd te willen klinken, zelfs met heel weinig vermogen. Dus in plaats daarvan gebruikte ik een N-kanaal MOSFET (2n7000) en het resultaat was geweldig. De IO-pin stuurt de Gate naar behoefte aan.

Hoewel we slechts twee pinnen van de USB-connector Vcc (+) en Gnd (-) nodig hebben, gebruik ik een 5-pins header om aan te sluiten op de printplaat voor extra stabiliteit en voor het solderen voordat ik de USB op de regelaar aansluit. Mijn 3.3v-regelbord werd geleverd met de pinnen vooraf geïnstalleerd en in mijn gedachten ondersteboven. Dus om de regelaar in de header-pinnen te plaatsen, kun je zien dat de printplaat verborgen is, maar erger nog, vcc en gnd op de regelaar zijn omgekeerd van vcc en gnd op de USB-connector. Dus de draden kruisen elkaar.

Merk ook op dat + vermogen voor de actieve zoemer afkomstig is van de 5v van de USB. Ook werkt een 4-pins vrouwelijke socket-header goed met de pinplaatsing van de zoemer.

ESP-01 Zoemermodule Onderdelenlijst:

1 - 5 x 7 printplaat

1 - USB-miniconnector met pin-headers (7-pins)

2 - 1 x 3 vrouwelijke headers

1 - AMS1117-3.3 v spanningsregelaarkaart

1 - 2 x 4 vrouwelijke kop

2 - 1 x 4 vrouwelijke socket-headers

1 - 2N7000 N-kanaal MOSFET

1 - 10 ohm weerstand

1 - 5v actieve zoemer

Stap 4: ESP-01 Zoemermodulecode

De zoemermodule fungeert als een eenvoudige ESP-01-webserver. Het reageert met een eenvoudig bericht op een root-verzoek en wanneer het het buzz-verzoek ontvangt, zal het de zoemer activeren. GPIO0 wordt gebruikt voor de GPIO-pin voor het zoemersignaal.

Merk op dat de ESP-01 is geconfigureerd met een hard gecodeerd ip-adres. Dit is nodig om de deep sleep module aan het zoemeradres te koppelen.

Net als bij de vorige module, moet u twee regels code bijwerken met uw specifieke waarden:

//SSID en wachtwoord van uw WiFi-routerconst char* ssid = "xxxxxxx";

const char* wachtwoord = "xxxxxxxx";

Als u meerdere zoemermodules hebt gemaakt, moet elke module worden geladen met zijn eigen unieke ip-adres.

U kunt ook verschillende buzz-methoden toevoegen die verschillende zoemermelodieën produceren. Als u bijvoorbeeld een PIR-sensor bij de voordeur en één bij de achterdeur hebt, kunnen ze elk een webverzoek doen aan elk van uw zoemermodules, maar één sensor kan een schets hebben die buzz oproept en de andere schets kan buzz2 oproepen. zodat u aan het geluid kunt horen welke sensor is geactiveerd. En ga zo maar door en ga zo maar door! De buzz2-functie bestaat niet, maar kopieer de buzz-functie en verander de vertragingswaarden.

Voor de webserver hoeft u alleen maar een regel code als volgt toe te voegen:

server.on("/buzz2", buzz2);

Stap 5: Laatste gedachten

Dit is mijn eerste instructable, dus ik heb misschien enkele praktische dingen gemist die ik had moeten opnemen. De AMS1117-3.3-regelkaart die ik heb gebruikt, bevat een kleine led die oplicht wanneer hij wordt ingeschakeld. Voor de deep sleep-module wilde ik niet dat deze led aan en onnodig stroom verbruikt. Dus ik soldeerde wat ik kon aan één kant van de led op het bord en gebruikte toen een mes om de traceerlijn door te snijden. Dit was makkelijker dan ik dacht en voorkomt dat de LED gaat branden. Ik heb niet kunnen bepalen wat het stroomverbruik is wanneer de ESP-01 in diepe slaap is, maar misschien heb ik binnen een paar weken een antwoord. Een collega van mij was bezig met de sensor (niet in diepe slaap) en ontdekte dat de batterijen leeg waren (5AA) in ongeveer een week. Ik denk dat deze opstelling een maand of zelfs meer zou moeten geven. We zullen zien.

De diepe slaapmodule kost ongeveer $ 8 CDN aan onderdelen (batterijen niet inbegrepen!) en de zoemermodule $ 5.

Aanbevolen: