Სარჩევი:

ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით: 6 ნაბიჯი
ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით: 6 ნაბიჯი

ვიდეო: ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით: 6 ნაბიჯი

ვიდეო: ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით: 6 ნაბიჯი
ვიდეო: ავტომატური გადაცემათა კოლოფი თუ ვარიატორი? 2024, ივლისი
Anonim
ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით
ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით
ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით
ავტომატური ბრმა გამხსნელი EV3– ის გამოყენებით

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

ნაბიჯი 1: პოტენციური იდეები ან გადაწყვეტილებები

სხვადასხვა საიტების დათვალიერების შემდეგ, როგორიცაა YouTube, Instructables და Thingiverse, აღმოვაჩინე, რომ ყველაზე გავრცელებული გამოსავალი იყო ბორბლის მოტორიზაცია, რომელიც ფარავდა და ფარავდა ჟალუზებს სტეპერიანი ძრავის ან სერვოს გამოყენებით. მე აღმოვაჩინე 2 ძირითადი ვარიანტი სხვადასხვა დადებითი და უარყოფითი მხარეებით.

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

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

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

ნაბიჯი 2: შეკრების გაკეთება

ასამბლეის დამზადება
ასამბლეის დამზადება
ასამბლეის დამზადება
ასამბლეის დამზადება

მე გავაკეთე ეს პროექტი ჩემი Lego mindstorms EV3– ის გამოყენებით, რომელსაც აქვს ფუნქციონალურობა, მე უნდა ვაჩვენო, რომ პროექტს შეუძლია იმუშაოს და მე ვიცნობ პროგრამულ უზრუნველყოფას, რომელიც ნამდვილად ძალიან მეხმარებოდა. ვინაიდან ბრმა იყენებს ბურთის ჯაჭვს კოჭის გადასატანად, რომელთანაც ლეგოს გადაცემათა კოლოფი შეუთავსებელია, მე გადავწყვიტე, რომ საუკეთესო გამოსავალი იყო მექანიზმის შემუშავება გარედან ბურთის სწორი ინტერვალით- სტანდარტული "ჯვრის ფორმის" ხვრელით. ცენტრი, სადაც მე მაშინ 3D ბეჭდვას დიზაინი. ამ დროს მე ასევე გავაკეთე კალიბრაციის ღილაკი და დავამატე სინათლის სენსორი ჩემს ფანჯარასთან, ასევე ღილაკი, რომელიც მოქმედებს როგორც გადახურვა.

ნაბიჯი 3: ბრმა მექანიზმის დიზაინი

ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი
ბრმა მექანიზმის დიზაინი

ბრმა დავშალე, რომ დაენახა როგორ გამოიყურებოდა ამწევი უფრო დეტალურად. დემონტაჟის დროს აღმოვაჩინე პატარა 16 კბილიანი მექანიზმი, რომელიც დაჭიმული ხვეულით დაიჭირა, ეს ის ნაწილი იყო, რომელსაც ვეძებდი. გადაცემათა კოლოფის შექმნის შემდეგ, მე დავამატე საჭირო ლეგოს თავსებადი ხვრელები, დავბეჭდე 3 ცალკეული ნაწილი და საბოლოოდ დავამატე ისინი სუპერწებებით. მე თავიდან მქონდა პრობლემები ლეგოს ნაწილის თავსებადობასთან დაკავშირებით, იმ გაგებით, რომ ჩემს 3D პრინტერს არ ჰქონდა გარჩევადობა, რომ "x" ხვრელი საკმარისად გამეკეთებინა, თუმცა მას არანაირი პრობლემა არ ჰქონდა წრიულ ხვრელებთან მის ორივე მხარეს. ასე რომ, მე შევცვალე "x" წრიული ხვრელით და ის კარგად დაბეჭდილია. შემდეგ, მცირე რაოდენობის ტესტირების შემდეგ, მე დავინახე, რომ მას შეეძლო ბრუნვის მომენტი და წონა ბრმადან. მე დავაკავშირებ ჩემს დიზაინს მექანიზმისთვის ქვემოთ, ან შეგიძლიათ იპოვოთ ის Thingiverse– ზე:

ნაბიჯი 4: ბრმების კოდირება

ბრმის კოდირება
ბრმის კოდირება

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

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

კოდი იწყება ძრავებისა და ბრმების დაკალიბრებით, დაწყებული ბრმა სრულად გახსნით და ამცირებთ მას, სანამ ბოლოში არ შეხდება სენსორი და ითვლის რამდენი მეოთხედი ბრუნს სჭირდება ბოლოში ჩასასვლელად, რომელიც ინახება როგორც "RotationsNeeded" ცვლადი. შემდეგ ის წერს "ყალბი" "BlindOpen" ცვლადს, რომელიც გამოიყენება ბრმების პოზიციის დასადგენად. ამ დროს კოდი იყოფა 4 მარყუჟად.

ერთ -ერთი ასეთი მარყუჟი არის "Buttonstate" მარყუჟი, რომელიც მუდმივად აქვეყნებს ღილაკის მდგომარეობას ცვლადში, სახელწოდებით "ButtonPressed". ეს გამორიცხავს სკრიპტზე მრავალი ღილაკის ბლოკის განთავსების აუცილებლობას.

მეორე მარყუჟი არის "სინათლე ან ბნელი", რომელიც მუდმივად ადარებს სინათლის დონეს ჩემი ფანჯრის მიღმა, კოდში ადრე განსაზღვრულ მუდმივობას. თუ შედეგი არის იმ მუდმივის ქვემოთ, მარყუჟი ჩაწერს „მცდარს“„ItIsLight“ცვლადს, ხოლო თუ ის ღირებულების ზემოთ იქნება, ის წერს „ჭეშმარიტებას“.

მესამე მარყუჟი შეიცავს 3 ვარიანტის რიცხვით ჩამონათვალს, რომელიც ძირითადად ეუბნება ბრმებს რა უნდა გააკეთონ, 0 = ბრმა ქვემოთ, 1 = ბრმა ზემოთ, 2 = არაფრის გაკეთება, რადგან ბრმა არის სწორ ადგილას. მარყუჟი იწყება „BlindShould“ცვლადის წაკითხვით, რომელიც განსაზღვრავს ბრმა პირების სწორ ამოცანას, შემდეგ ასრულებს ამ ამოცანას, ცვლის „BlindOpen“ცვლადს სწორ ვარიანტად და შემდეგ უმოქმედო ხდება, სანამ „BlindShould“ცვლადი არ შეიცვლება, სადაც ის მეორდება ის იყენებს "RotationsNeeded" მნიშვნელობას, ასევე +/- 100% ძალას ბრმის სრულად გახსნის ან დახურვის გადასატანად.

მეოთხე და ბოლო მარყუჟი არის ყველაზე რთული, ეს არის „გადამწყვეტი“მარყუჟი, რომელიც ამუშავებს ყველა მონაცემს და გადაწყვეტს რა უნდა გააკეთოს თითოეულ პერუმაციასთან. ის ამას აკეთებს ლოგიკაზე დაფუძნებული "ჩანგლები გზაზე", სადაც "ღილაკზე დაჭერილია", "განათების დონე", "ბრმა ღია" არის ჭეშმარიტი ან მცდარი კითხვები. ყველა პერმუტაციას აქვს რთული კოდირებული პასუხი, რომელიც არის 0 = ბრმა ქვემოთ, 1 = ბრმა ზემოთ ან 2 = არაფრის გაკეთება - ეს მნიშვნელობა იწერება "BlindShould" ცვლადზე, რომელსაც შემდეგ ამუშავებს წინა მარყუჟი. ზოგიერთი პასუხი შემდეგ დაელოდება "ItIsLight" და/ან "ButtonPressed" ცვლადის შეცვლას სკრიპტის დამთავრებამდე, ეს მხოლოდ ღილაკზე გააქტიურებული გადაცემების შემთხვევაშია, წინააღმდეგ შემთხვევაში ის დაუყოვნებლივ შეეცდება თავისი პოზიციის გამოსწორებას, რაც ნიშნავს რომ ბრმა დაბრუნდება პირვანდელ მდგომარეობამდე. ეს პროცესი ხდება მარყუჟის სახით, რათა შეიქმნას ძლიერი და შედარებით მარტივი ავტომატური სისტემა, რომლის ადვილად დამატება და გამოსწორება შესაძლებელია. ფუ

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

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

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

ნაბიჯი 6: პროექტის შეფასება

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

გირჩევთ: