Daftar Isi:

Sensor Notifikasi Mesin Cuci: 6 Langkah (dengan Gambar)
Sensor Notifikasi Mesin Cuci: 6 Langkah (dengan Gambar)

Video: Sensor Notifikasi Mesin Cuci: 6 Langkah (dengan Gambar)

Video: Sensor Notifikasi Mesin Cuci: 6 Langkah (dengan Gambar)
Video: Cara Kerja Sensor Water Level Mesin Cuci 2024, Juli
Anonim
Image
Image
Prototipe
Prototipe

Sensor mesin cuci ini berada di atas mesin cuci saya dan menggunakan akselerometer untuk mendeteksi getaran dari mesin. Ketika merasakan siklus pencucian telah selesai, ia mengirimi saya pemberitahuan di ponsel saya. Saya membuat ini karena mesin itu sendiri tidak lagi berbunyi ketika sudah selesai dan saya lelah lupa untuk mengeluarkan cucian.

Kode dapat ditemukan di sini:

Daftar bagian lengkap:

  • WEMOS LOLIN32
  • Breadboard setengah ukuran (untuk pembuatan prototipe)
  • Kotak Proyek ABS dengan Papan Matriks 59x88x30mm
  • Sparkfun LIS3DH - Pemecahan Akselerometer Sumbu Tiga
  • 1x ZVP3306A P-channel MOSFET, 160 mA, 60 V, 3-Pin E-Line
  • 1x BC549B TO92 30V NPN Transistor
  • 5mm LED Biru 68 mcd
  • 1x 100k 0.125W CF Resistor
  • 1x 330k 0.125W CF Resistor
  • 2x 10k 0.250W CF Resistor
  • 1x100 0.250W CF Resistor
  • Kabel Gaya JST PH Wanita 2-Pin (14cm)
  • 4x M1219-8 Neodymium Disc Magnet 6x4mm

Langkah 1: Prototipe

Prototipe
Prototipe

Perangkat ini menggunakan mikrokontroler ESP32. Dalam hal ini saya menggunakan papan pengembangan Lolin32 oleh Wemos yang dapat Anda beli di AliExpress dengan harga sekitar $7. Akselerometer adalah Sparkfun LIS3DH - penting akselerometernya digital daripada analog seperti yang akan Anda lihat nanti. Baterai saya ambil dari satu set speaker bluetooth lama.

ESP32 terhubung ke akselerometer melalui I2C. Versi pertama kode hanya melakukan polling pada tiga sumbu percepatan (x, y dan z) untuk nilai percepatan yang diukur setiap 20 md. Menempatkan prototipe papan tempat memotong roti pada mesin cuci dan saya menghasilkan grafik di atas yang menunjukkan puncak percepatan selama berbagai fase siklus pencucian. Puncak-puncak di mana akselerasi absolut lebih besar dari 125mg (125 ribu gravitasi normal) ditampilkan dalam warna oranye. Kami ingin mendeteksi periode ini dan menggunakannya untuk menentukan status mesin cuci.

Bagaimana cara menentukan apakah mesin hidup atau mati?

Salah satu tujuan membangun perangkat ini adalah bahwa itu akan sepenuhnya pasif. Yaitu. tidak ada tombol yang perlu ditekan; itu hanya akan berhasil. Itu juga harus memiliki daya yang sangat rendah karena tidak mungkin untuk memperpanjang kabel daya ke mesin cuci dalam kasus saya.

Untungnya akselerometer LIS3DH memiliki fitur di mana ia dapat memicu interupsi ketika akselerasi melebihi ambang batas yang diberikan (perhatikan, ini memerlukan penggunaan filter high-pass bawaan akselerometer - lihat kode di Github untuk detailnya) dan ESP32 dapat dibangunkan dari mode tidur nyenyaknya melalui interupsi. Kita dapat menggunakan kombinasi fitur ini untuk membuat mode tidur berdaya sangat rendah yang dipicu oleh gerakan.

Kode pseudo akan terlihat seperti ini:

# Perangkat bangun

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

Anda dapat melihat di sini bahwa kami menggunakan penghitung untuk mendeteksi berapa detik akselerasi yang kami deteksi selama periode bangun saat ini. Jika penghitung turun ke nol maka kita dapat mengembalikan perangkat ke mode tidur. Jika penghitung mencapai 240 (ambang notifikasi) maka itu berarti kami telah mendeteksi getaran selama 4 menit. Kami dapat mengubah nilai ambang batas ini untuk memastikan perangkat mendeteksi siklus putaran terakhir dengan benar. Setelah getaran yang cukup terdeteksi, kita cukup tidur selama 5 menit lagi (dalam kasus saya ini adalah berapa lama waktu yang dibutuhkan sampai pencucian benar-benar selesai) sebelum mengirim pemberitahuan.

Langkah 2: Mengirim Pemberitahuan Melalui Blynk

Mengirim Pemberitahuan Melalui Blynk
Mengirim Pemberitahuan Melalui Blynk

Blynk adalah layanan yang dirancang untuk memungkinkan interaksi dengan perangkat IoT dengan aplikasi di ponsel Anda. Dalam hal ini, saya menggunakan API pemberitahuan push yang dipicu oleh HTTP POST sederhana ke Blynk API.

Langkah 3: Mengukur Konsumsi Daya dan Memperkirakan Masa Pakai Baterai

Mengukur Konsumsi Daya dan Memperkirakan Masa Pakai Baterai
Mengukur Konsumsi Daya dan Memperkirakan Masa Pakai Baterai

Chip ESP32 diiklankan memiliki konsumsi daya yang sangat rendah saat dalam tidur nyenyak (serendah 5uA). Sayangnya, sirkuit pada banyak papan pengembangan yang berbeda memberikan karakteristik konsumsi daya yang sangat berbeda - tidak semua papan pengembang ESP32 dibuat sama. Misalnya, ketika saya pertama kali memulai proyek ini, saya menggunakan Sparkfun ESP32 Thing yang akan menghabiskan sekitar 1mA daya dalam mode tidur nyenyak (bahkan setelah menonaktifkan LED daya). Sejak itu saya telah menggunakan Lolin32 (bukan versi Lite) di mana saya mengukur arus 144.5uA saat dalam mode tidur nyenyak. Untuk melakukan pengukuran ini, saya cukup menghubungkan multimeter secara seri dengan baterai dan perangkat. Ini tentu lebih mudah dilakukan saat membuat prototipe dengan papan tempat memotong roti. Saya juga mengukur penggunaan saat ini saat perangkat terjaga:

  • Tidur nyenyak: 144.5uA
  • Bangun: 45mA
  • Wifi diaktifkan: 150mA

Dengan asumsi saya menggunakan mesin dua kali seminggu, saya memperkirakan waktu berikut untuk waktu yang dihabiskan sensor di setiap keadaan:

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

Dari angka-angka ini, kita bisa memperkirakan berapa lama baterai akan bertahan. Saya menggunakan kalkulator praktis ini untuk mendapatkan konsumsi daya rata-rata 0,2mA. Perkiraan masa pakai baterai adalah 201 hari atau sekitar 6 bulan! Pada kenyataannya saya telah menemukan perangkat akan berhenti bekerja setelah sekitar 2 bulan sehingga mungkin ada beberapa kesalahan dalam pengukuran atau kapasitas baterai.

Langkah 4: Mengukur Tingkat Baterai

Mengukur Tingkat Baterai
Mengukur Tingkat Baterai
Mengukur Tingkat Baterai
Mengukur Tingkat Baterai

Saya pikir akan lebih baik jika perangkat dapat memberi tahu saya ketika baterai hampir habis sehingga saya tahu kapan harus mengisinya. Untuk mengukur ini kita perlu mengukur tegangan baterai. Baterai memiliki rentang tegangan 4.3V - 2.2V (tegangan operasi minimum ESP32). Sayangnya, rentang tegangan pin ADC ESP32 adalah 0-3.3V. Ini berarti, kita perlu menurunkan tegangan baterai dari maksimum 4,3 menjadi 3,3 untuk menghindari beban berlebih pada ADC. Ini dapat dilakukan dengan pembagi tegangan. Cukup sambungkan dua resistor dengan nilai yang sesuai dari baterai ke ground dan ukur tegangan di tengahnya.

Sayangnya, rangkaian pembagi tegangan sederhana akan menguras daya dari baterai bahkan ketika tegangan tidak sedang diukur. Anda dapat mengurangi ini dengan menggunakan resistor bernilai tinggi tetapi sisi negatifnya adalah ADC mungkin tidak dapat menarik arus yang cukup untuk melakukan pengukuran yang akurat. Saya memutuskan untuk menggunakan resistor dengan nilai 100kΩ dan 330kΩ yang akan turun 4.3V ke 3.3V sesuai dengan rumus pembagi tegangan ini. Mengingat hambatan total 430kΩ, kita akan mengharapkan penarikan arus sebesar 11,6uA (menggunakan hukum Ohm). Mengingat penggunaan deep sleep kami saat ini adalah 144uA, ini merupakan peningkatan yang cukup signifikan.

Karena kita hanya ingin mengukur tegangan baterai sekali sebelum mengirim pemberitahuan, masuk akal untuk mematikan rangkaian pembagi tegangan selama kita tidak mengukur apa pun. Untungnya, kita dapat melakukan ini dengan beberapa transistor yang terhubung ke salah satu pin GPIO. Saya menggunakan sirkuit yang diberikan dalam jawaban stackexchange ini. Anda dapat melihat saya menguji sirkuit dengan Arduino dan papan tempat memotong roti di foto di atas (perhatikan ada kesalahan di sirkuit yang merupakan alasan saya mengukur tegangan yang lebih tinggi dari yang diharapkan).

Dengan rangkaian di atas, saya menggunakan kode semu berikut untuk mendapatkan nilai persentase baterai:

persentase baterai():

# mengaktifkan rangkaian tegangan baterai gpio_set_level(BATTERY_EN_PIN, HIGH) # Tingkat baterai dikembalikan sebagai bilangan bulat antara 0 dan 4095 adc_value = adc1_get_value(ADC_PIN) # mengaktifkan rangkaian tegangan baterai gpio_set_level(BATTERY_EN_PIN, RENDAH) float adc_voltage = adc_value * 3.3 tegangan pembagi menggunakan resistor 100k / 330k ohm # 4.3V -> 3.223, 2.4 -> 1.842 ekspektasi_maks = 4,3*330/(100+330) ekspektasi_min = 2,4*330/(100+330) level_baterai = (adc_voltage-expected_min)/(expected_max -expected_min) kembalikan battery_level * 100.0

Langkah 5: Membuatnya Lebih Cantik

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

Sementara versi papan tempat memotong roti berfungsi dengan baik, saya ingin memasukkannya ke dalam paket yang lebih rapi dan lebih andal (tidak ada kabel yang bisa lepas atau putus). Saya berhasil menemukan kotak proyek yang sempurna untuk kebutuhan saya dengan ukuran yang tepat, termasuk papan pin, pegangan pemasangan, dan sekrup untuk menyatukan semuanya. Juga, itu sangat murah dengan harga kurang dari £2. Setelah menerima kotak, yang harus saya lakukan adalah menyolder komponen ke papan pin.

Mungkin bagian tersulit dari ini adalah memasang semua komponen rangkaian tegangan baterai ke ruang kecil di sebelah Lolin32. Untungnya dengan sedikit jiggery pokery dan koneksi yang sesuai yang dibuat dengan solder, sirkuitnya cocok dengan rapi. Juga, karena Wemos Lolin32 tidak memiliki pin untuk mengekspos terminal baterai positif, saya harus menyolder kabel dari konektor baterai ke papan pin.

Saya juga menambahkan LED yang berkedip ketika perangkat mendeteksi gerakan.

Langkah 6: Sentuhan Akhir

Image
Image
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir

Saya menempelkan magnet neodymium 4 6mm x 4mm super ke dasar kotak yang memungkinkannya menempel dengan aman ke bagian atas logam mesin cuci.

Kotak proyek sudah dilengkapi dengan lubang kecil untuk menyediakan akses kabel. Untungnya, saya dapat menempatkan papan ESP32 di dekat lubang ini untuk memberikan akses ke konektor micro USB. Setelah memperbesar lubang dengan pisau kerajinan, kabel sangat pas untuk memudahkan pengisian baterai.

Jika Anda tertarik dengan salah satu detail proyek ini, silakan tinggalkan komentar. Jika Anda ingin melihat kodenya, silakan periksa di Github:

github.com/alexspurling/washingmachine

Direkomendasikan: