Სარჩევი:

სარეცხი მანქანის შეტყობინების სენსორი: 6 ნაბიჯი (სურათებით)
სარეცხი მანქანის შეტყობინების სენსორი: 6 ნაბიჯი (სურათებით)

ვიდეო: სარეცხი მანქანის შეტყობინების სენსორი: 6 ნაბიჯი (სურათებით)

ვიდეო: სარეცხი მანქანის შეტყობინების სენსორი: 6 ნაბიჯი (სურათებით)
ვიდეო: როგორ გავასუფთავოთ სარეცხის მანქანა 2024, ნოემბერი
Anonim
Image
Image
Პროტოტიპი
Პროტოტიპი

ეს სარეცხი მანქანის სენსორი ზის ჩემი სარეცხი მანქანის თავზე და იყენებს ამაჩქარებელს აპარატიდან ვიბრაციის დასადგენად. როდესაც ის გრძნობს, რომ სარეცხი ციკლი დასრულებულია, ის გამომიგზავნის შეტყობინებას ჩემს ტელეფონზე. მე ავაშენე ეს იმიტომ, რომ მანქანა აღარ ასხამს სიგნალს დასრულების შემდეგ და დავიღალე სამრეცხაოს ამოღების დავიწყებით.

კოდი შეგიძლიათ იხილოთ აქ:

ნაწილების სრული სია:

  • WEMOS LOLIN32
  • ნახევრად ზომის პური (პროტოტიპისთვის)
  • ABS პროექტის ყუთი მატრიცის დაფით 59x88x30 მმ
  • Sparkfun LIS3DH - სამმაგი ღერძის აქსელერომეტრის გარღვევა
  • 1x ZVP3306A P-channel MOSFET, 160 mA, 60 V, 3-Pin E-Line
  • 1x BC549B TO92 30V NPN ტრანზისტორი
  • 5 მმ LED ლურჯი 68 მკდ
  • 1x 100k 0.125W CF რეზისტორი
  • 1x 330k 0.125W CF რეზისტორი
  • 2x 10k 0.250W CF რეზისტორი
  • 1x 100 0.250W CF რეზისტორი
  • 2 პინიანი ქალი JST PH- სტილის კაბელი (14 სმ)
  • 4x M1219-8 ნეოდიმი დისკი მაგნიტი 6x4 მმ

ნაბიჯი 1: პროტოტიპი

Პროტოტიპი
Პროტოტიპი

მოწყობილობა იყენებს ESP32 მიკროკონტროლერს. ამ შემთხვევაში მე ვიყენებ Lemon32 განვითარების დაფას Wemos– დან, რომლის შეძენაც შეგიძლიათ AliExpress– ზე დაახლოებით 7 დოლარად. ამაჩქარებელი არის Sparkfun LIS3DH - მნიშვნელოვანია, რომ ამაჩქარებელი არის ციფრული და არა ანალოგური, როგორც მოგვიანებით ნახავთ. ბატარეა ავიღე bluetooth დინამიკების ძველი კომპლექტიდან.

ESP32 უკავშირდება ამაჩქარებელს I2C საშუალებით. კოდის პირველმა ვერსიამ უბრალოდ გამოიკვლია სამი აჩქარების ღერძი (x, y და z) გაზომილი აჩქარების მნიშვნელობისათვის ყოველ 20 ms. პურის დაფის პროტოტიპის განთავსება სარეცხ მანქანაზე და მე გავაკეთე ზემოთ მოცემული დიაგრამა, რომელიც აჩვენებს აჩქარების პიკს სარეცხის ციკლის სხვადასხვა ფაზაში. ის მწვერვალები, სადაც აბსოლუტური აჩქარება იყო 125 მგ -ზე მეტი (ნორმალური სიმძიმის 125 ათასი ნაწილი) ნაჩვენებია ნარინჯისფერში. ჩვენ გვსურს გამოვავლინოთ ეს პერიოდები და გამოვიყენოთ ისინი სარეცხი მანქანის სტატუსის დასადგენად.

როგორ განვსაზღვროთ მანქანა ჩართულია თუ გამორთული?

ამ მოწყობილობის შექმნის ერთ -ერთი მიზანი იყო ის, რომ ის იქნებოდა მთლიანად პასიური. ანუ არ უნდა დააჭიროთ ღილაკებს; ის უბრალოდ იმუშავებდა ის ასევე უნდა იყოს ძალიან დაბალი სიმძლავრის, რადგან ჩემს შემთხვევაში სარეცხი მანქანაზე დენის კაბელების გაშლა ნამდვილად არ შეიძლებოდა.

საბედნიეროდ LIS3DH აქსელერომეტრს აქვს ფუნქცია, როდესაც მას შეუძლია გამოიწვიოს შეფერხება, როდესაც აჩქარება გადააჭარბებს მოცემულ ზღურბლს (გაითვალისწინეთ, რომ ეს მოითხოვს ამაჩქარებლის ჩამონტაჟებული მაღალგამტარი ფილტრის გამოყენებას-იხილეთ კოდი Github– ზე დაწვრილებით) და ESP32– ის გაღვიძება მისი ღრმა ძილის რეჟიმიდან წყვეტის საშუალებით. ჩვენ შეგვიძლია გამოვიყენოთ მახასიათებლების ეს კომბინაცია ძალიან დაბალი სიმძლავრის ძილის რეჟიმის შესაქმნელად, რომელიც გამოწვეულია მოძრაობით.

ფსევდო კოდი ასე გამოიყურება:

# მოწყობილობის გაღვიძება

notification_threshold = 240 მრიცხველი = 10 აქსელერომეტრი. დადგენა () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

აქ თქვენ ხედავთ, რომ ჩვენ ვიყენებთ მრიცხველს იმის დასადგენად, თუ რამდენი წამიანი აჩქარება აღმოვაჩინეთ გაღვიძების მიმდინარე პერიოდში. თუ მრიცხველი ნულამდე დაეცა, ჩვენ შეგვიძლია დავუბრუნოთ მოწყობილობა ძილს. თუ მრიცხველი მიაღწევს 240 -ს (შეტყობინების ბარიერი), მაშინ ეს ნიშნავს, რომ ჩვენ ვიპოვნეთ ვიბრაციის 4 წუთი. ჩვენ შეგვიძლია შეცვალოთ ამ ზღურბლების მნიშვნელობები, რათა დავრწმუნდეთ, რომ მოწყობილობა სწორად ამოიცნობს ბრუნვის საბოლოო ციკლს. მას შემდეგ რაც გამოვლენილია საკმარისი ვიბრაცია, ჩვენ შეგვიძლია უბრალოდ ვიძინოთ კიდევ 5 წუთი (ჩემს შემთხვევაში ეს არის რამდენი დრო სჭირდება რეცხვის ფაქტობრივად დასრულებას) შეტყობინების გაგზავნამდე.

ნაბიჯი 2: შეტყობინების გაგზავნა ბლინკის საშუალებით

შეტყობინების გაგზავნა ბლინკის საშუალებით
შეტყობინების გაგზავნა ბლინკის საშუალებით

ბლინკი არის სერვისი, რომელიც შექმნილია იმისთვის, რომ შესაძლებელი გახადოს IoT მოწყობილობებთან ინტერაქცია თქვენი ტელეფონის აპლიკაციით. ამ შემთხვევაში, მე ვიყენებ push შეტყობინების API– ს, რომელიც გამოწვეულია მარტივი HTTP POST– ით Blynk API– ზე.

ნაბიჯი 3: ენერგიის მოხმარების გაზომვა და ბატარეის ხანგრძლივობის შეფასება

ენერგიის მოხმარების გაზომვა და ბატარეის ხანგრძლივობის შეფასება
ენერგიის მოხმარების გაზომვა და ბატარეის ხანგრძლივობის შეფასება

ESP32 ჩიპი რეკლამირებულია, როგორც ძალიან დაბალი ენერგიის მოხმარება ღრმა ძილში (მინიმუმ 5uA). სამწუხაროდ, მრავალი სხვადასხვა განვითარების დაფაზე არსებული სქემა უზრუნველყოფს ენერგიის მოხმარების ძალიან განსხვავებულ მახასიათებლებს - ყველა ESP32 dev დაფა არ არის შექმნილი თანაბრად. მაგალითად, როდესაც მე პირველად დავიწყე ეს პროექტი, მე გამოვიყენე Sparkfun ESP32 Thing, რომელიც მოიხმარდა დაახლოებით 1 mA ენერგიას ღრმა ძილის რეჟიმში (ელექტროენერგიის LED გამორთვის შემდეგაც კი). მას შემდეგ ვიყენებ Lolin32- ს (არა Lite ვერსიას), რომელზეც ღრმა ძილის რეჟიმში გავზომე 144.5uA დენი. ამ გაზომვის გასაკეთებლად, მე უბრალოდ მავთულხლართების სერია დავუკავშირე ბატარეას და მოწყობილობას. ამის გაკეთება რა თქმა უნდა უფრო ადვილია პურის დაფის პროტოტიპირებისას. მე ასევე გავზომე ამჟამინდელი გამოყენება, როდესაც მოწყობილობა გაღვიძებულია:

  • ღრმა ძილი: 144.5uA
  • გაიღვიძეთ: 45 mA
  • Wi -Fi ჩართულია: 150mA

ვივარაუდოთ, რომ მე ვიყენებ მანქანას კვირაში ორჯერ, მე შევაფასე შემდეგი ვადები იმ დროისათვის, როდესაც სენსორი ხარჯავს თითოეულ შტატში:

  • ღრმა ძილი: 604090 წამი (week 1 კვირა)
  • გაღვიძება: 720 წამი (12 წთ)
  • Wi -Fi ჩართულია: 10 წამი

ამ ციფრების მიხედვით, ჩვენ შეგვიძლია შევაფასოთ რამდენ ხანს გაგრძელდება ბატარეა. მე გამოვიყენე ეს მოსახერხებელი კალკულატორი საშუალო ენერგიის მოხმარებისთვის 0.2 mA. ბატარეის სავარაუდო ხანგრძლივობაა 201 დღე ან დაახლოებით 6 თვე! სინამდვილეში მე აღმოვაჩინე, რომ მოწყობილობა შეწყვეტს მუშაობას დაახლოებით 2 თვის შემდეგ, ასე რომ შეიძლება იყოს შეცდომები გაზომვებში ან ბატარეის სიმძლავრეში.

ნაბიჯი 4: ბატარეის დონის გაზომვა

ბატარეის დონის გაზომვა
ბატარეის დონის გაზომვა
ბატარეის დონის გაზომვა
ბატარეის დონის გაზომვა

ვფიქრობდი, კარგი იქნებოდა თუ მოწყობილობას შეეძლო მითხრა, როდესაც ბატარეა იწურება, ასე რომ მე ვიცი როდის დავტენო. ამის გასაზომად საჭიროა ბატარეის ძაბვის გაზომვა. ბატარეას აქვს ძაბვის დიაპაზონი 4.3V - 2.2V (ESP32– ის მინიმალური საოპერაციო ძაბვა). სამწუხაროდ, ESP32– ის ADC ქინძისთავების ძაბვის დიაპაზონი არის 0-3.3 ვ. ეს ნიშნავს, რომ ჩვენ გვჭირდება ძაბვის შემცირება მისი მაქსიმალური 4.3 -დან 3.3 -მდე, რათა თავიდან ავიცილოთ ADC- ის გადატვირთვა. ეს შესაძლებელია ძაბვის გამყოფთან ერთად. უბრალოდ მიამაგრეთ ორი რეზისტორი შესაბამისი მნიშვნელობებით ბატარეიდან მიწამდე და გაზომეთ ძაბვა შუაზე.

სამწუხაროდ, მარტივი ძაბვის გამყოფი წრე ამოწურავს ენერგიას ბატარეიდან მაშინაც კი, როდესაც ძაბვა არ იზომება. ამის შემსუბუქება შეგიძლიათ მაღალი ღირებულების რეზისტორების გამოყენებით, მაგრამ ქვემოთ არის ის, რომ ADC– მ შეიძლება ვერ შეძლოს საკმარისი დენის დახატვა ზუსტი გაზომვისთვის. მე გადავწყვიტე გამოვიყენო რეზისტორები 100kΩ და 330kΩ მნიშვნელობებით, რომლებიც ძაბვის გამყოფი ფორმულის მიხედვით 4.3 ვ -დან 3.3 ვ -მდე დაეცემა. 430kΩ– ს საერთო წინააღმდეგობის გათვალისწინებით, ჩვენ ველოდებით მიმდინარე გათამაშებას 11.6uA (ომის კანონის გამოყენებით). იმის გათვალისწინებით, რომ ჩვენი ღრმა ძილის ამჟამინდელი გამოყენებაა 144uA, ეს გონივრულად მნიშვნელოვანი ზრდაა.

რადგან ჩვენ გვსურს მხოლოდ ერთხელ გავზომოთ ბატარეის ძაბვა შეტყობინების გაგზავნამდე, აზრი აქვს გამორთოთ ძაბვის გამყოფი წრე იმ დროს, როდესაც ჩვენ არაფერს ვზომავთ. საბედნიეროდ, ჩვენ შეგვიძლია ამის გაკეთება რამოდენიმე ტრანზისტორით, რომლებიც დაკავშირებულია GPIO– ს ერთ – ერთ პინთან. მე გამოვიყენე წრე, რომელიც მოცემულია ამ სტაკის გაცვლის პასუხში. თქვენ ხედავთ, რომ მე ვამოწმებ სქემას არდუინოთი და პურის დაფაზე ზემოთ მოცემულ ფოტოში (გაითვალისწინეთ, რომ წრეში არის შეცდომა, რის გამოც მე ვზომავ იმაზე მაღალ ძაბვას, ვიდრე მოსალოდნელი იყო).

ზემოაღნიშნული სქემის ადგილზე, მე ვიყენებ შემდეგ ფსევდო კოდს ბატარეის პროცენტული მნიშვნელობის მისაღებად:

ბატარეის_ პროცენტი ():

# ჩართეთ ბატარეის ძაბვის წრე gpio_set_level (BATTERY_EN_PIN, HIGH) # ბატარეის დონე ბრუნდება მთელი რიცხვით 0 და 4095 შორის გამყოფი იყენებს 100k/330k ohm რეზისტორებს # 4.3V -> 3.223, 2.4 -> 1.842 მოსალოდნელი_მაქსი = 4.3*330/(100+330) მოსალოდნელი_ წთ = 2.4*330/(100+330) ბატარეის_ დონე = (adc_voltage -მოსალოდნელი_წთ)/(მოსალოდნელი_მაქსი -მოსალოდნელი_წთ) დააბრუნეთ ბატარეის დონე * 100.0

ნაბიჯი 5: გახადეთ უფრო ლამაზი

რაც უფრო ლამაზია
რაც უფრო ლამაზია
რაც უფრო ლამაზია
რაც უფრო ლამაზია
რაც უფრო ლამაზია
რაც უფრო ლამაზია

მიუხედავად იმისა, რომ პურის დაფის ვერსია მშვენივრად მუშაობს, მე მინდოდა მისი შეტანა პაკეტში, რომელიც იქნებოდა უფრო სუფთა და საიმედო (მავთულის გარეშე, რომელიც შეიძლება ამოვარდეს ან მოკლედ გამოვიდეს). მე მოვახერხე ჩემი საჭიროებების სრულყოფილი პროექტის ყუთის პოვნა, რომელიც იყო სწორი ზომა, მოიცავდა ქინძისთავს, სამონტაჟო საყრდენებს და ხრახნებს, რომ ეს ყველაფერი ერთად დამეყენებინა. ასევე, ის იაფი იყო 2 ფუნტზე ნაკლები. ყუთის მიღების შემდეგ, ყველაფერი რაც მე უნდა გამეკეთებინა იყო კომპონენტების ჩასმა პინზე.

ალბათ ამაში ყველაზე რთული ნაწილი იყო ბატარეის ძაბვის მიკროსქემის ყველა კომპონენტის განთავსება Lolin32– ის გვერდით მდებარე მცირე სივრცეში. საბედნიეროდ, ცოტა ჯიგრული პოკერითა და შესაერთებლით დამზადებული შესაბამისი კავშირებით, წრე კარგად ჯდება. ასევე, ვინაიდან Wemos Lolin32– ს არ აქვს პინი დადებითი ბატარეის ტერმინალის გამოსავლენად, მე მომიწია ბატარეის კონექტორიდან მავთულის შეკვრა პინ დაფაზე.

მე ასევე დავამატე LED, რომელიც ანათებს, როდესაც მოწყობილობა ამოიცნობს მოძრაობას.

ნაბიჯი 6: შეხების დასრულება

Image
Image
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება

ყუთის ძირზე დავამაგრე 4 ნეომიმიუმის 4 6 მმ x 4 მმ მაგნიტი, რაც მას საშუალებას აძლევს უსაფრთხოდ დაიჭიროს სარეცხი მანქანის ლითონის თავზე.

პროექტის ყუთს უკვე გააჩნია პატარა ხვრელი, რათა უზრუნველყოს კაბელების დაშვება. საბედნიეროდ, მე შევძელი ESP32 დაფის განთავსება ამ ხვრელთან ახლოს, რათა მიმეღო წვდომა მიკრო USB კონექტორზე. ხელნაკეთი დანით ხვრელის გაფართოების შემდეგ, კაბელი იდეალურად ჯდება ბატარეის ადვილად დატენვის საშუალებას.

თუ თქვენ დაინტერესებული ხართ ამ პროექტის რომელიმე დეტალით, გთხოვთ დატოვეთ კომენტარი. თუ გსურთ კოდის ნახვა, გთხოვთ გადაამოწმოთ ის Github– ზე:

github.com/alexspurling/washingmachine

გირჩევთ: