Talaan ng mga Nilalaman:

Sensor sa Pag-abiso sa washing machine: 6 na Hakbang (na may Mga Larawan)
Sensor sa Pag-abiso sa washing machine: 6 na Hakbang (na may Mga Larawan)

Video: Sensor sa Pag-abiso sa washing machine: 6 na Hakbang (na may Mga Larawan)

Video: Sensor sa Pag-abiso sa washing machine: 6 na Hakbang (na may Mga Larawan)
Video: Как почистить тэн в стиральной машине 2024, Hulyo
Anonim
Image
Image
Prototype
Prototype

Ang sensor ng washing machine na ito ay nakaupo sa tuktok ng aking washing machine at gumagamit ng isang accelerometer upang makita ang panginginig mula sa makina. Kapag naramdaman na natapos ang cycle ng paghuhugas, nagpapadala ito sa akin ng isang notification sa aking telepono. Itinayo ko ito sapagkat ang makina mismo ay hindi na nag-beep kapag natapos na at pagod na akong makalimutang maglaba.

Ang code ay matatagpuan dito:

Buong listahan ng mga bahagi:

  • WEMOS LOLIN32
  • Half-size Breadboard (para sa prototyping)
  • ABS Project Box na may Matrix Board 59x88x30mm
  • Sparkfun LIS3DH - Breakout ng Triple Axis Accelerometer
  • 1x ZVP3306A P-channel MOSFET, 160 mA, 60 V, 3-Pin E-Line
  • 1x BC549B TO92 30V NPN Transistor
  • 5mm LED Blue 68 mcd
  • 1x 100k 0.125W CF Resistor
  • 1x 330k 0.125W CF Resistor
  • 2x 10k 0.250W CF Resistor
  • 1x 100 0.250W CF Resistor
  • 2-Pin Babae JST PH-Style Cable (14cm)
  • 4x M1219-8 Neodymium Disc Magnet 6x4mm

Hakbang 1: Prototype

Prototype
Prototype

Gumagamit ang aparato ng isang ESP32 microcontroller. Sa kasong ito ay gumagamit ako ng Lolin32 development board ng Wemos na kung saan maaari kang bumili sa AliExpress ng halos $ 7. Ang accelerometer ay ang Sparkfun LIS3DH - mahalaga na ang accelerometer ay digital kaysa sa analog na makikita mo sa paglaon. Ang baterya na kinuha ko mula sa isang lumang hanay ng mga bluetooth speaker.

Ang ESP32 ay kumokonekta sa accelerometer sa pamamagitan ng I2C. Ang unang bersyon ng code ay na-poll lang ang tatlong axes ng acceleration (x, y at z) para sa sinusukat na halaga ng pagpabilis bawat 20ms. Ang paglalagay ng prototype ng breadboard sa washing machine at ginawa ko ang graph sa itaas na nagpapakita ng mga peach ng pagpabilis sa iba't ibang mga phase ng cycle ng paghuhugas. Ang mga taluktok na iyon kung saan ang ganap na pagbilis ay mas malaki kaysa sa 125mg (125 libo ng normal na grabidad) ay ipinapakita sa kahel. Nais naming tuklasin ang mga panahong ito at gamitin ang mga ito upang matukoy ang katayuan ng washing machine.

Paano matutukoy kung ang makina ay nakabukas o patay?

Ang isa sa mga layunin ng pagbuo ng aparatong ito ay na ito ay magiging buong passive. I.e. walang mga pindutan na dapat na pindutin; gagana lang ito. Ito rin ay dapat na napakababang lakas dahil hindi talaga posible na palawakin ang mga kable ng kuryente sa washing machine sa aking kaso.

Sa kabutihang palad ang LIS3DH accelerometer ay may tampok kung saan maaari itong magpalitaw ng isang nakakagambala kapag ang pagpabilis ay lumampas sa isang naibigay na threshold (tandaan, nangangailangan ito ng paggamit ng built-in na high-pass filter ng accelerometer - tingnan ang code sa Github para sa mga detalye) at ang ESP32 ay maaaring gisingin pataas mula sa malalim na mode ng pagtulog nito sa pamamagitan ng isang nakakagambala. Maaari naming gamitin ang kombinasyong ito ng mga tampok upang lumikha ng isang napakababang power mode sa pagtulog na na-trigger ng paggalaw.

Ang pseudo code ay magmukhang ganito:

# Gumising ang aparato

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg habang counter> 0: kung accelerometer.above_threshold (): counter ++ iba pa: counter-- kung counter> notification_threshold: # huling ikot ng ikot na nakita ang pagtulog (1 segundo) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Maaari mong makita dito na gumagamit kami ng isang counter upang makita kung gaano karaming mga segundo ng pagpabilis na nakita namin sa kasalukuyang panahon ng paggising. Kung ang counter ay bumaba sa zero pagkatapos ay maaari nating ibalik ang pagtulog ng aparato. Kung ang counter ay umabot sa 240 (ang threshold ng notification) kung gayon nangangahulugan ito na nakita namin ang 4 na minuto ng panginginig. Maaari naming mai-tweak ang mga halaga ng mga threshold na ito upang matiyak na tama na nakita ng aparato ang pangwakas na ikot ng pag-ikot. Kapag nakita ang sapat na panginginig, maaari lamang kaming makatulog ng isa pang 5 minuto (sa aking kaso ito ang haba hanggang sa talagang nakumpleto ang paghuhugas) bago magpadala ng isang abiso.

Hakbang 2: Pagpapadala ng isang Abiso sa pamamagitan ng Blynk

Pagpapadala ng isang Abiso sa pamamagitan ng Blynk
Pagpapadala ng isang Abiso sa pamamagitan ng Blynk

Ang Blynk ay isang serbisyo na idinisenyo upang payagan ang pakikipag-ugnay sa mga IoT device na may isang app sa iyong telepono. Sa kasong ito, gumagamit ako ng push notification API na na-trigger ng isang simpleng HTTP POST sa Blynk API.

Hakbang 3: Pagsukat sa Pagkonsumo ng Lakas at Pag-estima sa Buhay ng Baterya

Pagsukat sa Pagkonsumo ng Lakas at Pag-estima sa Buhay ng Baterya
Pagsukat sa Pagkonsumo ng Lakas at Pag-estima sa Buhay ng Baterya

Ang ESP32 chip ay na-advertise bilang pagkakaroon ng napakababang pagkonsumo ng kuryente kapag mahimbing ang pagtulog (kasing baba ng 5uA). Sa kasamaang palad, ang circuitry sa maraming iba't ibang mga board ng pag-unlad ay nagbibigay ng iba't ibang mga katangian ng pagkonsumo ng kuryente - hindi lahat ng mga board ng ESP32 dev ay nilikha na pantay. Halimbawa Simula noon ginagamit ko na ang Lolin32 (hindi ang bersyon ng Lite) kung saan sinukat ko ang isang kasalukuyang 144.5uA habang nasa malalim na mode ng pagtulog. Upang gawin ang pagsukat na ito, simpleng nag-wire ako sa isang serye sa serye gamit ang baterya at ang aparato. Ito ay tiyak na mas madaling gawin habang nagprotipo sa isang breadboard. Sinukat ko rin ang kasalukuyang paggamit kapag ang aparato ay gising:

  • Malalim na pagtulog: 144.5uA
  • Gising: 45mA
  • Pinagana ang Wifi: 150mA

Ipagpalagay na gumagamit ako ng makina nang dalawang beses sa isang linggo, tinantya ko ang mga sumusunod na oras para sa oras na ginugugol ng sensor sa bawat estado:

  • Malalim na pagtulog: 604090 segundo (~ 1 linggo)
  • Gising: 720 segundo (12 minuto)
  • Pinagana ang Wifi: 10 segundo

Mula sa mga figure na ito, maaari nating tantyahin kung gaano katagal ang baterya ay tatagal. Ginamit ko ang madaling gamiting calculator na ito upang makakuha ng average na pagkonsumo ng kuryente na 0.2mA. Ang tinatayang buhay ng baterya ay 201 araw o tungkol sa 6 na buwan! Sa katotohanan nahanap ko ang aparato ay hihinto sa pagtatrabaho pagkalipas ng halos 2 buwan upang maaaring may ilang mga pagkakamali sa mga sukat o sa kapasidad ng baterya.

Hakbang 4: Pagsukat sa Antas ng Baterya

Pagsukat sa Antas ng Baterya
Pagsukat sa Antas ng Baterya
Pagsukat sa Antas ng Baterya
Pagsukat sa Antas ng Baterya

Akala ko magiging maganda kung sasabihin sa akin ng aparato kapag mababa ang baterya kaya alam ko kung kailan ko ito sisingilin. Upang sukatin ito kailangan nating sukatin ang boltahe ng baterya. Ang baterya ay may saklaw na boltahe na 4.3V - 2.2V (ang minimum na boltahe sa pagpapatakbo ng ESP32). Sa kasamaang palad, ang saklaw ng boltahe ng mga ADC pin ng ESP32 ay 0-3.3V. Nangangahulugan ito, kailangan nating hakbangin ang boltahe ng baterya pababa mula sa maximum na 4.3 hanggang 3.3 upang maiwasan ang labis na pag-load ng ADC. Posibleng gawin ito sa isang divider ng boltahe. Mag-wire lamang ng dalawang resistors na may naaangkop na mga halaga mula sa baterya patungo sa lupa at sukatin ang boltahe sa gitna.

Sa kasamaang palad, ang isang simpleng boltahe divider circuit ay aalisin ang lakas mula sa baterya kahit na ang boltahe ay hindi sinusukat. Maaari mo itong mapagaan sa pamamagitan ng paggamit ng mga resistors na may mataas na halaga ngunit ang pababang bahagi ay maaaring hindi makalabas ng sapat na kasalukuyang ang ADC upang makagawa ng tumpak na pagsukat. Napagpasyahan kong gumamit ng mga resistors na may halagang 100kΩ at 330kΩ na mahuhulog sa 4.3V hanggang 3.3V alinsunod sa formula ng boltahe na divider na ito. Dahil sa isang kabuuang pagtutol ng 430kΩ, inaasahan namin ang isang kasalukuyang draw ng 11.6uA (gamit ang batas ni Ohm). Dahil sa aming paggamit ng malalim na kasalukuyang pagtulog ay 144uA, ito ay isang makatuwirang makabuluhang pagtaas.

Tulad ng nais lamang naming sukatin ang boltahe ng baterya isang beses bago magpadala ng isang abiso, makatuwiran upang patayin ang circuit ng divider ng boltahe sa oras na wala kaming sinusukat. Sa kabutihang palad, magagawa natin ito sa isang pares ng mga transistor na konektado sa isa sa mga pin ng GPIO. Ginamit ko ang circuit na ibinigay sa sagot na stackexchange na ito. Maaari mo akong makita na sinusubukan ang circuit sa isang Arduino at isang breadboard sa larawan sa itaas (tandaan na may isang error sa circuit na kung saan ay ang dahilan na sumusukat ako ng isang mas mataas na boltahe kaysa sa inaasahan).

Gamit ang nasa itaas na circuit, ginagamit ko ang sumusunod na pseudo code upang makakuha ng halaga ng porsyento ng baterya:

porsyento ng baterya():

# paganahin ang circuit ng boltahe ng baterya gpio_set_level (BATTERY_EN_PIN, HIGH) # Ang antas ng baterya ay ibinalik bilang isang integer sa pagitan ng 0 at 4095 adc_value = adc1_get_value (ADC_PIN) # paganahin ang boltahe ng baterya circuit gpio_set_level (BATTERY_EN_PIN, LOW) float adc_voltage = adc_voltage gumagamit ang divider ng 100k / 330k ohm resistors # 4.3V -> 3.223, 2.4 -> 1.842 inaasahang_max = 4.3 * 330 / (100 + 330) inaasahan_min = 2.4 * 330 / (100 + 330) baterya_level = (adc_voltage-expected_min) / (expected_max -expect_min) ibalik ang baterya_level * 100.0

Hakbang 5: Ginagawa itong Mas Maganda

Ginagawang Mas Maganda
Ginagawang Mas Maganda
Ginagawang Mas Maganda
Ginagawang Mas Maganda
Ginagawang Mas Maganda
Ginagawang Mas Maganda

Habang gumagana nang maayos ang bersyon ng breadboard, nais kong ilagay ito sa isang pakete na mas magiging neater at mas maaasahan (walang mga wire na maaaring maluwag o maikli). Nagawa kong hanapin ang perpektong kahon ng proyekto para sa aking mga pangangailangan na kung saan ay ang tamang sukat, kasama ang isang pin board, mga mounting hold at mga tornilyo upang pagsamahin ang lahat. Gayundin, ito ay patay na mura ng mas mababa sa £ 2. Matapos matanggap ang kahon, ang kailangan ko lang gawin ay maghinang ng mga sangkap sa pin board.

Marahil ang pinaka-mahirap na bahagi nito ay umaangkop sa lahat ng mga bahagi ng boltahe ng baterya ng baterya papunta sa maliit na puwang sa tabi ng Lolin32. Sa kabutihang-palad na may isang maliit na jiggery pokery at ang mga naaangkop na koneksyon na ginawa gamit ang panghinang ang circuit ay umaangkop nang maayos. Gayundin, dahil ang Wemos Lolin32 ay walang pin upang ilantad ang positibong terminal ng baterya, kailangan kong maghinang ng isang kawad mula sa konektor ng baterya hanggang sa pin board.

Nagdagdag din ako ng isang LED na kumikislap kapag ang aparato ay nakakita ng paggalaw.

Hakbang 6: Pagtatapos ng Mga Touch

Image
Image
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch
Mga Pagtatapos ng Mga Touch

Super-nakadikit ako ng 4 6mm x 4mm neodymium magnet sa base ng kahon na nagbibigay-daan sa ito upang dumikit nang ligtas sa tuktok ng metal ng washing machine.

Ang kahon ng proyekto ay mayroon nang isang maliit na butas upang magbigay ng pag-access para sa mga kable. Sa kabutihang palad, nakaposisyon ko ang board ng ESP32 malapit sa butas na ito upang magbigay ng pag-access sa micro USB konektor. Matapos palakihin ang butas gamit ang isang kutsilyo ng bapor, ang cable ay ganap na magkasya upang payagan ang madaling pag-charge ng baterya.

Kung interesado ka sa anuman sa mga detalye ng proyektong ito, mangyaring huwag mag-iwan ng komento. Kung nais mong makita ang code, mangyaring suriin ito sa Github:

github.com/alexspurling/washingmachine

Inirerekumendang: