Innholdsfortegnelse:

IoT -vannalarm: 5 trinn (med bilder)
IoT -vannalarm: 5 trinn (med bilder)

Video: IoT -vannalarm: 5 trinn (med bilder)

Video: IoT -vannalarm: 5 trinn (med bilder)
Video: Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! 2024, November
Anonim
IoT vannalarm
IoT vannalarm

Jeg har nylig opplevd backup av kjøkkenavløp. Hadde jeg ikke vært hjemme den gangen, ville det ha forårsaket skader på gulv og gips i leiligheten min. Heldigvis var jeg klar over problemet og klar til å øse vannet ut med en bøtte. Dette fikk meg til å tenke på å kjøpe en flomalarm. Jeg oppdaget mange rimelige produkter på Amazon, men de med internettilkobling hadde en betydelig prosentandel av negative anmeldelser, først og fremst på grunn av problemer med proprietære varslingstjenester. Derfor bestemte jeg meg for å lage min egen IoT -vannalarm som ville bruke pålitelige varslingsmidler etter eget valg.

Trinn 1: Driftsprinsipp

Driftsprinsipp
Driftsprinsipp

Alarmen har en AVR ATtiny85 mikrokontroller som hjerne. Det tar spenningsavlesninger fra batteriet og vannsensoren og sammenligner dem med forhåndsdefinert verdi for å oppdage tilstedeværelse av vann eller en tilstand med lavt batterinivå.

Vannsensoren er ganske enkelt to ledninger plassert omtrent 1 mm fra hverandre. En av ledningene er koblet til 3,3 V, og den andre er koblet til en følerstift på mikrokontrolleren, som også er koblet til jord gjennom en 0,5 MOhm motstand. Normalt er motstanden mellom sensortrådene veldig høy (godt over 10 MOhm), så følerstiften trekkes helt ned til 0 V. Men når det er vann mellom ledningene, synker motstanden til mindre enn 1 MOhm, og følerpinnen ser litt spenning (i mitt tilfelle ca 1,5 V). Når ATtiny85 oppdager denne spenningen på følerpinnen, aktiverer den en MOSFET for å slå på en summer og sender vekke-signalet til ESP8266-modulen som er ansvarlig for å sende varsler (e-post og push-varsler). Etter et minutts summende er alarmen frakoblet og kan bare tilbakestilles ved å slå av strømmen.

Denne enheten løper ut av to alkaliske eller NiMH -celler. Mikrokontrolleren sover mesteparten av tiden for å spare på batteriene, våkner periodisk for å sjekke vannsensoren samt batterispenningen. Hvis batteriene er svake, vekker mikrokontrolleren ESP8266 -modulen for å sende en advarsel om lavt batterinivå. Etter advarselen deaktiveres alarmen for å forhindre at batteriet overlades.

Siden ESP8266 -modulen er ansvarlig for å sende både advarsler om lavt batteri og varsler om flom, krever det et kontrollsignal fra ATiny85. På grunn av det begrensede antallet pinner som er tilgjengelige, genereres dette styresignalet av den samme pinnen som er ansvarlig for indikering av batteri -LED. Under normal drift (alarmen er tilkoblet og batteriene er ladet), blinker LED -en periodisk. Når tilstanden for lavt batterinivå oppdages, lyser LED -en for å gi høyt signal til RX -pinnen på ESP -modulen. Hvis det oppdages vann, vil batteri -LED -en være slukket mens ESP8266 er våken.

Trinn 2: Design og montering

Design og montering
Design og montering
Design og montering
Design og montering
Design og montering
Design og montering

Jeg designet kretsen for å bli bygget på et dobbeltsidig 4x6 cm protoboard med stort sett 0805 SMD-deler. Skjematikkene som presenteres er basert på denne konstruksjonen, men den kan enkelt tilpasses komponenter gjennom hull (tips: for å minimere plass, lodde gjennomgående hullmotstander vertikalt).

Følgende deler kreves:

- Motstander: 330 Ω x 1; 470 Ω x 1; 680 Ω x 1; 1 kΩ x 1; 10 kΩ x 3; 470 kΩ x 3; - En 10 µF keramisk kondensator- En NOS-kanal MOSFET på logisk nivå (f.eks. RFP30N06LE eller AO3400)- En rød og en gul LED (eller andre farger hvis du vil).- To-leder skrueterminal x 3 (de er ikke helt nødvendig, men de gjør det lettere å koble til og fra periferien under testing)- En høy piezo-summer som er god for 3,3 V- En ATtiny85 mikrokontroller (PDIP-versjon)- En 8-pinners PDIP-kontakt for mikrokontrolleren- En ESP-01-modul (den kan erstattes av en annen ESP8266-basert modul, men det vil bli mange endringer i oppsettet i så fall)-En 3,3 V DC-DC boost-omformer som kan levere 200 mA (500 mA burst) strøm ved 2,2 V input. (Jeg anbefaler https://www.canton-electronics.com/power-converter … på grunn av den ekstremt lave hvilestrømmen)-En 3-pins kvinnelig overskrift-To 4-pinners hunnhoder eller en 2x4 header-22 AWG solide ledninger for vannsensoren- 22 AWG strandet ledning (eller en annen type tynn eksponert ledning for å skape spor)

Jeg anbefaler motstandsverdiene som er oppført ovenfor, men du kan erstatte de fleste av dem med lignende verdier. Avhengig av hvilken type lysdioder du vil bruke, må du kanskje justere de nåværende begrensende motstandsverdiene for å få ønsket lysstyrke. MOSFET kan enten være gjennomgående hull eller SMT (SOT23). Bare orienteringen til 330 Ohm -motstanden påvirkes av typen MOSFET. En PTC -sikring (f.eks. Vurdert til 1 A) anbefales hvis du planlegger å bruke denne kretsen med NiMH -batterier. Det er imidlertid ikke nødvendig med alkaliske batterier. Tips: Delene som kreves for denne alarmen kan kjøpes billig fra ebay eller aliexpress.

I tillegg trenger du et brødbrett, flere gjennomgående 10k-motstander, flere mannlige og mannlige og jente ("dupont") ledninger og en USB-UART-adapter for å programmere ESP-01-modulen.

Vannsensoren kan lages på forskjellige måter, men den enkleste er to 22 AWG -ledninger med synlige ender (1 cm lange) med omtrent 1 mm mellomrom. Målet er å ha mindre enn 5 MΩ motstand mellom sensorkontaktene når det er vann.

Kretsen er designet for maksimal batteriøkonomi. Den trekker bare 40-60 µA i overvåkingsregimet (med strøm-LED fjernet på ESP-01-modulen). Når alarmen er utløst, vil kretsen trekke 300-500 mA (ved 2,4 V inngang) i et sekund eller mindre, og etter det vil strømmen falle under 180 mA. Når ESP -modulen er ferdig med å sende varsler, vil det nåværende forbruket falle til under 70 mA til summeren slår seg av. Da vil alarmen deaktivere seg selv, og strømforbruket vil være under 30 µA. Dermed vil et sett med AA -batterier kunne drive kretsen i mange måneder (sannsynligvis over et år). Hvis du bruker en annen boost -omformer, si med en hvilestrøm på 500 µA, må batteriene byttes mye oftere.

Monteringstips:

Bruk en permanent markør for å merke alle spor og komponenter på protoboardet for lettere lodding. Jeg anbefaler å fortsette i følgende rekkefølge:

- SMT LED på oversiden og isolerte wire broer

-oversiden MOSFET (merk: hvis du har en SOT-23 MOSFET, plasser den diagonalt som på bildet. Hvis du bruker en gjennomgående MOSFET, plasser den horisontalt med porten i posisjon I3.)

- Hulldeler på oversiden (merk: summeren er ikke loddet og trenger ikke engang å være montert på kretskortet)

- SMT -deler og spor på baksiden (f.eks. individuelle tråder fra AWG22 -ledning)

Trinn 3: Fastvare

C -kode for ATtiny85

Main.c inneholder koden som må kompileres og lastes opp til mikrokontrolleren. Hvis du skal bruke et Arduino -kort som programmerer, kan du finne koblingsskjemaet i denne opplæringen. Du trenger bare å følge følgende seksjoner (ignorer resten):

-Konfigurering av Arduino Uno som en ISP (programmering i systemet)

- Koble til ATtiny85 med Arduino Uno.

For å kompilere og laste opp fastvaren trenger du enten CrossPack (for Mac OS) eller AVR verktøykjede (for Windows). Følgende kommando må utføres for å kompilere koden:

avr -gcc -Os -mmcu = attiny85 -c main.c; avr -gcc -mmcu = attiny85 -o main.elf main.o; avr -objcopy -j.text -j.data -O ihex main.elf main.hex

For å laste opp fastvaren, kjør følgende:

avrdude -c arduino -p attiny85 -P /dev/cu.usbmodem1411 -b 19200 -e -U flash: w: main.hex

I stedet for "/dev/cu.usbmodem1411" må du sannsynligvis sette inn den serielle porten som Arduino er koblet til (du finner den i Arduino IDE: Tools Port).

Koden inneholder flere funksjoner. deep_sleep () får mikrokontrolleren til å gå inn i en tilstand med svært lav effekt i omtrent 8 sekunder. read_volt () brukes til å måle batteri og sensorspenninger. Batterispenningen måles mot den interne spenningsreferansen (2,56 V pluss eller minus noen få prosent) mens sensorspenningen måles mot Vcc = 3,3 V. Avlesninger sammenlignes med BATT_THRESHOLD og SENSOR_THRESHOLD definert som henholdsvis 932 og 102, som tilsvarer ~ 2,3 og 0,3 V. Du kan kanskje redusere batteriets terskelverdi for bedre batterilevetid, men det anbefales ikke (se Batterihensyn for detaljert informasjon).

active_alarm () varsler ESP -modulen om vanndeteksjon og gir en lydsignal. low_batt_notification () varsler ESP -modulen om at batteriet er lavt og gir også lydsignal. Hvis du ikke ønsker å bli vekket midt på natten for å bytte batteri, fjern "| 1 <" i low_batt_notification ().

Arduino skisse for ESP-01

Jeg valgte å programmere ESP -modulen ved hjelp av Arduino HAL (følg lenken for oppsettsinstruksjoner). I tillegg brukte jeg følgende to biblioteker:

ESP8266 Send e -post av Górász Péter

ESP8266 Pushover av Arduino Hannover -teamet

Det første biblioteket kobles til en SMTP -server og sender et varsel til e -postadressen din. Bare opprett en gmail -konto for ESP, og legg til legitimasjonen i koden. Det andre biblioteket sender push -varsler via Pushover -tjenesten (varsler er gratis, men du må betale én gang for å installere programmet på telefonen/nettbrettet). Last ned begge bibliotekene. Legg innholdet i Send e -postbiblioteket i skissemappen (arduino vil opprette det når du åpner arduino -skissen for første gang). Installer Pushover -biblioteket via IDE (Sketch -> Include Library -> Add. ZIP library).

For å programmere ESP-01-modulen kan du følge følgende opplæring: https://www.allaboutcircuits.com/projects/breadbo… Du trenger ikke å bry deg med å løse opp en rad pins som vist i guiden-bare bruk kvinnelig-mannlig dupont ledninger for å koble pinnene på modulen til brødbrettet. Ikke glem at boost-omformeren og USB-UART-adapteren må dele bakken (merk: du kan kanskje bruke 3,3 V-utgangen til USB-UART-adapteren i stedet for boost-omformeren, men mest sannsynlig vil den ikke kunne levere nok strøm).

Trinn 4: Batterihensyn

Firmware -koden som er levert, er forhåndskonfigurert til å sende en advarsel om lavt batterinivå og stenge ved ~ 2,3 V. Denne terskelen er basert på antagelsen om at to NiMH -batterier brukes i serie. Det anbefales ikke å utlade noen individuelle NiMH -celler under 1 V. Forutsatt at begge cellene har lik kapasitet og utladningsegenskaper, vil begge bli avskåret ved ~ 1,15 V - godt innenfor det sikre området. Imidlertid har NiMH -celler som har vært i bruk i mange utladningssykluser en tendens til å variere i kapasitet. Opptil 30% forskjell i kapasitet kan tolereres, da det fortsatt ville resultere i det laveste spenningscelleavbruddspunktet rundt 1 V.

Selv om det er mulig å redusere lavt batteriterskel i fastvaren, vil det fjerne sikkerhetsmarginen og kan føre til overladning og skade på batteriet, mens det bare kan forventes en marginell økning i batterilevetiden (en NiMH-celle er> 85% utladet ved 1,15 V).

En annen faktor som må tas i betraktning er boost-omformerens evne til å levere minst 3,0 V (2,5 V i henhold til anekdotiske bevis) ved 300-500 mA toppstrøm på svake batterier. Den lave interne motstanden til NiMH -batterier forårsaker bare et ubetydelig fall på 0,1 V ved toppstrømmer, så et par NiMH -celler utladet til 2,3 V (åpen krets) vil kunne gi minst 2,2 V til boost -omformeren. Det er imidlertid mer komplisert med alkaliske batterier. Med et par AA-batterier på 2,2-2,3 V (åpen krets) må det forventes et spenningsfall på 0,2-0,4 V ved toppstrømmer. Selv om jeg har bekreftet at kretsen fungerer med den anbefalte boost -omformeren med så lite som 1,8 V levert ved toppstrømmer, får dette sannsynligvis utgangsspenningen til å synke øyeblikkelig under verdien foreslått av Espressiff. Dermed etterlater grenseverdien for 2,3 V liten sikkerhetsmargin med alkaliske batterier (husk at en spenningsmåling utført av mikrokontrolleren bare er nøyaktig innen pluss eller minus noen få prosent). For å sikre at ESP-modulen ikke svikter når alkaliske batterier er svake, anbefaler jeg å øke spenningsspenningen til 2,4 V (#define BATT_THRESHOLD 973). Ved 1,2 V (åpen krets) er en alkalisk celle omtrent 70% utladet, som bare er 5-10 prosentpoeng lavere enn utladningsgraden ved 1,15 V per celle.

Både NiMH og alkaliske celler har fordeler og ulemper for denne applikasjonen. Alkaliske batterier er sikrere (ikke brann hvis de er korte), og de har en mye lavere selvutladningshastighet. Imidlertid garanterer NiMH-batterier pålitelig drift av ESP8266 på et lavere avskjæringspunkt takket være deres lave interne motstand. Men til syvende og sist kan hver type brukes med noen forhåndsregler, så det er bare et spørsmål om personlig preferanse.

Trinn 5: Juridisk ansvarsfraskrivelse

Denne kretsen ble designet av en ikke-profesjonell hobbyist bare for hobbyapplikasjoner. Dette designet deles i god tro, men uten noen som helst garanti. Bruk den og del med andre på egen risiko. Ved å gjenskape kretsen samtykker du i at oppfinneren ikke vil bli holdt ansvarlig for skader (inkludert, men ikke begrenset til verdifall på eiendeler og personskade) som kan oppstå direkte eller indirekte gjennom funksjonsfeil eller normal bruk av denne kretsen. Hvis lovene i ditt land opphever eller forbyr denne ansvarsfraskrivelsen, kan du ikke bruke denne designen. Hvis du deler dette designet eller en modifisert krets basert på dette designet, må du kreditere den opprinnelige oppfinneren ved å angi nettadressen til denne instruerbare.

Anbefalt: