Mündəricat:
- Addım 1: Prototip
- Addım 2: Blynk vasitəsilə bir bildiriş göndərmək
- Addım 3: Enerji İstehsalını Ölçmək və Batareya Ömrünü Hesablamaq
- Addım 4: Batareya səviyyəsinin ölçülməsi
- Addım 5: Daha gözəl etmək
- Addım 6: Toxunuşları bitirmək
Video: Paltaryuyan maşın bildiriş sensoru: 6 addım (şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bu paltaryuyan maşın sensoru paltaryuyan maşının üstündə oturur və maşından gələn titrəməni aşkar etmək üçün akselerometrdən istifadə edir. Yuma dövrünün bitdiyini hiss edəndə telefonuma mənə bir bildiriş göndərir. Bunu qurdum, çünki maşın bitdikdə artıq səs siqnalı vermir və çamaşırları çıxarmağı unutmaqdan bezmişəm.
Kodu burada tapa bilərsiniz:
Tam hissə siyahısı:
- WEMOS LOLIN32
- Yarım ölçülü Çörək Paneli (prototip hazırlamaq üçün)
- 59x88x30 mm Matrix Board ilə ABS Layihə Kutusu
- Sparkfun LIS3DH - Üç Eksenli Accelerometer Breakout
- 1x ZVP3306A P-kanallı MOSFET, 160 mA, 60 V, 3 Pinli E-Xətti
- 1x BC549B TO92 30V NPN Transistor
- 5 mm LED Mavi 68 mcd
- 1x 100k 0.125W CF Rezistor
- 1x 330k 0.125W CF Rezistor
- 2x 10k 0.250W CF Rezistor
- 1x 100 0.250W CF Rezistor
- 2 Pinli Qadın JST PH-Style Kabel (14 sm)
- 4x M1219-8 Neodim Disk Maqnit 6x4mm
Addım 1: Prototip
Cihaz ESP32 mikro nəzarətçisindən istifadə edir. Bu vəziyyətdə, AliExpress -də təxminən 7 dollara satın ala biləcəyiniz Wemos Lolin32 inkişaf etdirmə lövhəsindən istifadə edirəm. Sürətölçən Sparkfun LIS3DH -dir, akselerometrin daha sonra görəcəyiniz kimi analoqdan çox rəqəmsal olması vacibdir. Köhnə bir bluetooth hoparlör dəstindən aldığım batareya.
ESP32, akselerometrə I2C vasitəsilə qoşulur. Kodun ilk versiyası, hər 20ms -də ölçülən sürətlənmə dəyəri üçün üç sürətləndirmə oxunu (x, y və z) sorğu etdi. Çörək taxtasının prototipini paltaryuyan maşının üzərinə qoyaraq, yuma dövrünün müxtəlif mərhələlərində sürətlənmə zirvələrini göstərən yuxarıdakı qrafiki hazırladım. Mütləq sürətlənmənin 125 mq -dan (normal cazibə qüvvəsinin 125 mində biri) çox olduğu zirvələr narıncı rəngdə göstərilmişdir. Bu dövrləri aşkar edərək onlardan istifadə edərək paltaryuyan maşının vəziyyətini təyin etmək istəyirik.
Cihazın açıldığını və ya söndürüldüyünü necə təyin etmək olar?
Bu cihazı qurmağın məqsədlərindən biri, tamamilə passiv olması idi. Yəni heç bir düyməyə basılmamalıdır; sadəcə işləyəcəkdi. Güc kabellərini paltaryuyan maşına uzatmaq həqiqətən mümkün olmadığı üçün çox aşağı gücə sahib olmalıdır.
Xoşbəxtlikdən, LIS3DH sürətölçən, sürətlənmə müəyyən bir həddi keçdikdə bir fasilə verə biləcək bir xüsusiyyətə malikdir (unutmayın ki, bu, accelerometerin quraşdırılmış yüksək ötürücü filtrindən istifadə etməyi tələb edir-ətraflı məlumat üçün Githubdakı koda baxın) və ESP32 oyandırıla bilər fasilə ilə dərin yuxu rejimindən çıxa bilər. Bu xüsusiyyətlərin birləşməsindən istifadə edərək hərəkətlə tetiklenen çox aşağı güclü yuxu rejimi yarada bilərik.
Yalançı kod belə görünür:
# Cihaz oyanır
reports_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: accelerometer.above_threshold (): counter ++ else: counter- if counter> notification_threshold: # final spin cycle yuxu (1 saniyə) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()
Burada görə bilərsiniz ki, cari oyanış dövründə neçə saniyə sürətlənmə aşkar etdiyimizi müəyyən etmək üçün sayğacdan istifadə edirik. Sayğac sıfıra düşərsə, cihazı yenidən yuxuya qoya bilərik. Sayğac 240 -a çatırsa (bildiriş həddi), bu o deməkdir ki, 4 dəqiqəlik titrəmə aşkarladıq. Cihazın son dönmə dövrünü düzgün algıladığından əmin olmaq üçün bu eşiklərin dəyərlərini dəyişə bilərik. Kifayət qədər titrəmə aşkar edildikdən sonra, bildiriş göndərməzdən əvvəl başqa 5 dəqiqə daha yata bilərik (mənim vəziyyətimdə bu, yuyulmanın sona çatması üçün lazım olan müddətdir).
Addım 2: Blynk vasitəsilə bir bildiriş göndərmək
Blynk, telefonunuzdakı bir tətbiq ilə IoT cihazları ilə qarşılıqlı əlaqə qurmaq üçün hazırlanmış bir xidmətdir. Bu vəziyyətdə, Blynk API -yə sadə bir HTTP POST tərəfindən tetiklenen push bildiriş API -dən istifadə edirəm.
Addım 3: Enerji İstehsalını Ölçmək və Batareya Ömrünü Hesablamaq
ESP32 çipi, dərin yuxuda olduqda (5uA qədər aşağı) çox az enerji istehlakı ilə reklam olunur. Təəssüf ki, bir çox fərqli inkişaf lövhəsindəki sxemlər çox fərqli enerji istehlakı xüsusiyyətlərini təmin edir - bütün ESP32 inkişaf lövhələri bərabər yaradılmır. Məsələn, bu layihəyə ilk başladığımda, dərin yuxu rejimində (güc LED -i söndürüldükdən sonra da) təxminən 1mA güc sərf edəcək Sparkfun ESP32 Thing -dən istifadə etdim. O vaxtdan bəri dərin yuxu rejimində 144.5uA cərəyanı ölçdüyüm Lolin32 (Lite versiyası deyil) istifadə edirəm. Bu ölçməni etmək üçün sadəcə batareya və cihazla birlikdə bir multimetr bağladım. Çörək taxtası ilə prototip hazırlayarkən bunu etmək əlbəttə daha asandır. Cihaz oyandığında cari istifadəni də ölçdüm:
- Dərin yuxu: 144.5uA
- Oyanış: 45mA
- Wifi aktivdir: 150mA
Maşını həftədə iki dəfə istifadə etdiyimi fərz etsəm, sensorun hər vəziyyətdə sərf etdiyi vaxt üçün aşağıdakı vaxtları təxmin etdim:
- Dərin yuxu: 604090 saniyə (~ 1 həftə)
- Oyanış: 720 saniyə (12 dəqiqə)
- Wifi aktivdir: 10 saniyə
Bu rəqəmlərdən, batareyanın nə qədər davam edəcəyini təxmin edə bilərik. 0.2mA orta enerji istehlakı əldə etmək üçün bu lazımlı kalkulyatordan istifadə etdim. Təxmini batareya ömrü 201 gün və ya təxminən 6 aydır! Əslində cihazın təxminən 2 ay sonra işləməyəcəyini gördüm, buna görə ölçülərdə və ya batareyanın tutumunda bəzi səhvlər ola bilər.
Addım 4: Batareya səviyyəsinin ölçülməsi
Cihazın batareyanın tükəndiyini söyləsəydi yaxşı olardı deyə düşünürəm ki, nə vaxt doldurmalıyam. Bunu ölçmək üçün batareyanın gərginliyini ölçməliyik. Batareya 4.3V - 2.2V gərginlik aralığına malikdir (ESP32 minimum iş gərginliyi). Təəssüf ki, ESP32-nin ADC pinlərinin gərginlik aralığı 0-3.3V-dir. Bu o deməkdir ki, ADC -ni həddindən artıq yükləməmək üçün batareyanın gərginliyini maksimum 4.3 -dən 3.3 -ə endirməliyik. Bir gərginlik bölücü ilə bunu etmək mümkündür. Batareyadan yerə uyğun dəyərləri olan iki rezistoru bağlayın və ortadakı gərginliyi ölçün.
Təəssüf ki, sadə bir gərginlik bölücü dövrə, gərginlik ölçülməsə belə batareyadan enerjini boşaldır. Yüksək dəyərli rezistorlar istifadə edərək bunu azalda bilərsiniz, lakin aşağı tərəfi odur ki, ADC dəqiq ölçmə aparmaq üçün kifayət qədər cərəyan çəkə bilməz. Bu gərginlik bölücü formuluna görə 4.3V -dan 3.3V -ə düşəcək 100kΩ və 330kΩ dəyərli rezistorlardan istifadə etmək qərarına gəldim. Ümumi 430kΩ müqavimətini nəzərə alsaq, cari 11.6uA (Ohm qanunu ilə) çəkilişini gözləyərdik. Dərin yuxumuzda cari istifadənin 144uA olduğunu nəzərə alsaq, olduqca əhəmiyyətli bir artımdır.
Batareya gərginliyini bildiriş göndərməzdən əvvəl yalnız bir dəfə ölçmək istədiyimiz üçün, heç bir şey ölçmədiyimiz müddət ərzində gərginlik bölücü dövrəni söndürməyin mənası var. Xoşbəxtlikdən, bunu GPIO pinlərindən birinə qoşulmuş bir neçə tranzistorla edə bilərik. Bu stackexchange cavabında verilən dövrəni istifadə etdim. Yuxarıdakı fotoşəkildə bir Arduino və bir çörək taxtası ilə dövrə sınadığımı görə bilərsiniz (unutmayın ki, gözləniləndən daha yüksək bir gərginlik ölçməyimə səbəb olan dövrədə bir səhv var).
Yuxarıda göstərilən dövrə yerində olduqda, batareya faiz dəyərini əldə etmək üçün aşağıdakı yalançı kodu istifadə edirəm:
batareya_sayı ():
# batareya gərginliyi dövrəsini aktivləşdirmək gpio_set_level (BATTERY_EN_PIN, HIGH) # Batareya səviyyəsi 0 ilə 4095 arasında bir ədəd olaraq qaytarılır adc_value = adc1_get_value (ADC_PIN) bölücü 100k/330k ohm rezistorlardan istifadə edir # 4.3V -> 3.223, 2.4 -> 1.842 gözlənilən_max = 4.3*330/(100+330) gözlənilən_min = 2.4*330/(100+330) batareya səviyyəsi = (adc_voltage -gözlənilən_min)/(gözlənilən_max -gözlənilən_dəqiqə) batareya səviyyəsinə qayıt * 100.0
Addım 5: Daha gözəl etmək
Çörək taxtası versiyası yaxşı işləsə də, daha səliqəli və daha etibarlı olacaq bir paketə qoymaq istədim (boşa çıxa bilən və ya kəsilə bilən tellər yoxdur). İstənilən ölçüdə bir pin lövhəsi, montaj tutacaqları və vintləri bir araya gətirmək üçün ehtiyaclarım üçün mükəmməl bir layihə qutusu tapmağı bacardım. Həm də 2 funt sterlinqdən ucuz qiymətə öldü. Qutunu aldıqdan sonra, etməli olduğum şey komponentləri pin lövhəsinə lehimləmək idi.
Bəlkə də bunun ən hiyləgər tərəfi, batareyanın gərginlik dövrəsinin bütün komponentlərini Lolin32 -nin yanındakı kiçik yerə yerləşdirmək idi. Neyse ki, bir az qarmaqarışıq pokery və lehimlə edilən uyğun bağlantılar ilə dövrə səliqəli şəkildə uyğun gəlir. Ayrıca, Wemos Lolin32 -də müsbət batareya terminalını açmaq üçün bir pin olmadığı üçün, batareya konnektorundan pin lövhəsinə bir tel lehim etməli oldum.
Cihazın hərəkəti aşkar etdikdə yanıb -sönən bir LED də əlavə etdim.
Addım 6: Toxunuşları bitirmək
Qutunun altına 4 ədəd 6 mm x 4 mm ölçülü neodim maqnitləri yapışdırdım ki, bu da paltaryuyan maşının metal səthinə etibarlı şəkildə yapışa bilər.
Layihə qutusu artıq kabellərə giriş təmin etmək üçün kiçik bir çuxurla gəlir. Xoşbəxtlikdən, mikro USB konnektoruna daxil olmaq üçün ESP32 lövhəsini bu çuxura yaxın yerləşdirə bildim. Bıçaqla dəliyi genişləndirdikdən sonra, kabel batareyanın asanlıqla doldurulmasını təmin etmək üçün mükəmməl uyğun gəlir.
Bu layihənin detallarından hər hansı biri ilə maraqlanırsınızsa, şərh yazmaqdan çekinmeyin. Kodu görmək istəyirsinizsə, Github -da yoxlayın:
github.com/alexspurling/washingmachine
Tövsiyə:
Paltaryuyan maşın motorunun pinlərini necə tapmaq olar: 6 addım
Paltaryuyan maşın motorunun sancaqlarını necə tapmaq olar: rəqəmsal bir multimetrin köməyi ilə paltaryuyan maşın motorunun pinlərini tapırıq. Davamlılıq test rejimində bir multimetrə və yuxarıdakı şəkildəki kimi bənzər bir universal paltaryuyan maşın motoruna ehtiyacımız var. əvvəlcə vizual yoxlama ilə başlayın
Paltaryuyan maşın bildirişləri: 3 addım
Paltaryuyan maşın bildirişləri: Təxminən 150 funt sterlinqə "lal" ucuz paltaryuyan maşınım var. Ölçü ən böyük məhdudiyyət idi, buna görə məni çox sərt mühakimə etməyin. Ailəmdəki axmaq şey mənəm. Qırmızı tuluqlarla ağ alt paltarı yumaq günahlarımdan biridir. Digəri xatırlanmır
Paltaryuyan maşın barabanı üçün yaradıcı istifadə: 5 addım
Paltaryuyan Maşın Tamburu üçün Yaradıcı İstifadələr: Bu dərslik, atılmış əşyalara alternativ bir şəkildə ilham vermək və baxmaq üçündür. Bu, mütləq təkrarlanmaq üçün deyil, ümumiyyətlə nəzərə alınmayan bir paltaryuyan maşın tamburunun mümkün istifadəsi haqqında fikir verməkdir. Mənim fokusum
Bir paltaryuyan maşın motorunu generator olaraq necə bağlamaq olar: 3 addım (şəkillərlə)
Paltaryuyan maşın motorunu generator olaraq necə tel etmək olar: paltaryuyan maşın motorunu generator və ya paltaryuyan maşın kimi necə bağlamaq olar motor generatoru məftillərinin əsasları, DC və AC enerji təchizatında universal motor naqilləri prinsipləri haqqında bir dərsdir. elektrik enerjisinə
MESH istifadə edərək paltaryuyan maşın bildirişləri: 4 addım (şəkillərlə)
MESH istifadə edərək paltaryuyan maşın bildirişləri: Vay! Paltaryuyan maşındakı paltarları unutmuşam … Yuyunduqdan sonra paltarlarınızı götürməyi həmişə unutursunuz? Bu resept paltarlarınız şəkil çəkməyə hazır olduqdan sonra Gmail və ya IFTTT vasitəsilə bildirişlər almaq üçün paltaryuyan maşınınızı təkmilləşdirəcək