Obsah:

Senzor oznámenia práčky: 6 krokov (s obrázkami)
Senzor oznámenia práčky: 6 krokov (s obrázkami)

Video: Senzor oznámenia práčky: 6 krokov (s obrázkami)

Video: Senzor oznámenia práčky: 6 krokov (s obrázkami)
Video: Минная опасность деоккупированных территорий. Что нужно знать? Лекция взрывотехника и сапера 2024, Júl
Anonim
Image
Image
Prototyp
Prototyp

Tento senzor práčky je umiestnený na mojej práčke a pomocou akcelerometra zisťuje vibrácie z práčky. Keď zistí, že sa prací cyklus skončil, pošle mi na môj telefón upozornenie. Postavil som to, pretože samotný stroj už nepípne, keď je hotový, a bol som unavený zo zabudnutia vybrať bielizeň.

Kód nájdete tu:

Kompletný zoznam dielov:

  • WEMOS LOLIN32
  • Breadboard polovičnej veľkosti (na prototypovanie)
  • ABS projektový box s maticovou doskou 59x88x30mm
  • Sparkfun LIS3DH - trojosový akcelerometer, odpočinok
  • 1x ZVP3306A P-kanálový MOSFET, 160 mA, 60 V, 3-pólový E-Line
  • 1x BC549B TO92 30V NPN tranzistor
  • 5 mm LED modrá 68 mcd
  • 1x 100k 0,125W odpor CF
  • 1x 330k 0,125W odpor CF
  • 2x 10k 0,250W odpor CF
  • 1x 100 0,250W odpor CF
  • 2-kolíkový ženský kábel JST v štýle PH (14 cm)
  • 4x Neodymový kotúčový magnet M1219-8 6x4mm

Krok 1: Prototyp

Prototyp
Prototyp

Zariadenie používa mikrokontrolér ESP32. V tomto prípade používam vývojovú dosku Lolin32 od spoločnosti Wemos, ktorú si môžete kúpiť na AliExpress za približne 7 dolárov. Akcelerometer je Sparkfun LIS3DH - je dôležité, aby bol akcelerometer skôr digitálny než analógový, ako uvidíte neskôr. Batériu som vybral zo starej sady reproduktorov bluetooth.

ESP32 sa pripája k akcelerometru cez I2C. Prvá verzia kódu jednoducho zisťovala tri osi zrýchlenia (x, yaz) pre nameranú hodnotu zrýchlenia každých 20 ms. Po umiestnení prototypu dosky na práčku do práčky som vyrobil vyššie uvedený graf, ktorý ukazuje vrcholy zrýchlenia počas rôznych fáz pracieho cyklu. Píky, kde bolo absolútne zrýchlenie vyššie ako 125 mg (125 tisícin normálnej gravitácie), sú znázornené oranžovou farbou. Chceme tieto periódy zistiť a použiť ich na zistenie stavu práčky.

Ako zistiť, či je stroj zapnutý alebo vypnutý?

Jedným z cieľov stavby tohto zariadenia bolo, aby bolo úplne pasívne. Tj. nie je potrebné stlačiť žiadne tlačidlá; jednoducho by to fungovalo. Tiež by mal byť veľmi nízky výkon, pretože v mojom prípade nebolo možné predĺžiť napájacie káble k práčke.

Našťastie akcelerometer LIS3DH má funkciu, pri ktorej môže vyvolať prerušenie, keď akcelerácia prekročí danú prahovú hodnotu (všimnite si to, vyžaduje to použitie vstavaného hornopriepustného filtra akcelerometra-podrobnosti nájdete v kóde na Githube) a ESP32 je možné prebudiť z režimu hlbokého spánku prerušením. Túto kombináciu funkcií môžeme použiť na vytvorenie spánkového režimu s veľmi nízkou spotrebou, ktorý je spustený pohybom.

Pseudokód by vyzeral takto:

# Zariadenie sa prebudilo

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # final spin cycle identified sleep (1 second) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Tu môžete vidieť, že pomocou počítadla zisťujeme, koľko sekúnd zrýchlenia sme zistili počas aktuálneho obdobia bdenia. Ak počítadlo klesne na nulu, môžeme zariadenie vrátiť do režimu spánku. Ak počítadlo dosiahne 240 (prahová hodnota upozornení), znamená to, že sme zistili 4 minúty vibrácií. Hodnoty týchto prahov môžeme vyladiť, aby sme zaistili, že zariadenie správne detekuje konečný cyklus odstreďovania. Akonáhle sú zistené dostatočné vibrácie, môžeme jednoducho zaspať ďalších 5 minút (v mojom prípade to trvá, ako dlho pranie skutočne skončí), kým odošlete upozornenie.

Krok 2: Odoslanie oznámenia prostredníctvom Blynk

Odoslanie oznámenia prostredníctvom Blynk
Odoslanie oznámenia prostredníctvom Blynk

Blynk je služba navrhnutá tak, aby umožňovala interakciu so zariadeniami IoT pomocou aplikácie vo vašom telefóne. V tomto prípade používam API oznámenia push, ktoré je spustené jednoduchým HTTP POST na Blynk API.

Krok 3: Meranie spotreby energie a odhad životnosti batérie

Meranie spotreby energie a odhad životnosti batérie
Meranie spotreby energie a odhad životnosti batérie

Čip ESP32 je inzerovaný ako výrobok s veľmi nízkou spotrebou energie v hlbokom spánku (až 5uA). Žiaľ, obvody na mnohých rôznych vývojových doskách poskytujú veľmi odlišné charakteristiky spotreby energie - nie všetky dosky ESP32 pre vývoj sú rovnaké. Napríklad, keď som prvýkrát začal s týmto projektom, použil som Sparkfun ESP32 Thing, ktorý by v režime hlbokého spánku spotreboval asi 1 mA energie (aj po vypnutí LED diódy napájania). Odvtedy používam Lolin32 (nie verziu Lite), na ktorej som v režime hlbokého spánku nameral prúd 144,5uA. Na vykonanie tohto merania som jednoducho zapojil multimeter do série s batériou a zariadením. Toto je určite jednoduchšie vykonať pri prototypovaní s nepájivým poľom. Tiež som meral aktuálne využitie, keď je zariadenie bdelé:

  • Hlboký spánok: 144,5uA
  • Prebudenie: 45mA
  • Wifi povolené: 150mA

Za predpokladu, že stroj používam dvakrát týždenne, odhadol som nasledujúce načasovania času, ktorý senzor strávi v každom stave:

  • Hlboký spánok: 604090 sekúnd (~ 1 týždeň)
  • Prebudenie: 720 sekúnd (12 minút)
  • Wi -Fi povolené: 10 sekúnd

Z týchto údajov môžeme odhadnúť, ako dlho vydrží batéria. Túto šikovnú kalkulačku som použil na získanie priemernej spotreby energie 0,2 mA. Odhadovaná životnosť batérie je 201 dní alebo asi 6 mesiacov! V skutočnosti som zistil, že zariadenie prestane fungovať asi po 2 mesiacoch, takže môžu nastať chyby v meraniach alebo v kapacite batérie.

Krok 4: Meranie úrovne batérie

Meranie úrovne batérie
Meranie úrovne batérie
Meranie úrovne batérie
Meranie úrovne batérie

Myslel som si, že by bolo pekné, keby mi zariadenie dalo vedieť, kedy je batéria takmer vybitá, aby som vedel, kedy ju mám nabiť. Aby sme to mohli zmerať, musíme zmerať napätie batérie. Batéria má rozsah napätia 4,3 V - 2,2 V (minimálne prevádzkové napätie ESP32). Rozsah napätia ADC pinov ESP32 je bohužiaľ 0-3,3V. To znamená, že musíme znížiť napätie batérie z maxima 4,3 na 3,3, aby sme predišli preťaženiu ADC. To je možné dosiahnuť pomocou deliča napätia. Jednoducho zapojte dva odpory s príslušnými hodnotami z batérie na zem a zmerajte napätie v strede.

Jednoduchý obvod deliča napätia bohužiaľ odoberá energiu z batérie, aj keď sa napätie nemeria. Môžete to zmierniť použitím odporov s vysokou hodnotou, ale nevýhodou je, že ADC nemusí byť schopný čerpať dostatok prúdu na presné meranie. Rozhodol som sa použiť odpory s hodnotami 100 kΩ a 330 kΩ, ktoré podľa vzorca deliča tohto napätia klesnú z 4,3 V na 3,3 V. Pri celkovom odpore 430kΩ by sme očakávali odber prúdu 11,6uA (podľa Ohmovho zákona). Vzhľadom na to, že naše súčasné využitie v hlbokom spánku je 144uA, je to primerane významné zvýšenie.

Pretože chceme napätie batérie merať iba raz tesne pred odoslaním oznámenia, má zmysel vypnúť obvod deliča napätia v čase, keď nič nemeriame. Našťastie to môžeme urobiť pomocou niekoľkých tranzistorov pripojených k jednému z pinov GPIO. Použil som obvod uvedený v tejto odpovedi stackexchange. Na vyššie uvedenej fotografii ma môžete vidieť testovať obvod pomocou Arduina a doštičky (všimnite si, že v obvode je chyba, čo je dôvod, prečo meriam vyššie napätie, ako sa očakávalo).

Keď je uvedený obvod na mieste, na získanie percentuálnej hodnoty batérie používam nasledujúci pseudo kód:

percentuálny podiel batérie ():

# povoliť obvod napätia batérie gpio_set_level (BATTERY_EN_PIN, HIGH) # Úroveň batérie je vrátená ako celé číslo od 0 do 4095 adc_value = adc1_get_value (ADC_PIN) # povoliť obvod napätia batérie gpio_set_level (BATTERY_EN_PIN, LOW) float adc_voltage = delič používa odpory 100 k/330 k ohm # 4,3 V -> 3,223, 2,4 -> 1,842 očakávané_max = 4,3*330/(100+330) očakávané_min = 2,4*330/(100+330) úroveň_ batérie = (adc_ napätie -očakávané_min)/(očakávané_max -očakávaná_min) vrátiť úroveň batérie * 100,0

Krok 5: Urobte to krajšie

Vďaka tomu je to krajšie
Vďaka tomu je to krajšie
Vďaka tomu je to krajšie
Vďaka tomu je to krajšie
Vďaka tomu je to krajšie
Vďaka tomu je to krajšie

Aj keď verzia typu breadboard funguje dobre, chcel som ju vložiť do obalu, ktorý bude úhľadnejší a spoľahlivejší (žiadne káble, ktoré sa môžu uvoľniť alebo skratovať). Podarilo sa mi nájsť perfektný projektový box pre moje potreby, ktorý mal správnu veľkosť, vrátane kolíkovej dosky, montážnych držiakov a skrutiek, aby som to všetko spojil. Tiež to bolo lacné za menej ako 2 libry. Po prijatí krabice som už len musel spájkovať súčiastky na kolíkovú dosku.

Asi najnáročnejšou časťou bolo osadenie všetkých komponentov obvodu napätia batérie na malý priestor vedľa Lolin32. Našťastie s trochou jiggery pokery a príslušných spojení vytvorených spájkou obvod do seba úhľadne zapadá. Pretože Wemos Lolin32 nemá kolík na odhalenie kladného pólu batérie, musel som spájkovať drôt z konektora batérie s kolíkovou doskou.

Tiež som pridal LED, ktorá bliká, keď zariadenie zistí pohyb.

Krok 6: Dokončenie dotykov

Image
Image
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky

Na základňu škatule som super prilepil 4 neodymové magnety 6 mm x 4 mm, čo jej umožňuje bezpečné prilepenie na kovový vrch práčky.

Krabica projektu je už dodávaná s malým otvorom na zaistenie prístupu pre káble. Našťastie sa mi podarilo umiestniť dosku ESP32 blízko tohto otvoru, aby som umožnil prístup ku konektoru micro USB. Po zväčšení otvoru pomocou remeselného noža kábel perfektne zapadol, aby umožnil ľahké nabíjanie batérie.

Ak vás zaujímajú niektoré podrobnosti o tomto projekte, neváhajte zanechať komentár. Ak chcete kód vidieť, pozrite sa na neho na Github:

github.com/alexspurling/washingmachine

Odporúča: