Indholdsfortegnelse:

Batteridrevet dørføler med integrering af hjemmeautomatisering, WiFi og ESP-NU: 5 trin (med billeder)
Batteridrevet dørføler med integrering af hjemmeautomatisering, WiFi og ESP-NU: 5 trin (med billeder)

Video: Batteridrevet dørføler med integrering af hjemmeautomatisering, WiFi og ESP-NU: 5 trin (med billeder)

Video: Batteridrevet dørføler med integrering af hjemmeautomatisering, WiFi og ESP-NU: 5 trin (med billeder)
Video: Batteridrevet vinkelsliper | AGC 18 - Festool (NO) 2024, Juli
Anonim
Image
Image

I denne instruktive viser jeg dig, hvordan jeg lavede en batteridrevet dørføler med integrering af hjemmeautomatisering. Jeg har set nogle andre flotte sensorer og alarmsystemer, men jeg ville selv lave en.

Mine mål:

  • En sensor, der registrerer og rapporterer, at en dør åbner hurtigt (<5 sekunder)
  • En sensor, der registrerer lukning af døren
  • En sensor, der er batteridrevet og kører i et par måneder på et batteri

Hardware og software er inspireret af

  • Trigpladen til Kevin Darrah (TPL5111 og TPS73733).
  • Denne video

Jeg lavede en sensor til min fordør og min bagdør. Den eneste forskel er led -positionen og den eksterne afbryder (på bagdørsensor).

Jeg lavede flere forbedringer under udviklingen inden for hardware og software, det kan ses på billederne.

Forbrugsvarer

Jeg købte de elektroniske komponenter fra Aliexpress, hoveddelene:

  • LiPo batteri
  • TPS73733 LDO
  • TPL5111
  • Reed switch
  • P-kanal mosfet: IRLML6401TRPBF
  • Magnet
  • PCB -adapterplade til SMD -komponenter og en anden.

Trin 1: Hardware - kredsløb

Hardware - kredsløb
Hardware - kredsløb
Hardware - kredsløb
Hardware - kredsløb
Hardware - kredsløb
Hardware - kredsløb

Se de vedhæftede skemaer for kredsløbet. Jeg lodde SMD -delene på en adapter -printplade og lodde alle komponenter til et dobbeltsidet perf -bord. Jeg tilsluttede ESP-01 via kvindelige overskrifter, så jeg kunne fjerne den for at programmere den via adapteren vist i trin 3 i denne instruktionsbog.

Kredsløbet fungerer som følger:

  • Når døren åbnes, modtager TPL5111 et skud på DELAY/M_DRV-stiften og aktiverer TPS73733 LDO, der driver ESP-01. For denne operation skal EN/ONE_SHOT trækkes lavt, se databladet for TPL5111.
  • Efter at programmet er kørt (se trin Software), sender ESP-01 et Udført signal til TPL5111, som derefter deaktiverer TPS73733, hvilket resulterer i en meget lav strømtilstand for TPL5111 og TPS73733.

Jeg bruger reed switches med både NO og NC forbindelser. Jeg tilsluttede NC -ledningen, da sivkontakten skal lukke kredsløbet, når magneten fjernes (døren er åben) og åbne, når magneten er i nærheden (døren lukket).

Til bagdørsensoren tilføjede jeg nogle kondensatorer og modstande, da jeg opdagede nogle ustabilitet, men ustabiliteten blev forårsaget af softwaren (esp_now_init), som jeg opdagede senere.

Trin 2: Hardware - kabinet

Hardware - kabinet
Hardware - kabinet
Hardware - kabinet
Hardware - kabinet
Hardware - kabinet
Hardware - kabinet

Jeg har designet kabinettet i Autodesk Fusion360, inspireret af denne video af 'fyren med den schweiziske accent'.

STL -filerne i de tre dele:

  • Boks
  • Låg
  • Magnetholder

er offentliggjort på min Thingiverse -side.

Trin 3: Software

Software
Software

Programmet er i min Github.

Flowet af programmet er vist på billedet. Se min anden Instructable for forklaring på, hvordan jeg bruger ESP-NU.

Når modulet er tændt, forsøger det først at sende 'ÅBEN' beskeden via ESP-NU. Hvis dette ikke lykkes, skifter det til en WiFi- og MQTT -forbindelse.

Jeg fandt ud af, at meddelelsen 'LUKKET' i hvert fald i mit setup ikke blev sendt med succes via ESP-NU, så jeg fjernede dette fra programmet og brugte kun WiFi og MQTT.

I løbet af den tid, døren åbnes, og modulet venter på, at døren skal lukke, bruger den denne tid til at oprette forbindelse til WiFi og MQTT, så når døren er lukket, skal den kun sende den målte spænding og en LUKKET besked og derefter det går direkte i dvale.

Programmet kontrollerer, om den lukkede besked modtages af modtageren via en lytning til en MQTT -besked om det rigtige emne.

Trin 4: Hjemmeautomatisering og telegram

Hjemmeautomatisering og telegram
Hjemmeautomatisering og telegram
Hjemmeautomatisering og telegram
Hjemmeautomatisering og telegram
Hjemmeautomatisering og telegram
Hjemmeautomatisering og telegram

Mine dørsensorer kommunikerer med min Openhab Home Automation på min Raspberry Pi Zero.

Vigtigste applikationer:

  • Læs dørens tilstand: ÅBEN eller LUKKET.
  • Alarmer mig via telegram, hvis en dør åbnes (hvis alarmen er tændt eller skærmfunktionen er aktiveret).
  • Læs sidste gang en dør blev åbnet eller lukket.
  • Tæl antallet af åbninger, en dørsensor kan håndtere, før batteriet løber tør.

For eksempel, hvis vi er på ferie, og naboen kommer ind for at vande planterne, får jeg en besked. Se videoen i introduktionen.

Mine Openhab -elementer, regler og sitemapfiler er i min Github. I disse filer kan du også se min dørføler i skuret, som bruger en almindelig kablet sivkontakt og en lille kontakt (ende) kontakt fra en 3D -printer i låseåbningen (se billederne).

Sådan bruges Telegram -handlingen i Openhab er beskrevet her.

Trin 5: Forbedringer og yderligere forbedringer

Forbedringer og yderligere forbedringer
Forbedringer og yderligere forbedringer
Forbedringer og yderligere forbedringer
Forbedringer og yderligere forbedringer

I de sidste måneder har jeg foretaget følgende forbedring.

Håndter lange døråbninger via et selvskiftende pulssignal

Om sommeren lader vi bagdøren være åben i et par timer, når vi er hjemme. Den kørende ESP-01 med en WiFi-forbindelse vil derefter unødigt tømme batteriet. Derfor inkluderede jeg en tænd/sluk -kontakt for at kunne slukke modulet i disse situationer.

Dette resulterede dog nogle gange i et permanent slukket modul (da jeg glemte at tænde det) og et afladet batteri efter et par eftermiddage af en åbnet dør og et kørende modul (Da jeg glemte at slukke det).

Derfor ville jeg være i stand til at slukke modulet via softwaren, efter at modulet var tændt i en foruddefineret tid (1 minut).

Hvor 'DONE'-pulsen på ESP-01 slukkede TPL5111, når døren blev lukket, fandt jeg imidlertid ud af, at TPL5111 ikke blev slukket med en' DONE '-puls, mens DELAY/M_DRV-stiften var HØJ. Dette HIGH -signal på DELAY/M_DRV -stiften blev forårsaget af den åbnede dør og NC -kontakten på reedkontakten forbundet til batterispændingen.

Så signalet til DELAY/M_DRV pin skal ikke være kontinuerligt HIGH, men skal være pulseret. I databladet TPL5111 kan du finde ud af, at det skal være en puls på> 20 ms. Jeg lavede dette selvskiftende signal via en P-kanal mosfet, en kondensator og en 10K og 300K modstand, se det medfølgende skema.

Det fungerer som følger:

  • Hvis reedkontaktens NC -kontakt lukkes, er porten LAV og Mosfet tændt, hvilket resulterer i et HØJT signal på DELAY/M_DRV pin, som aktiverer modulet.
  • Kondensatoren oplades hurtigt, hvilket resulterer i en stigende spænding på porten.
  • Efter cirka 20 ms er spændingen på porten 97% af batterispændingen (300K/(300K+10K), som er HØJ, og Mosfet er slukket, hvilket resulterer i et LOW -signal på DELAY/M_DRV -stiften.
  • Når DELAY/M_DRV pin er LOW, resulterer DONE-signalet i ESP-01 i en lukning af modulet.

Dette er implementeret i softwaren; en while-loop kontrollerer ikke kun, om døren stadig er åbnet, men også om modulet ikke er tændt for længe. Hvis den er tændt for længe, offentliggør den en NULL -værdi (dørens udefinerede tilstand). I dette tilfælde ved jeg ikke, om døren åbnes eller lukkes, og jeg når ikke alle de mål, der er nævnt i introduktionen, men batterilevetiden er vigtigere, og de fleste gange åbner vi døren igen senere på dagen, hvilket resulterer i en bekræftet lukket tilstand af døren.

Det er vigtigt at bruge en P-kanal Mosfet, der er egnet til det spændingsområde, der bruges her. Mosfet skal være helt tændt ved en VGS på omkring - 3,8V og helt slukket ved en VGS på omkring -0,2 V. Jeg prøvede flere Mosfets og fandt ud af, at en IRLML6401TRPBF fungerer fint til dette mål i kombination med 10K og 300K modstande. En kondensator på 1 uF fungerer fint for at få en pulslængde på cirka 20 ms. En større kondensator resulterer i en længere puls, hvilket ikke er nødvendigt, siden TPL5111 blev aktiveret. Jeg brugte mit DSO150 -oscilloskop til at kontrollere spændinger og pulslængde.

Planlagt forbedring: OTA -opdatering

Jeg planlægger at inkorporere en OTA -opdatering via følgende procedure, som allerede delvist er inkluderet i den aktuelle software

  • Via Openhab of NodeRed offentliggør jeg en bevaret 'opdaterings' -besked og et' opdateringsemne '.
  • Hvis modulet er tændt og forbundet til MQTT -serveren og abonnerer på 'opdateringsemnet', modtager det opdateringsmeddelelsen.
  • Opdateringsmeddelelsen forhindrer modulet i at slukke og starter
  • Via webstedet for HTTPUpdateServer kan du opdatere softwaren.
  • Via Openhab of NodeRed offentliggør jeg en beholdt 'tom' besked og et 'opdateringsemne'.

Planlagt forbedring: hardware -lukning efter en foruddefineret tid

I den nuværende ordning bruger jeg en 200K modstand mellem DELAY/M_DRV og GND i TPL5111. Dette tænder modulet i mere end 2 timer (se 7.5.3. I TPL5111 -databladet). Jeg vil dog ikke have modulet tændt så længe, fordi batteriet derefter er afladet. Hvis softwareløsningen (se ovenfor) ikke slukker modulet, eller opdateringsmeddelelsen utilsigtet sætter modulet i opdateringstilstand, forbliver modulet tændt i lang tid.

Derfor er det bedre at bruge en mindre modstand mellem DELAY/M_DRV og GND i TPL5111, så modulet slukkes efter kort tid, f.eks. En 50K modstand, der resulterer i en on -time på 7 minutter.

Anbefalede: