Innehållsförteckning:

IoT -vattenlarm: 5 steg (med bilder)
IoT -vattenlarm: 5 steg (med bilder)

Video: IoT -vattenlarm: 5 steg (med bilder)

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

Jag har nyligen upplevt backup av köksavlopp. Hade jag inte varit hemma då hade det orsakat golv- och gipsskador i min lägenhet. Lyckligtvis var jag medveten om problemet och redo att skopa ut vattnet med en hink. Detta fick mig att tänka på att köpa ett översvämningslarm. Jag upptäckte massor av prisvärda produkter på Amazon, men de med internetanslutning hade en betydande andel negativa recensioner, främst på grund av problem med proprietära aviseringstjänster. Därför bestämde jag mig för att skapa ett eget IoT -vattenlarm som skulle använda pålitliga meddelandemedel efter eget val.

Steg 1: Princip för drift

Driftsprincip
Driftsprincip

Larmet har en AVR ATtiny85 mikrokontroller som hjärna. Det tar spänningsavläsningar från batteriet och vattensensorn och jämför dem med fördefinierat värde för att detektera närvaron av vatten eller ett lågt batterinivå.

Vattensensorn är helt enkelt två trådar placerade ungefär 1 mm från varandra. En av ledningarna är ansluten till 3,3 V, och den andra är ansluten till en avkänningsstift på mikrokontrollern, som också är ansluten till jord via ett 0,5 MOhm motstånd. Normalt är motståndet mellan sensortrådarna mycket högt (väl över 10 MOhm), så avkänningstappen dras hela vägen ner till 0 V. Men när det finns vatten mellan trådarna sjunker motståndet till mindre än 1 MOhm, och avkänningsnålen ser en viss spänning (i mitt fall ca 1,5 V). När ATtiny85 detekterar denna spänning på avkänningsnålen aktiverar den en MOSFET för att slå på en summer och skickar väckningssignalen till ESP8266-modulen som är ansvarig för att skicka varningar (e-post och push-meddelanden). Efter en minuts surrning avaktiveras larmet och kan endast återställas med strömcykel.

Denna enhet körs från två alkaliska eller NiMH -celler. Mikrokontrollern sover för det mesta för att spara på batterierna, vaknar intermittent för att kontrollera vattensensorn samt batterispänningen. Om batterierna är svaga väcker mikrokontrollern ESP8266 -modulen för att skicka en varning om låg batterinivå. Efter varningen avaktiveras larmet för att förhindra överladdning av batteriet.

Eftersom ESP8266 -modulen är ansvarig för att skicka både varningar om låg batterinivå och varningar om översvämning, kräver den en styrsignal från ATiny85. På grund av det begränsade antalet tillgängliga stift genereras denna styrsignal av samma stift som ansvarar för indikering av batteriets LED. Under normal drift (larmet är aktiverat och batterierna laddade) blinkar lysdioden med jämna mellanrum. När tillståndet för lågt batteri upptäcks tänds lysdioden för att ge hög signal till RX -stiftet på ESP -modulen. Om vatten detekteras kommer batterilampan att vara släckt medan ESP8266 är vaken.

Steg 2: Design och montering

Design och montering
Design och montering
Design och montering
Design och montering
Design och montering
Design och montering

Jag konstruerade kretsen för att byggas på ett dubbelsidigt 4x6 cm protoboard med mestadels 0805 SMD-delar. Schemat som presenteras är baserat på denna konstruktion, men det kan enkelt anpassas för genomgående hålskomponenter (tips: för att minimera utrymme, lödning genomgående hålmotstånd vertikalt).

Följande delar krävs:

- Motstånd: 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 logisk nivå N-kanal MOSFET (t.ex. RFP30N06LE eller AO3400)- En röd och en gul lysdiod (eller andra färger om du vill).- Tvåtrådiga skruvkontakter x 3 (de är inte absolut nödvändigt, men de gör det lättare att ansluta och koppla bort periferin under testning)- En hög piezo-summer som är bra för 3,3 V- En ATtiny85-mikrokontroller (PDIP-version)- En 8-polig PDIP-kontakt för mikrokontrollern- En ESP-01-modul (den kan ersättas av en annan ESP8266-baserad modul, men det kommer att bli många ändringar i layouten i så fall)-En 3,3 V DC-DC boost-omvandlare som kan leverera 200 mA (500 mA burst) strömmar vid 2,2 V inmatning. (Jag rekommenderar https://www.canton-electronics.com/power-converter … på grund av dess extremt låga viloläge)-En 3-stifts honahuvud- Två 4-stifts honahuvuden eller en 2x4-header- 22 AWG fasta trådar för vattensensorn- 22 AWG-strängad tråd (eller annan typ av tunn exponerad tråd för att skapa spår)

Jag rekommenderar motståndsvärdena som anges ovan, men du kan ersätta de flesta av dem med liknande värden. Beroende på vilken typ av lysdioder du vill använda kan du behöva justera de strömbegränsande motståndsvärdena för att få önskad ljusstyrka. MOSFET kan vara antingen genomgående hål eller SMT (SOT23). Endast orienteringen av 330 Ohm -motståndet påverkas av typen av MOSFET. En PTC -säkring (t.ex. klassad för 1 A) rekommenderas om du planerar att använda denna krets med NiMH -batterier. Det behövs dock inte med alkaliska batterier. Tips: de delar som krävs för detta larm kan köpas billigt från ebay eller aliexpress.

Dessutom behöver du en brödbräda, flera genomgående 10k-motstånd, flera manliga-han- och hona-hanstrumpeltrådar ("dupont") och en USB-UART-adapter för att programmera ESP-01-modulen.

Vattensensorn kan tillverkas på olika sätt, men den enklaste är två 22 AWG -trådar med synliga ändar (1 cm långa) med ungefär 1 mm mellanrum. Målet är att ha mindre än 5 MΩ motstånd mellan sensorkontakterna när vatten är närvarande.

Kretsen är utformad för maximal batteriekonomi. Den drar bara 40-60 µA i övervakningssystemet (med strömlampan borttagen på ESP-01-modulen). När larmet väl utlöses drar kretsen 300-500 mA (vid 2,4 V ingång) i en sekund eller mindre, och efter det kommer strömmen att sjunka under 180 mA. När ESP -modulen har skickat meddelanden kommer den nuvarande förbrukningen att sjunka till under 70 mA tills summern stängs av. Då avaktiveras larmet och strömförbrukningen är under 30 µA. Således kommer en uppsättning AA -batterier att kunna driva kretsen i många månader (troligen över ett år). Om du använder en annan boost -omvandlare, säg med en vilande ström på 500 µA, måste batterierna bytas mycket oftare.

Monteringstips:

Använd en permanent markör för att märka alla spår och komponenter på protoboardet för enklare lödning. Jag rekommenderar att du fortsätter i följande ordning:

- SMT -lysdioder på ovansidan och isolerade trådbroar

-MOSFET på ovansidan (notera: om du har en SOT-23 MOSFET, placera den diagonalt som på bilden. Om du använder en genomgående MOSFET, placera den horisontellt med grindstiftet i läge I3.)

- ovansida genom hål (notera: summern är inte lödd och behöver inte ens monteras på kretskortet)

- SMT -delar och spår på baksidan (t.ex. enskilda trådar från AWG22 -tråd)

Steg 3: Firmware

C -kod för ATtiny85

Main.c innehåller koden som måste sammanställas och laddas upp till mikrokontrollern. Om du ska använda ett Arduino -kort som programmerare kan du hitta kopplingsschemat i denna handledning. Du behöver bara följa följande avsnitt (ignorera resten):

-Konfigurera Arduino Uno som en ISP (programmering i systemet)

- Anslutning av ATtiny85 med Arduino Uno.

För att kompilera och ladda upp firmware behöver du antingen CrossPack (för Mac OS) eller AVR -verktygskedja (för Windows). Följande kommando måste köras för att kompilera 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

Kör följande för att ladda upp firmware:

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

I stället för "/dev/cu.usbmodem1411" kommer du troligen att behöva sätta in den seriella porten som din Arduino är ansluten till (du hittar den i Arduino IDE: Tools Port).

Koden innehåller flera funktioner. deep_sleep () får mikrokontrollern att gå in i ett mycket lågt energiläge i cirka 8 sekunder. read_volt () används för att mäta batteri och sensorspänningar. Batterispänningen mäts mot den interna spänningsreferensen (2,56 V plus eller minus några procent) medan sensorspänningen mäts mot Vcc = 3,3 V. Avläsningar jämförs med BATT_THRESHOLD och SENSOR_THRESHOLD definierade som 932 respektive 102, vilket motsvarar ~ 2,3 och 0,3 V. Du kanske kan minska batteriets tröskelvärde för förbättrad batterilivslängd, men det rekommenderas inte (se Batterihänsyn för detaljerad information).

active_alarm () meddelar ESP -modulen om vattendetektering och låter summern. low_batt_notification () meddelar ESP -modulen att batteriet är lågt och låter även summer. Om du inte vill väckas mitt i natten för att byta batteri tar du bort "| 1 <" i low_batt_notification ().

Arduino-skiss för ESP-01

Jag valde att programmera ESP -modulen med Arduino HAL (följ länken för installationsanvisningar). Dessutom använde jag följande två bibliotek:

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

ESP8266 Pushover av Arduino Hannover -teamet

Det första biblioteket ansluter till en SMTP -server och skickar en varning till din e -postadress. Skapa bara ett gmail -konto för ditt ESP och lägg till referenserna i koden. Det andra biblioteket skickar push -aviseringar via Pushover -tjänsten (aviseringar är gratis, men du måste betala en gång för att installera programmet på din telefon/surfplatta). Ladda ner båda biblioteken. Lägg innehållet i Skicka e -postbiblioteket i din skissmapp (arduino skapar det när du öppnar arduinoskissen för första gången). Installera Pushover -biblioteket via IDE (Sketch -> Include Library -> Add. ZIP library).

För att programmera ESP-01-modulen kan du följa följande handledning: https://www.allaboutcircuits.com/projects/breadbo… Du behöver inte bry dig om att lösa upp en rad stift som visas i guiden-använd bara dupont för kvinnor och män trådar för att ansluta stiften på modulen till brödbrädan. Glöm inte att boost-omvandlaren och USB-UART-adaptern måste dela mark (observera: du kanske kan använda 3,3 V-utgången från USB-UART-adaptern istället för boost-omvandlaren, men troligtvis kommer det inte att kunna mata ut tillräckligt med ström).

Steg 4: Batteriöverväganden

Den medföljande firmware -koden är förkonfigurerad för att skicka en varning om låg batterinivå och stängas av vid ~ 2,3 V. Denna tröskel baseras på antagandet att två NiMH -batterier används i serie. Det rekommenderas inte att ladda ut någon enskild NiMH -cell under 1 V. Om båda cellerna har samma kapacitet och urladdningsegenskaper kommer de båda att stängas av vid ~ 1,15 V - långt inom det säkra intervallet. NiMH -celler som har använts i många urladdningscykler tenderar emellertid att skilja sig åt i kapacitet. Upp till 30% skillnad i kapacitet kan tolereras eftersom det fortfarande skulle resultera i den lägsta spänningscellens brytpunkt runt 1 V.

Även om det är möjligt att sänka tröskelvärdet för låg batterinivå i fastvaran, skulle det ta bort säkerhetsmarginalen och kan leda till överladdning och skador på batteriet medan endast en marginell ökning av batteriets livslängd kan förväntas (en NiMH-cell är> 85% urladdad vid 1,15 V).

En annan faktor som måste beaktas är boost-omvandlarens förmåga att ge minst 3,0 V (2,5 V enligt anekdotiska bevis) vid 300-500 mA toppström på låga batterier. Det låga inre motståndet i NiMH -batterier orsakar endast en försumbar minskning på 0,1 V vid toppströmmar, så ett par NiMH -celler som laddas ut till 2,3 V (öppen krets) kommer att kunna ge minst 2,2 V till boostomvandlaren. Det är dock mer komplicerat med alkaliska batterier. Med ett par AA-batterier på 2,2-2,3 V (öppen krets) kan ett spänningsfall på 0,2-0,4 V förväntas vid toppströmmar. Även om jag har verifierat att kretsen fungerar med den rekommenderade boost -omvandlaren med så lite som 1,8 V som levereras vid toppströmmar, leder det sannolikt till att utspänningen sjunker en stund under det värde som Espressiffen föreslår. Således lämnar gränsvärdet för 2,3 V liten säkerhetsmarginal med alkaliska batterier (kom ihåg att en spänningsmätning som utförs av mikrokontrollern är korrekt endast inom plus eller minus några procent). För att säkerställa att ESP-modulen inte går sönder när alkaliska batterier är låga rekommenderar jag att öka spänningen till 2,4 V (#define BATT_THRESHOLD 973). Vid 1,2 V (öppen krets) är en alkalisk cell cirka 70% urladdad vilket bara är 5-10 procentenheter lägre än urladdningsgraden vid 1,15 V per cell.

Både NiMH och alkaliska celler har fördelar och nackdelar för denna applikation. Alkaliska batterier är säkrare (fattar inte eld om de är kortslutna), och de har en mycket lägre självurladdningshastighet. NiMH-batterier garanterar dock tillförlitlig drift av ESP8266 vid en lägre brytpunkt tack vare deras låga inre motstånd. Men i slutändan kan båda typerna användas med vissa försiktighetsåtgärder, så det är bara en fråga om personlig preferens.

Steg 5: Juridisk ansvarsfriskrivning

Denna krets designades av en icke-professionell hobbyist endast för hobbyapplikationer. Denna design delas i god tro, men utan någon som helst garanti. Använd den och dela med andra på egen risk. Genom att återskapa kretsen godkänner du att uppfinnaren inte kommer att hållas ansvarig för eventuella skador (inklusive men inte begränsat till nedskrivning av tillgångar och personskada) som kan uppstå direkt eller indirekt genom fel eller normal användning av denna krets. Om lagarna i ditt land upphäver eller förbjuder detta ansvarsfrihet får du inte använda denna design. Om du delar denna design eller en modifierad krets baserad på denna design måste du tillgodoräkna dig den ursprungliga uppfinnaren genom att ange webbadressen till denna instruerbara.

Rekommenderad: