Innholdsfortegnelse:

Batteridrevet dørsensor med integrering av hjemmeautomatisering, WiFi og ESP-NÅ: 5 trinn (med bilder)
Batteridrevet dørsensor med integrering av hjemmeautomatisering, WiFi og ESP-NÅ: 5 trinn (med bilder)

Video: Batteridrevet dørsensor med integrering av hjemmeautomatisering, WiFi og ESP-NÅ: 5 trinn (med bilder)

Video: Batteridrevet dørsensor med integrering av hjemmeautomatisering, WiFi og ESP-NÅ: 5 trinn (med bilder)
Video: G4S SMARTalarm - sådan skifter du batteri i en vindue-/dørsensor 2024, November
Anonim
Image
Image

I denne instruksen viser jeg deg hvordan jeg lagde en batteridrevet dørsensor med integrering av hjemmeautomatisering. Jeg har sett noen andre fine sensorer og alarmsystemer, men jeg ville lage en selv.

Mine mål:

  • En sensor som oppdager og rapporterer at en dør åpnes raskt (<5 sekunder)
  • En sensor som oppdager lukking av døren
  • En sensor som er batteridrevet og går i noen måneder på et batteri

Maskinvaren og programvaren er inspirert av

  • Trigbrettet til Kevin Darrah (TPL5111 og TPS73733).
  • Denne videoen

Jeg lagde en sensor for ytterdøren og bakdøren. Den eneste forskjellen er led -posisjonen og den eksterne strømbryteren (på bakdørsensoren).

Jeg gjorde flere forbedringer under utviklingen av maskinvare og programvare, det kan sees på bildene.

Rekvisita

Jeg kjøpte de elektroniske komponentene fra Aliexpress, hoveddelene:

  • LiPo batteri
  • TPS73733 LDO
  • TPL5111
  • Reed -bryter
  • P-kanal mosfet: IRLML6401TRPBF
  • Magnet
  • PCB -adapterplate for SMD -komponenter og en annen.

Trinn 1: Maskinvare - krets

Maskinvare - krets
Maskinvare - krets
Maskinvare - krets
Maskinvare - krets
Maskinvare - krets
Maskinvare - krets

Se de vedlagte ordningene for kretsen. Jeg loddet SMD -delene på en adapter -PCB -plate og loddet alle komponentene til et dobbeltsidig perf -bord. Jeg koblet til ESP-01 via kvinnelige overskrifter, så jeg kunne fjerne den for å programmere den via adapteren som ble vist i trinn 3 i denne instruksjonsboken.

Kretsen fungerer som følger:

  • Når døren åpnes, mottar TPL5111 et skudd på DELAY/M_DRV-pinnen og aktiverer TPS73733 LDO som driver ESP-01. For denne operasjonen må EN/ONE_SHOT trekkes lavt, se databladet til TPL5111.
  • Etter at programmet har kjørt (se trinn Programvare), sender ESP-01 et Ferdig signal til TPL5111 som deretter deaktiverer TPS73733, noe som resulterer i en meget lav strømtilstand for TPL5111 og TPS73733.

Jeg bruker sivbrytere med både NO og NC tilkoblinger. Jeg koblet til NC -ledningen, siden sivbryteren må lukke kretsen når magneten er fjernet (døren åpen) og åpne når magneten er i nærheten (døren lukket).

For bakdørsensoren la jeg til noen kondensatorer og motstander da jeg oppdaget noen ustabilitet, men ustabiliteten ble forårsaket av programvaren (esp_now_init) som jeg oppdaget senere.

Trinn 2: Maskinvare - vedlegg

Maskinvare - vedlegg
Maskinvare - vedlegg
Maskinvare - vedlegg
Maskinvare - vedlegg
Maskinvare - vedlegg
Maskinvare - vedlegg

Jeg designet skapet i Autodesk Fusion360, inspirert av denne videoen av 'fyren med den sveitsiske aksenten'.

STL -filene i de tre delene:

  • Eske
  • Lokk
  • Magnetholder

er publisert på min Thingiverse -side.

Trinn 3: Programvare

Programvare
Programvare

Programmet er i min Github.

Flyten av programmet er vist på bildet. Se min andre Instructable for forklaring på hvordan jeg bruker ESP-NÅ.

Når modulen er slått på, prøver den først å sende "OPEN" -meldingen via ESP-NÅ. Hvis dette ikke lykkes, går det over til en WiFi- og MQTT -tilkobling.

Jeg fant ut at meldingen "STENGT" ikke ble sendt med hell via ESP-NÅ, i hvert fall i oppsettet mitt, så jeg fjernet dette fra programmet og brukte bare WiFi og MQTT.

I løpet av tiden døren åpnes og modulen venter på at døren skal lukke, bruker den denne tiden til å koble til WiFi og MQTT, så når døren er lukket, trenger den bare å sende den målte spenningen og en STENGT melding og deretter den sovner direkte.

Programmet sjekker om den lukkede meldingen mottas av mottakeren via en lytting til en MQTT -melding om det riktige emnet.

Trinn 4: Hjemmeautomatisering og telegram

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

Dørsensorene mine kommuniserer med Openhab Home Automation på min Raspberry Pi Zero.

Hovedapplikasjoner:

  • Les tilstanden på døren: ÅPEN eller STENGT.
  • Alarm meg via telegram hvis en dør åpnes (hvis alarmen er slått på eller monitorfunksjonen er slått på).
  • Les forrige gang en dør ble åpnet eller lukket.
  • Tell antall åpninger en dørsensor kan håndtere før batteriet går tomt.

For eksempel, hvis vi er på ferie og naboen kommer inn for å vanne plantene, får jeg en melding. Se videoen i introen.

Mine Openhab -elementer, regler og nettstedskartfiler er i min Github. I disse filene kan du også se dørsensoren til skuret, som bruker en vanlig kablet sivbryter og en liten kontakt (ende) bryter fra en 3D -skriver i låseåpningen (se bildene).

Hvordan du bruker Telegram -handlingen i Openhab er beskrevet her.

Trinn 5: Forbedringer og ytterligere forbedringer

Forbedringer og ytterligere forbedringer
Forbedringer og ytterligere forbedringer
Forbedringer og ytterligere forbedringer
Forbedringer og ytterligere forbedringer

I løpet av de siste månedene har jeg gjort følgende forbedring.

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

Om sommeren lar vi døren stå åpen i noen timer når vi er hjemme. ESP-01 som kjører med en WiFi-tilkobling vil da unødvendig tømme batteriet. Derfor inkluderte jeg en av/på -bryter for å kunne slå av modulen i disse situasjonene.

Imidlertid resulterte dette noen ganger i en permanent slått av modul (da jeg glemte å slå den på) og et tømt batteri etter noen ettermiddager med en åpnet dør og en modul som kjører (Når jeg glemte å slå den av).

Derfor ønsket jeg å kunne slå av modulen via programvaren etter at modulen var på for en forhåndsdefinert tid (1 minutt).

Men der ‘DONE’ -pulsen til ESP-01 slo av TPL5111 da døren ble lukket, fant jeg ut at TPL5111 ikke ble slått av med en ‘DONE’ -puls mens DELAY/M_DRV-pinnen var HØY. Dette HIGH -signalet på DELAY/M_DRV -pinnen ble forårsaket av den åpne døren og NC -kontakten til sivbryteren koblet til batterispenningen.

Så, signalet til DELAY/M_DRV -pinnen skal ikke være kontinuerlig HØY, men bør være pulset. I databladet TPL5111 finner du at det skal være en puls på> 20 ms. Jeg lagde dette selvskiftende signalet via en P-kanal mosfet, en kondensator og en 10K og 300K motstand, se den medfølgende ordningen.

Det fungerer som følger:

  • Hvis NC -kontakten til sivbryteren er lukket, er porten LAV og Mosfet er slått PÅ, noe som resulterer i et HØYT signal på DELAY/M_DRV pin som aktiverer modulen.
  • Kondensatoren lades raskt, noe som resulterer i en stigende spenning på porten.
  • Etter omtrent 20 ms er spenningen på porten 97% av batterispenningen (300K/(300K+10K) som er HØY og Mosfet er slått av, noe som resulterer i et LAVT signal på DELAY/M_DRV -pinnen.
  • Når DELAY/M_DRV-pinnen er LAV, resulterer DONE-signalet i ESP-01 i en avstengning av modulen.

Dette er implementert i programvaren; en while-loop kontrollerer ikke bare om døren fortsatt er åpnet, men sjekker også om modulen ikke er slått på for lenge. Hvis den slås på for lenge, publiserer den en NULL -verdi (udefinert tilstand for døren). I dette tilfellet vet jeg ikke om døren er åpnet eller lukket, og jeg når ikke alle målene som er nevnt i introen, men batterilevetiden er viktigere og de fleste ganger åpner vi døren igjen senere samme dag, noe som resulterer i en bekreftet lukket tilstand av døren.

Det er viktig å bruke en P-kanal Mosfet som er egnet for spenningsområdet som brukes her. Mosfet må være helt på med en VGS på omtrent - 3,8V og helt av på en VGS på omtrent -0,2 V. Jeg prøvde flere Mosfets og fant ut at en IRLML6401TRPBF fungerer fint for dette målet i kombinasjon med 10K og 300K motstander. En kondensator på 1 uF fungerer fint for å få en pulslengde på ca 20 ms. En større kondensator resulterer i en lengre puls, noe som ikke er nødvendig siden TPL5111 ble aktivert. Jeg brukte DSO150 -oscilloskopet mitt til å kontrollere spenningene og pulslengden.

Planlagt forbedring: OTA -oppdatering

Jeg planlegger å innlemme en OTA -oppdatering via følgende prosedyre, som allerede delvis er inkludert i den nåværende programvaren

  • Via Openhab of NodeRed publiserer jeg en beholdt "oppdaterings" melding og et "oppdateringsemne".
  • Hvis modulen er slått på og koblet til MQTT -serveren og abonnerer på "oppdateringsemnet", mottar den oppdateringsmeldingen.
  • Oppdateringsmeldingen forhindrer at modulen slås av og starter
  • Via nettstedet til HTTPUpdateServer kan du oppdatere programvaren.
  • Via Openhab of NodeRed publiserer jeg en beholdt "tom" melding og et "oppdateringsemne".

Planlagt forbedring: maskinvarestenging etter en forhåndsdefinert tid

I den nåværende ordningen bruker jeg en 200K motstand mellom DELAY/M_DRV og GND på TPL5111. Dette slår på modulen i mer enn 2 timer (se 7.5.3. I databladet TPL5111). Imidlertid vil jeg ikke at modulen skal være slått på så lenge, fordi batteriet da er tømt. Hvis programvareløsningen (se ovenfor) ikke slår av modulen, eller oppdateringsmeldingen utilsiktet setter modulen i oppdateringsmodus, forblir modulen slått på lenge.

Derfor er det bedre å bruke en mindre motstand mellom DELAY/M_DRV og GND på TPL5111, så modulen slås av etter kort tid, for eksempel en 50K motstand som resulterer i en på -tid på 7 minutter.

Anbefalt: