Isi kandungan:

Sensor Pemberitahuan Mesin Basuh: 6 Langkah (dengan Gambar)
Sensor Pemberitahuan Mesin Basuh: 6 Langkah (dengan Gambar)

Video: Sensor Pemberitahuan Mesin Basuh: 6 Langkah (dengan Gambar)

Video: Sensor Pemberitahuan Mesin Basuh: 6 Langkah (dengan Gambar)
Video: MESIN BASUH LG HIDUP TAPI TAK BERGERAK 2024, Julai
Anonim
Image
Image
Prototaip
Prototaip

Sensor mesin basuh ini terletak di atas mesin basuh saya dan menggunakan pecutan untuk mengesan getaran dari mesin. Apabila merasakan kitaran pencucian telah selesai, ia akan menghantar pemberitahuan di telefon saya. Saya membina ini kerana mesin itu sendiri tidak lagi berbunyi apabila ia selesai dan saya bosan lupa mengeluarkan cucian.

Kodnya boleh didapati di sini:

Senarai bahagian penuh:

  • WEMOS LOLIN32
  • Papan Roti separuh saiz (untuk prototaip)
  • Kotak Projek ABS dengan Matrix Board 59x88x30mm
  • Sparkfun LIS3DH - Pelarian Triple Axis Accelerometer
  • 1x ZVP3306A P-channel MOSFET, 160 mA, 60 V, 3-Pin E-Line
  • Transistor 1x BC549B TO92 30V NPN
  • Biru LED 5mm 68 mcd
  • Perintang 1x 100k 0.125W CF
  • 1x 330k 0.125W CF Perintang
  • Perintang 2x 10k 0.250W CF
  • 1x 100 0.250W CF Perintang
  • Kabel PH-Gaya Wanita 2-Pin Perempuan (14cm)
  • Magnet Cakera 4x M1219-8 Neodymium 6x4mm

Langkah 1: Prototaip

Prototaip
Prototaip

Peranti menggunakan mikrokontroler ESP32. Dalam kes ini, saya menggunakan papan pengembangan Lolin32 oleh Wemos yang boleh anda beli di AliExpress dengan harga sekitar $ 7. Accelerometer adalah Sparkfun LIS3DH - pentingnya accelerometer adalah digital daripada analog seperti yang anda akan lihat kemudian. Bateri yang saya ambil dari set pembesar suara bluetooth lama.

ESP32 menghubungkan ke pecutan melalui I2C. Versi pertama kod hanya meneliti tiga paksi pecutan (x, y dan z) untuk nilai pecutan yang diukur setiap 20ms. Meletakkan prototaip papan roti di mesin basuh dan saya menghasilkan graf di atas yang menunjukkan puncak pecutan semasa pelbagai fasa kitaran basuh. Puncak di mana pecutan mutlak lebih besar daripada 125mg (125 seperseratus graviti normal) ditunjukkan dengan warna oren. Kami ingin mengesan tempoh ini dan menggunakannya untuk menentukan status mesin basuh.

Bagaimana untuk menentukan sama ada mesin hidup atau mati?

Salah satu tujuan pembinaan peranti ini adalah sepenuhnya pasif. I. E. butang tidak perlu ditekan; ia akan berjaya. Kuasa ini juga mestilah sangat rendah kerana tidak boleh memperbesar kabel kuasa ke mesin basuh dalam kes saya.

Nasib baik, accelerometer LIS3DH mempunyai ciri di mana ia boleh mencetuskan gangguan ketika pecutan melebihi ambang yang ditentukan (perhatikan, ini memerlukan penggunaan penapis lulus tinggi accelerometer - lihat kod di Github untuk perinciannya) dan ESP32 dapat diaktifkan naik dari mod tidur dalam melalui gangguan. Kita boleh menggunakan gabungan ciri ini untuk membuat mod tidur kuasa yang sangat rendah yang dipicu oleh pergerakan.

Kod pseudo akan kelihatan seperti ini:

# Peranti bangun

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # putaran putaran terakhir dikesan tidur (1 saat) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Anda dapat lihat di sini bahawa kami menggunakan penghitung untuk mengesan berapa saat pecutan yang kami dapati dalam tempoh bangun semasa. Sekiranya kaunter jatuh ke sifar maka kita boleh menghidupkan semula peranti. Sekiranya penghitung mencapai 240 (ambang pemberitahuan), itu bermakna kita telah mengesan getaran selama 4 minit. Kami dapat mengubah nilai ambang ini untuk memastikan peranti mengesan putaran putaran terakhir dengan betul. Setelah getaran yang mencukupi dikesan, kita dapat tidur selama 5 minit lagi (dalam kes saya ini adalah berapa lama masa yang diperlukan sehingga pencucian selesai) sebelum menghantar pemberitahuan.

Langkah 2: Menghantar Pemberitahuan Melalui Blynk

Menghantar Pemberitahuan Melalui Blynk
Menghantar Pemberitahuan Melalui Blynk

Blynk adalah perkhidmatan yang direka untuk membolehkan interaksi dengan peranti IoT dengan aplikasi di telefon anda. Dalam kes ini, saya menggunakan push notification API yang dipicu oleh HTTP POST sederhana ke Blynk API.

Langkah 3: Mengukur Penggunaan Kuasa dan Menganggar Hayat Bateri

Mengukur Penggunaan Daya dan Menganggar Hayat Bateri
Mengukur Penggunaan Daya dan Menganggar Hayat Bateri

Cip ESP32 diiklankan mempunyai penggunaan kuasa yang sangat rendah ketika dalam tidur nyenyak (serendah 5uA). Malangnya, litar pada papan pengembangan yang berbeza memberikan ciri penggunaan kuasa yang sangat berbeza - tidak semua papan dev ESP32 dibuat sama. Sebagai contoh, ketika saya mula-mula memulakan projek ini, saya menggunakan Sparkfun ESP32 Thing yang akan menggunakan kuasa sekitar 1mA dalam mod tidur nyenyak (walaupun selepas mematikan LED kuasa). Sejak itu saya menggunakan Lolin32 (bukan versi Lite) di mana saya mengukur arus 144.5uA semasa dalam mod tidur nyenyak. Untuk melakukan pengukuran ini, saya hanya memasang kabel multimeter secara bersiri dengan bateri dan peranti. Ini tentu lebih mudah dilakukan semasa membuat prototaip dengan papan roti. Saya juga mengukur penggunaan semasa semasa peranti terjaga:

  • Tidur nyenyak: 144.5uA
  • Terjaga: 45mA
  • Wifi didayakan: 150mA

Dengan mengandaikan bahawa saya menggunakan mesin dua kali seminggu, saya mengira jangka masa berikut untuk masa yang dihabiskan oleh sensor di setiap keadaan:

  • Tidur nyenyak: 604090 saat (~ 1 minggu)
  • Bangun: 720 saat (12 minit)
  • Wifi diaktifkan: 10 saat

Dari angka-angka ini, kita dapat menganggarkan berapa lama bateri akan bertahan. Saya menggunakan kalkulator berguna ini untuk mendapatkan penggunaan kuasa purata 0.2mA. Jangka hayat bateri adalah 201 hari atau kira-kira 6 bulan! Sebenarnya saya telah mendapati bahawa peranti akan berhenti berfungsi setelah kira-kira 2 bulan sehingga mungkin terdapat beberapa kesalahan dalam pengukuran atau kapasiti bateri.

Langkah 4: Mengukur Tahap Bateri

Mengukur Tahap Bateri
Mengukur Tahap Bateri
Mengukur Tahap Bateri
Mengukur Tahap Bateri

Saya fikir akan lebih baik jika peranti dapat memberitahu saya ketika bateri hampir habis, jadi saya tahu kapan mengecasnya. Untuk mengukur ini, kita perlu mengukur voltan bateri. Bateri mempunyai julat voltan 4.3V - 2.2V (voltan operasi minimum ESP32). Malangnya, julat voltan pin ADC ESP32 adalah 0-3.3V. Ini bermaksud, kita perlu menurunkan voltan bateri dari maksimum 4.3 hingga 3.3 untuk mengelakkan beban ADC yang berlebihan. Ini mungkin dilakukan dengan pembahagi voltan. Cukup kawat dua perintang dengan nilai yang sesuai dari bateri ke tanah dan ukur voltan di tengah.

Malangnya, litar pembahagi voltan sederhana akan mengalirkan kuasa dari bateri walaupun voltan tidak diukur. Anda boleh mengurangkan ini dengan menggunakan perintang nilai tinggi tetapi sisi bawahnya adalah bahawa ADC mungkin tidak dapat menarik arus yang cukup untuk membuat pengukuran yang tepat. Saya memutuskan untuk menggunakan perintang dengan nilai 100kΩ dan 330kΩ yang akan turun 4.3V hingga 3.3V mengikut formula pembahagi voltan ini. Dengan rintangan total 430kΩ, kami menjangkakan undian 11.6uA semasa (menggunakan undang-undang Ohm). Memandangkan penggunaan tidur nyenyak kita sekarang adalah 144uA, ini adalah peningkatan yang cukup ketara.

Oleh kerana kami hanya ingin mengukur voltan bateri sekali sebelum menghantar pemberitahuan, masuk akal untuk mematikan litar pembahagi voltan semasa kami tidak mengukur apa-apa. Nasib baik, kita dapat melakukan ini dengan beberapa transistor yang disambungkan ke salah satu pin GPIO. Saya menggunakan litar yang diberikan dalam jawapan pertukaran tumpukan ini. Anda dapat melihat saya menguji litar dengan Arduino dan papan roti pada foto di atas (perhatikan terdapat ralat dalam litar yang menjadi sebab saya mengukur voltan yang lebih tinggi daripada yang dijangkakan).

Dengan adanya litar di atas, saya menggunakan kod pseudo berikut untuk mendapatkan nilai peratusan bateri:

peratusan bateri():

# aktifkan litar voltan bateri gpio_set_level (BATTERY_EN_PIN, HIGH) # Aras bateri dikembalikan sebagai bilangan bulat antara 0 dan 4095 pembahagi menggunakan perintang 100k / 330k ohm # 4.3V -> 3.223, 2.4 -> 1.842 dijangka_max = 4.3 * 330 / (100 + 330) diharapkan_min = 2.4 * 330 / (100 + 330) bateri_level = (adc_voltage-expect_min) / (توقع_max -penyangkaan_min) pulangan_level_ bateri * 100.0

Langkah 5: Menjadikannya Lebih Cantik

Menjadikannya Lebih Cantik
Menjadikannya Lebih Cantik
Menjadikannya Lebih Cantik
Menjadikannya Lebih Cantik
Menjadikannya Lebih Cantik
Menjadikannya Lebih Cantik

Walaupun versi papan roti berfungsi dengan baik, saya mahu memasukkannya ke dalam pakej yang lebih kemas dan lebih dipercayai (tidak ada wayar yang boleh longgar atau pendek). Saya berjaya mencari kotak projek yang sesuai untuk keperluan saya yang berukuran tepat, termasuk papan pin, penahan pemasangan dan skru untuk menyatukannya. Juga, harganya murah dengan harga kurang dari £ 2. Setelah menerima kotak itu, yang harus saya lakukan ialah menyolder komponen ke papan pin.

Mungkin bahagian paling sukar adalah memasang semua komponen litar voltan bateri ke ruang kecil di sebelah Lolin32. Nasib baik dengan sedikit pokery dan sambungan yang sesuai dibuat dengan solder litar sesuai dengan kemas. Juga, kerana Wemos Lolin32 tidak mempunyai pin untuk memaparkan terminal bateri positif, saya harus menyolder wayar dari penyambung bateri ke papan pin.

Saya juga menambahkan LED yang berkelip apabila peranti mengesan pergerakan.

Langkah 6: Menyentuh Sentuhan

Image
Image
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir

Magnet neodymium 4 6mm x 4mm terpaku pada pangkal kotak yang membolehkannya melekat dengan kuat pada bahagian atas logam mesin basuh.

Kotak projek sudah dilengkapi dengan lubang kecil untuk memberi akses kepada kabel. Nasib baik, saya dapat meletakkan papan ESP32 dekat dengan lubang ini untuk memberi akses ke penyambung USB mikro. Setelah membesarkan lubang dengan pisau kerajinan, kabel sesuai dengan sempurna untuk memudahkan pengisian bateri.

Sekiranya anda berminat dengan perincian projek ini, sila beri komen. Sekiranya anda ingin melihat kodnya, sila lihat di Github:

github.com/alexspurling/washingmachine

Disyorkan: