Indholdsfortegnelse:

IoT -vandalarm: 5 trin (med billeder)
IoT -vandalarm: 5 trin (med billeder)

Video: IoT -vandalarm: 5 trin (med billeder)

Video: IoT -vandalarm: 5 trin (med billeder)
Video: Я не Понимаю Почему Такое Еще не Запатентовали? Таких Девайсов ты еще точно не видел! 2024, November
Anonim
IoT vandalarm
IoT vandalarm

Jeg har for nylig oplevet backup af køkkenafløb. Havde jeg ikke været hjemme dengang, ville det have forårsaget gulv- og gipsskader i min lejlighed. Heldigvis var jeg opmærksom på problemet og klar til at øse vandet ud med en spand. Dette fik mig til at tænke på at købe en oversvømmelsesalarm. Jeg opdagede masser af overkommelige produkter på Amazon, men dem med internetforbindelse havde en betydelig procentdel af negative anmeldelser, primært på grund af problemer med proprietære notifikationstjenester. Derfor besluttede jeg at lave min egen IoT -vandalarm, der ville bruge troværdige meddelelsesmidler efter eget valg.

Trin 1: Driftsprincip

Driftsprincip
Driftsprincip

Alarmen har en AVR ATtiny85 mikrokontroller som hjerne. Det tager spændingsaflæsninger fra batteriet og vandsensoren og sammenligner dem med en foruddefineret værdi for at registrere tilstedeværelsen af vand eller en lav batterispænding.

Vandsensoren er simpelthen to tråde placeret cirka 1 mm fra hinanden. En af ledningerne er tilsluttet 3,3 V, og den anden er forbundet til en følerstift på mikrokontrolleren, som også er forbundet til jord via en 0,5 MOhm modstand. Normalt er modstanden mellem sensortrådene meget høj (godt 10 MOhm), så følerstiften trækkes helt ned til 0 V. Men når der er vand mellem ledningerne, falder modstanden til mindre end 1 MOhm, og følerstiften ser en vis spænding (i mit tilfælde ca. 1,5 V). Når ATtiny85 registrerer denne spænding på følerstiften, aktiverer den en MOSFET for at tænde en summer og sender vække-signalet til ESP8266-modulet, der er ansvarlig for at sende advarsler (e-mail og push-meddelelser). Efter et minuts summende er alarmen frakoblet og kan kun nulstilles ved strømcykling.

Denne enhed løber ud af to alkaliske eller NiMH -celler. Mikrokontrolleren sover det meste af tiden for at spare på batterierne, vågner periodisk for at kontrollere vandsensoren samt batteriernes spænding. Hvis batterierne er ved at løbe tør, vågner mikrokontrolleren ESP8266 -modulet for at sende en advarsel om lavt batteriniveau. Efter advarslen deaktiveres alarmen for at forhindre overladning af batteriet.

Da ESP8266 -modulet er ansvarlig for at sende både advarsler om lavt batteriniveau og advarsler om oversvømmelse, kræver det et kontrolsignal fra ATiny85. På grund af det begrænsede antal tilgængelige pins genereres dette styresignal af den samme pin, der er ansvarlig for batteri -LED -indikation. Under normal drift (alarmen er tilkoblet og batterierne er opladet), blinker LED'en periodisk. Når tilstanden for lavt batteriniveau registreres, tænder LED'en for at give et højt signal til RX -stiften på ESP -modulet. Hvis der registreres vand, er batteriets LED slukket, mens ESP8266 er vågen.

Trin 2: Design og samling

Design og samling
Design og samling
Design og samling
Design og samling
Design og samling
Design og samling

Jeg designede kredsløbet til at blive bygget på et dobbeltsidet 4x6 cm protoboard med for det meste 0805 SMD-dele. De præsenterede skemaer er baseret på denne konstruktion, men det kan let tilpasses komponenter til gennemgående huller (tip: for at minimere plads, lodde gennemgående huller modstande lodret).

Følgende dele kræves:

- Modstande: 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- Ét N-kanal MOSFET på logisk niveau (f.eks. RFP30N06LE eller AO3400)- En rød og en gul LED (eller andre farver, hvis du vil).- To-leder skrueterminal x 3 (de er ikke absolut nødvendigt, men de gør det lettere at tilslutte og afbryde periferien under test)- En høj piezo-summer, der er god til 3,3 V- En ATtiny85 mikrokontroller (PDIP-version)- En 8-benet PDIP-stik til mikrokontrolleren- Et ESP-01-modul (det kan erstattes af et andet ESP8266-baseret modul, men der vil i så fald være mange ændringer i layoutet)-En 3,3 V DC-DC boost-konverter, der kan levere 200 mA (500 mA burst) strømme ved 2,2 V input. (Jeg anbefaler https://www.canton-electronics.com/power-converter … på grund af dens ultra-lave hvilestrøm)-En 3-pins hun-header- To 4-pin hun-headers eller en 2x4 header- 22 AWG solide ledninger til vandsensoren- 22 AWG strandet ledning (eller en anden type tynd udsat tråd for at skabe spor)

Jeg anbefaler modstandsværdierne anført ovenfor, men du kan erstatte de fleste af dem med lignende værdier. Afhængigt af typen af de lysdioder, du vil bruge, skal du muligvis justere de strømbegrænsende modstandsværdier for at få den ønskede lysstyrke. MOSFET kan enten være gennemgående hul eller SMT (SOT23). Kun orienteringen af 330 Ohm modstanden påvirkes af typen af MOSFET. En PTC -sikring (f.eks. Klassificeret til 1 A) anbefales, hvis du planlægger at bruge dette kredsløb med NiMH -batterier. Det er dog ikke nødvendigt med alkaliske batterier. Tip: De nødvendige dele til denne alarm kan købes billigt fra ebay eller aliexpress.

Derudover skal du bruge et brødbræt, flere 10k-modstande i gennemgående hul, flere han-han- og hun-hun-jumper ("dupont") ledninger og en USB-UART-adapter for at programmere ESP-01-modulet.

Vandsensoren kan laves på forskellige måder, men den enkleste er to 22 AWG -ledninger med udsatte ender (1 cm lange) med en afstand på cirka 1 mm fra hinanden. Målet er at have mindre end 5 MΩ modstand mellem sensorkontakterne, når der er vand.

Kredsløbet er designet til maksimal batteriøkonomi. Det trækker kun 40-60 µA i overvågningsordningen (med strøm-LED'en fjernet på ESP-01-modulet). Når alarmen er udløst, vil kredsløbet trække 300-500 mA (ved 2,4 V indgang) i et sekund eller mindre, og derefter vil strømmen falde til under 180 mA. Når ESP -modulet er færdigt med at sende meddelelser, falder det aktuelle forbrug til under 70 mA, indtil summeren slukker. Derefter deaktiveres alarmen, og det aktuelle forbrug er under 30 µA. Således vil et sæt AA -batterier være i stand til at drive kredsløbet i mange måneder (sandsynligvis over et år). Hvis du bruger en anden boost -omformer, f.eks. Med en hvilestrøm på 500 µA, skal batterierne skiftes meget oftere.

Monteringstip:

Brug en permanent markør til at mærke alle spor og komponenter på protoboardet for lettere lodning. Jeg anbefaler, at du fortsætter i følgende rækkefølge:

- SMT LED'er på oversiden og isolerede trådbroer

-MOSFET på oversiden (Bemærk: hvis du har en SOT-23 MOSFET, skal du placere den diagonalt som på billedet. Hvis du bruger en gennemgående MOSFET, skal du placere den vandret med porten i position I3.)

- oversiden gennem hulledele (Bemærk: summeren er ikke loddet og behøver ikke engang at blive monteret på printet)

- SMT -dele og spor på bagsiden (f.eks. individuelle tråde fra AWG22 -ledning)

Trin 3: Firmware

C -kode til ATtiny85

Main.c indeholder koden, der skal kompileres og uploades til mikrokontrolleren. Hvis du skal bruge et Arduino -kort som programmerer, kan du finde ledningsdiagrammet i denne vejledning. Du skal kun følge følgende afsnit (ignorer resten):

-Konfiguration af Arduino Uno som en internetudbyder (programmering i systemet)

- Tilslutning af ATtiny85 med Arduino Uno.

For at kompilere og uploade firmwaren skal du enten CrossPack (til Mac OS) eller AVR -værktøjskæde (til Windows). Følgende kommando skal udføres for at 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 at uploade firmwaren skal du køre 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" skal du sandsynligvis indsætte den serielle port, som din Arduino er tilsluttet (du kan finde den i Arduino IDE: Værktøjsport).

Koden indeholder flere funktioner. deep_sleep () får mikrokontrolleren til at gå i en tilstand med meget lav strøm i cirka 8 sekunder. read_volt () bruges til at måle batteri og sensorspændinger. Batterispændingen måles mod den interne spændingsreference (2,56 V plus eller minus et par procent), hvorimod sensorspændingen måles mod Vcc = 3,3 V. Aflæsninger sammenlignes med BATT_THRESHOLD og SENSOR_THRESHOLD defineret som henholdsvis 932 og 102, hvilket svarer til ~ 2,3 og 0,3 V. Du kan muligvis reducere batteriets tærskelværdi for forbedret batterilevetid, men det anbefales ikke (se Batterihensyn for detaljerede oplysninger).

active_alarm () underretter ESP -modulet om vandregistrering og lyder summeren. low_batt_notification () underretter ESP -modulet om, at batteriet er lavt og også lyder summer. Hvis du ikke ønsker at blive vækket midt om natten for at skifte batteri, skal du fjerne "| 1 <" i low_batt_notification ().

Arduino skitse til ESP-01

Jeg valgte at programmere ESP -modulet ved hjælp af Arduino HAL (følg linket for opsætningsinstruktioner). Derudover brugte jeg følgende to biblioteker:

ESP8266 Send e -mail af Górász Péter

ESP8266 Pushover af Arduino Hannover -teamet

Det første bibliotek opretter forbindelse til en SMTP -server og sender en advarsel til din e -mail -adresse. Opret bare en gmail -konto til din ESP, og tilføj legitimationsoplysninger til koden. Det andet bibliotek sender push -meddelelser via Pushover -tjenesten (meddelelser er gratis, men du skal betale én gang for at installere programmet på din telefon/tablet). Download begge biblioteker. Læg indholdet af Send e -mail -biblioteket i din skitsemappe (arduino opretter det, når du åbner arduino -skitsen for første gang). Installer Pushover -biblioteket via IDE (Skitse -> Inkluder bibliotek -> Tilføj. ZIP -bibliotek).

For at programmere ESP-01-modulet kan du følge følgende vejledning: https://www.allaboutcircuits.com/projects/breadbo… Du behøver ikke bekymre dig om at løse en række stifter som vist i vejledningen-brug bare kvinde-han-dupont ledninger til at forbinde modulets stifter til brødbrættet. Glem ikke, at boost-konverteren og USB-UART-adapteren skal dele jord (Bemærk: du kan muligvis bruge 3,3 V-output fra USB-UART-adapteren i stedet for boost-konverteren, men sandsynligvis vil den ikke være i stand til at levere nok strøm).

Trin 4: Batteriovervejelser

Firmware -koden er forudkonfigureret til at sende en advarsel om lavt batteriniveau og lukke ned ved ~ 2,3 V. Denne tærskel er baseret på den antagelse, at to NiMH -batterier bruges i serie. Det anbefales ikke at aflade nogen individuel NiMH -celle under 1 V. Forudsat at begge celler har samme kapacitet og udladningsegenskaber, vil de begge blive afbrudt ved ~ 1,15 V - godt inden for det sikre område. Imidlertid har NiMH -celler, der har været i brug i mange udladningscyklusser, en tendens til at variere i kapacitet. Op til 30% forskel i kapacitet kan tolereres, da det stadig ville resultere i det laveste spændingscelle afbrydepunkt omkring 1 V.

Selvom det er muligt at reducere tærskelværdien for lavt batteri i firmwaren, ville det fjerne sikkerhedsmargenen og kunne resultere i overladning og beskadigelse af batteriet, mens der kun må forventes en marginal stigning i batterilevetiden (en NiMH-celle er> 85% afladet ved 1,15 V).

En anden faktor, der skal tages i betragtning, er boost-omformerens evne til at levere mindst 3,0 V (2,5 V ifølge anekdotiske beviser) ved 300-500 mA spidsstrøm på lavt batteri. Den lave interne modstand i NiMH -batterier forårsager kun et ubetydeligt fald på 0,1 V ved spidsstrømme, så et par NiMH -celler afladet til 2,3 V (åbent kredsløb) vil kunne levere mindst 2,2 V til boostomformeren. Det er imidlertid mere kompliceret med alkaliske batterier. Med et par AA-batterier på 2,2-2,3 V (åbent kredsløb) må der forventes et spændingsfald på 0,2-0,4 V ved spidsstrømme. Selvom jeg har bekræftet, at kredsløbet fungerer med den anbefalede boost -omformer med så lidt som 1,8 V leveret ved spidsstrømme, får dette sandsynligvis udgangsspændingen til at falde et øjeblik under den værdi, Espressiff foreslår. Afgrænsningstærsklen på 2,3 V efterlader således en lille sikkerhedsmargen med alkaliske batterier (husk på, at en spændingsmåling udført af mikrokontrolleren kun er nøjagtig inden for plus eller minus et par procent). For at sikre, at ESP-modulet ikke svigter, når alkaliske batterier er lavt, anbefaler jeg at øge afbrydelsesspændingen til 2,4 V (#define BATT_THRESHOLD 973). Ved 1,2 V (åbent kredsløb) aflades en alkalisk celle omkring 70%, hvilket kun er 5-10 procentpoint lavere end udladningsgraden ved 1,15 V pr. Celle.

Både NiMH og alkaliske celler har fordele og ulemper ved denne anvendelse. Alkaliske batterier er sikrere (antændes ikke, hvis de er korte), og de har en meget lavere selvafladningshastighed. NiMH-batterier garanterer imidlertid pålidelig drift af ESP8266 på et lavere afskæringspunkt takket være deres lave interne modstand. Men i sidste ende kan hver type bruges med nogle forholdsregler, så det er bare et spørgsmål om personlig præference.

Trin 5: Juridisk ansvarsfraskrivelse

Dette kredsløb blev designet af en ikke-professionel hobbyist kun til hobbyapplikationer. Dette design deles i god tro, men uden nogen som helst garanti. Brug det og del med andre på egen risiko. Ved at genskabe kredsløbet accepterer du, at opfinderen ikke vil blive holdt ansvarlig for skader (herunder, men ikke begrænset til værdiforringelse af aktiver og personskade), der kan opstå direkte eller indirekte ved fejl eller normal brug af dette kredsløb. Hvis love i dit land ophæver eller forbyder denne ansvarsfraskrivelse, må du ikke bruge dette design. Hvis du deler dette design eller et modificeret kredsløb baseret på dette design, skal du kreditere den oprindelige opfinder ved at angive url til denne instruerbare.

Anbefalede: