Სარჩევი:
- ნაბიჯი 1: რაც გჭირდებათ, სანამ გჭირდებათ
- ნაბიჯი 2: რაც გჭირდებათ - აპარატურა
- ნაბიჯი 3: რაც გჭირდებათ - პროგრამული უზრუნველყოფა
- ნაბიჯი 4: SQL სერვერის მონაცემთა ბაზა
- ნაბიჯი 5: ASP.NET SignalR Hub ვებ პროგრამა
- ნაბიჯი 6: Python SignalR სერვისის კლიენტი
- ნაბიჯი 7: Arduino UNO IR გადაცემის ესკიზი და კოდი
- ნაბიჯი 8: დაკავშირება და სისტემის ტესტირება
- ნაბიჯი 9: სისტემა მოქმედებაში
- ნაბიჯი 10: ავტომატიზაციის სისტემის გაძლიერება და მასთან დაკავშირებული ცვლილებები
- ნაბიჯი 11: ცნობილი საკითხები და უსაფრთხოების საკითხები
ვიდეო: Raspberry Pi-Arduino-SignalR სახლის ავტომატიზაციის კერა: 11 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
აქ და აქ გამოქვეყნებული ჩემი რამოდენიმე პრელუდიური IBLE– ის შემდეგ, ეს პროექტი პირველ ნაბიჯს დგამს სახლის ავტომატიზაციის ცენტრის ძირითადი ვერსიის შესაქმნელად.
მე გამოვიყენე რამდენიმე განსხვავებული ტექნოლოგია, რათა გამეგო როგორ შემეძლო გამომეყენებინა ყველაფერი, რაც ვისწავლე წარსულში და ახალი რამ, რასაც ვაგრძელებ სწავლის დროს.
ამრიგად, ეს ავტომატიზაციის კერა შედგება შემდეგი კომპონენტებისგან:
SQL Server 2012 მონაცემთა ბაზა, რომელიც:
- ინახავს წინასწარ განსაზღვრული ინფრაწითელი (IR) კოდების ჩამონათვალს ცხრილში, უნიკალურ "კოდის გასაღებთან" ერთად
- კოდის გასაღებები ინტუიციურად არის დასახელებული (მომხმარებლის მიერ), რათა განსაზღვროს მათი ასოცირებული IR კოდების დანიშნულება
რეალურ დროში ASP. NET SignalR Hub ვებ პროგრამა, რომელიც:
- ელოდება და იღებს "კოდის გასაღებებს", როგორც ბრძანებებს მომხმარებლისგან, რომელიც დგას HTML კლიენტის წინაშე
- მიღებისას უკავშირდება SQL მონაცემთა ბაზას და იღებს IR კოდს მოწოდებული კოდის გამოყენებით
- აგზავნის მოძიებულ IR კოდს Python SignalR კლიენტზე
მომხმარებლის წინაშე დგას HTML SignalR Dashboard კლიენტი, რომელიც:
- გადასცემს უნიკალურ კოდს Hub– ს jQuery SignalR Client API– ების საშუალებით
- დაფის თითოეული ღილაკი წარმოადგენს SQL მონაცემთა ბაზის ცხრილში ჩაწერილ უნიკალურ კოდს
Raspberry Pi 2.0 -ზე გაშვებული Python SignalR ფონის სერვისის პროგრამა:
- იღებს IR კოდებს, როგორც ბრძანებებს ჰაბიდან
- ეძებს საზღვრებს IR კოდექსში და ყოფს ძალიან ხანგრძლივ კოდს სეგმენტებად
- კომუნიკაციას უწევს არდუინოს სერიულ პორტზე და ზედიზედ წერს თითოეულ სეგმენტს
Arduino IR გადამცემის ესკიზი, რომელიც:
- ელოდება და იღებს IR კოდის თითოეულ სეგმენტს სერიული პორტის თავზე
- აერთიანებს კოდის სეგმენტებს IR Code ბუფერულ მასივში
- შეფუთავს ბუფერს IR გადაცემის ბრძანებაში IRLib Arduino ბიბლიოთეკის გამოყენებით
თუ სამიზნე მოწყობილობა არის IR გადამცემის სიახლოვეს, მაშინ მოწყობილობა (შეიძლება) რეაგირებდეს არდუინოს მიერ გადაცემულ IR სიგნალზე
ᲨᲔᲜᲘᲨᲕᲜᲐ
მიუხედავად იმისა, რომ სამიზნე მოწყობილობა, რომელსაც მე ვიყენებ ამ დემონსტრაციაში რეაგირებს IR სიგნალებზე, შეიძლება დაგჭირდეთ ჩემი სხვა IBLE- ის ამ ნაწილის წაკითხვა იმ მიზეზების გამო, რის გამოც მე ვამბობ, რომ მოწყობილობა (შეიძლება) რეაგირებდეს IR სიგნალზე.
დროა გააფართოვოს.
ნაბიჯი 1: რაც გჭირდებათ, სანამ გჭირდებათ
ეს გაკვეთილი იწყებს მუშაობას ადრე შესრულებული სამუშაოებით, რამაც ასევე გამოიწვია ჩემი ბოლო IBLE.
ასე რომ, სანამ ჩვენ გადავდგამთ იმას, რაც ჩვენ გვჭირდება ამ IBLE– სთვის, გირჩევთ, რომ წაიკითხოთ ეს ინსტრუქცია, თუ როგორ:
- შეიქმნა Arduino IRLib ინფრაწითელი ბიბლიოთეკა
- როგორ გამოიყენება IR კოდი ამ IBLE– ში IR მიმღების გამოყენებით
- როგორ იქნა გამოყენებული გადაღებული IR კოდები სამიზნე მოწყობილობის გასაკონტროლებლად IR გადამცემით
ამ IBLE დასრულების შემდეგ, მე განვათავსე ASP. NET IR Code Recorder ვებ პროგრამა, რომელიც:
- მიიღე გადაღებული IR კოდი ინტუიციურად დასახელებული კოდის გასაღებთან ერთად, როგორც ვებ - ფორმის შეყვანა
- ძალიან გრძელი IR კოდი დაყავით 64 სიმბოლოზე ნაკლებ სეგმენტებად, რომ დარჩეთ Arduino Uno– ს სერიული ბუფერული ლიმიტის ქვეშ.
- კოდების ბოლო სეგმენტი წინასწარ იქნება დაფიქსირებული "E"-ით, რაც Arduino- ს მიუთითებს, რომ მან მიიღო კოდის ბოლო სეგმენტი
- თითოეული სეგმენტი გამოყოფილი იქნება მილის გამყოფით, სანამ კვლავ შეიკრიბება გრძელ სტრიქონში
- დაბოლოს, სეგმენტირებული IR კოდი და მისი გასაღები შეინახეს SQL Server 2012 მონაცემთა ბაზაში
ეს არის SQL მონაცემთა ბაზა, რომელიც ქმნის ამ IBLE- ში შემუშავებული სახლის ავტომატიზაციის ცენტრის ერთ -ერთ კომპონენტს.
ᲨᲔᲜᲘᲨᲕᲜᲐ
IR Code Recorder ვებ პროგრამა არ არის აქ განხილვის ნაწილი შემდეგი მიზეზების გამო:
- თქვენ შეგიძლიათ ხელით გადაიღოთ კოდები Arduino Sketch– ის გამოყენებით, გაყოთ ისინი მილებით განსაზღვრულ ნაწილებად და შეინახოთ ისინი მონაცემთა ბაზაში, შემუშავებული ვებ პროგრამის შექმნის გარეშე.
- ამ IBLE– სგან განსხვავებით, IR ჩამწერი ყურადღებას ამახვილებს საპირისპირო კომუნიკაციაზე არდუინოდან ჟოლოს პიამდე
ამიტომ ამ პროექტის დეტალები იქნება თემა სხვა IBLE- სთვის
ნაბიჯი 2: რაც გჭირდებათ - აპარატურა
მოქმედი Raspberry Pi 2.0 - გირჩევთ დააინსტალიროთ Ubuntu Mate, რადგან მას აქვს უფრო მდიდარი მახასიათებლები, მათ შორის OpenLibre Office, რომელიც სხვათა შორის შეუცვლელი იყო ამ სასწავლო ინსტრუქციის დოკუმენტაციაში, ზუსტად იქ, Raspberry Pi– ზე.
გარდა ამისა, Pi, დაგჭირდებათ შემდეგი გარეგანი საშუალებები:
- Arduino Uno პროტოტიპის პლატფორმა ან კლონი
- IR გადამცემები LED - მე გამოვიყენე ბრენდი სახელწოდებით სამი ფეხი Amazon.com– დან
- 330 ან 220 Ohm რეზისტორები-მე გამოვიყენე 220 (ფერის კოდი წითელი-წითელი-ყავისფერი), რადგან რამდენიმე მოსახერხებელი მქონდა
- დამონტაჟებულია ჩვეულებრივი პურის დაფა, კონექტორები და კომპიუტერი Arduino Environment– ით
- ტესტის კანდიდატი - მაგალითად, ყველგან გავრცელებული Samsung LED მონიტორი დისტანციური მართვის პულტით
ნაბიჯი 3: რაც გჭირდებათ - პროგრამული უზრუნველყოფა
ყველა ნაწილის გაერთიანების მიზნით, შემდეგი პროგრამული უზრუნველყოფის დაყენება უნდა იყოს დაინსტალირებული და გაშვებული:
Raspberry Pi– ზე თქვენ უნდა დააინსტალიროთ შემდეგი:
- Arduino IDE - გამოიყენება ესკიზის შესაქმნელად და გაგზავნის UNO– ში
- პითონის მოდული Arduino– სთვის - UNO– სა და Pi– ს შორის სერიული კომუნიკაციისთვის
- Python SignalR კლიენტის ბიბლიოთეკა - შეგიძლიათ იხილოთ აქ თანდართული ინსტრუქციები
Windows მანქანა დაინსტალირებული შემდეგი განვითარების გარემოთი:
- Microsoft Visual Studio Express 2013 -ის უფასო გამოცემა SignalR Hub და ვებ კლიენტის პროგრამის შესაქმნელად
- SQL Server 2012 Express– ის უფასო გამოცემა მონაცემთა ბაზის შემუშავებისა და შექმნისთვის
Windows ინტერნეტ ინფორმაციის სერვერის (IIS) ჰოსტინგის გარემო:
- მას შემდეგ რაც SignalR Hub და ვებ კლიენტი აშენდება და შემოწმდება, ის უნდა განთავსდეს ადგილობრივ IIS სერვერზე
- ჩემს შემთხვევაში, ვგეგმავ გამოვიყენო ძველი ლეპტოპი Windows 7 -ით, IIS- ით, სახლის ქსელში
ᲨᲔᲜᲘᲨᲕᲜᲐ
ყველა ინსტრუქცია გამოიყენება Python 2.7.x ვერსიისთვის. ვერსია 3.0 შეიძლება მოითხოვოს გადაწერა
ნაბიჯი 4: SQL სერვერის მონაცემთა ბაზა
თანდართული სქემა გვიჩვენებს ამ პროგრამაში გამოყენებული ძირითადი SQL Server მონაცემთა ბაზის სტრუქტურას და შეიცავს მხოლოდ ორ ცხრილს.
ცხრილის AutoHubCode
ამ ცხრილის ორი მნიშვნელოვანი სვეტი არის:
AutoCodeKey - ინახავს კოდის გასაღების მოსახერხებელ სახელს
თითოეული კოდის გასაღები გადაცემულია ავტომატიზაციის კლიენტის მიერ - ჩვენს შემთხვევაში, HTML ღილაკი ვებ გვერდიდან
AutoCodeVal - ინახავს ნედლი IR კოდის თანმიმდევრობას
ეს არის ფაქტობრივი IR კოდი, რომელიც გადაეცემა კლიენტს SignalR Hub– ის საპასუხოდ
ამ შემთხვევაში, პითონის კლიენტი მუდმივ კავშირშია ცენტრთან, იღებს IR კოდის თანმიმდევრობას და გადასცემს მას სერიულ პორტზე Arduino UNO– ს.
ცხრილი AutoHubLog
- აღრიცხავს ავტომატიზაციის კლიენტის მიერ მოთხოვნილ კოდს.
- ეს არის ღონისძიება იმის დასადგენად, თუ ვინ და როდის გამოიყენა სისტემა და რა კოდი იყო მოთხოვნილი
როგორც აღვნიშნე, მე გამოვიყენე SQL Server 2012, როგორც ჩემი მონაცემთა ბაზის არჩევა. თქვენ შეგიძლიათ ხელახლა შექმნათ ეს მარტივი დიზაინი მონაცემთა ბაზის სხვადასხვა პლატფორმაზე, როგორიცაა MySQL, Oracle და ა.
მიუხედავად ამისა, SQL სკრიპტი ამ მონაცემთა ბაზის შესაქმნელად დაერთო აქ
ᲨᲔᲜᲘᲨᲕᲜᲐ
- SignalR Hub– ის კოდი შექმნილია SQL Server 2012 მონაცემთა ბაზასთან დასაკავშირებლად
- სხვა მონაცემთა ბაზასთან მუშაობა ნიშნავს ჰაბის შეცვლას მონაცემთა ბაზის სხვა დრაივერის გამოსაყენებლად
ნაბიჯი 5: ASP. NET SignalR Hub ვებ პროგრამა
ASP. NET SignalR Hub ვებ პროგრამა ერთობლივად მოიცავს შემდეგ კომპონენტებს, როგორც ეს მითითებულია თანდართულ სქემაში:
ნაწილი 1 - SignalR Hub, რომელიც იღებს მოთხოვნებს და პასუხობს კლიენტისგან
სექციები 2, 4 - HTML კლიენტის ვებ გვერდი და მისი სტილის ფურცელი, რომლებიც ერთობლივად ქმნიან ავტომატიზაციის სისტემის წინა ნაწილს და გასცემს ბრძანებებს ავტომატიზაციის ცენტრს
ნაწილი 3 - jQuery SignalR API, რომელიც გამოიყენება HTML კლიენტის მიერ ავტომატიზაციის ცენტრთან კომუნიკაციისთვის
ნაწილი 5 - SignalR Hub პირდაპირ არ ექვემდებარება მონაცემთა ბაზას. ის ამას აკეთებს Entity Framework– ის გამოყენებით წარმოქმნილი შუალედური კლასების საშუალებით
ეს კლასები აბსტრაქციას უწევს მონაცემთა ბაზის დეტალებს წინა პროგრამიდან
ნაწილი 6 - მონაცემთა ბაზის სერვისის კლასი, რომელიც ეხმარება SQL მონაცემთა ბაზის წაკითხვა -ჩაწერის ოპერაციებს (აღწერილია ადრე) Entity Framework კლასების გამოყენებით
ASP. NET და SignalR არის Microsoft ტექნოლოგიები და ეს სამეურვეო დაგეხმარებათ გაარკვიოთ, თუ როგორ არის აგებული და განლაგებული მარტივი SignalR პროგრამა.
ის, რაც მე აქ ავაშენე, ემყარება ამ სახელმძღვანელოდან მიღებულ საფუძვლებს. განლაგებისას, პროგრამა უნდა გამოიყურებოდეს მეორე სურათზე ნაჩვენები ვებ გვერდის მსგავსი
შენიშვნა კოდზე
დაერთო ZIP ფაილი, რომელიც შეიცავს კოდის ამოღებულ ვერსიას
საქაღალდის სტრუქტურა არის ვიზუალურად ნაჩვენები - თუმცა, ყველა ჩარჩო კლასი და jQuery სკრიპტები ამოღებულია დანართის ზომის შესამცირებლად
რეკომენდაციაა, რომ ეს კოდი გამოყენებულ იქნას როგორც სახელმძღვანელო, რადგან როდესაც თქვენ შექმნით ახალ SignalR ვებ პროგრამას ზემოხსენებული სამეურვეო ბმულის შესაბამისად, ავტომატურად დაემატება უახლესი jQuery ბიბლიოთეკები და ASP. NET ჩარჩო კლასები
ასევე, jQuery სკრიპტების მითითება index.html გვერდზე უნდა შეიცვალოს, რათა ასახოს jQuery SignalR კლიენტის ბიბლიოთეკების უახლესი ვერსია, რომელიც ავტომატურად დაემატება თქვენი ვებ პროგრამის შექმნისას.
დაბოლოს, კავშირის სტრიქონი უნდა შეიცვალოს, რათა შეესაბამებოდეს თქვენს მონაცემთა ბაზას ისეთ ფაილებში, როგორიცაა Web.config*
ნაბიჯი 6: Python SignalR სერვისის კლიენტი
მიუხედავად იმისა, რომ HTML SignalR კლიენტი არის მომხმარებლის ინტერფეისის წინაშე, Python Client არის სერვისის პროგრამა, რომლის ძირითადი ფუნქციაა მიიღოს კვანძის მიერ გადაცემული IR კოდი და მიაწოდოს მას Arduino UNO სერიული კომუნიკაციის საშუალებით.
თანდართული კოდი თავისთავად ახსნადია და საკმარისად არის დოკუმენტირებული მისი ფუნქციონირების აღსაწერად
როგორც ნაჩვენებია კომპოზიციური ეკრანის კადრში, HTML კლიენტი და პითონის სერვისის კლიენტი ურთიერთობენ SignalR Hub– ის საშუალებით შემდეგნაირად:
- ავტომატიზაციის სისტემის მომხმარებელი გასცემს ბრძანებას Hub ღილაკს დაჭერით
- თითოეული ღილაკი ასოცირდება IR გასაღების კოდთან და როდესაც დააწკაპუნებთ, ეს კოდი გადაეცემა ცენტრს
-
ცენტრი იღებს ამ კოდს, უკავშირდება მონაცემთა ბაზას და იღებს უმი IR სიგნალის კოდს და გადასცემს მას ყველა დაკავშირებულ კლიენტს
ამავდროულად, Hub აფიქსირებს ჩანაწერს AutoHubLog მონაცემთა ბაზის ცხრილში, სადაც ჩაწერილია კოდი და თარიღი და დრო, რომელიც მოითხოვა დისტანციურმა კლიენტებმა
- პითონის სერვისის კლიენტი იღებს IR კოდს და გადასცემს მას Arduino UNO– ს შემდგომი დამუშავებისათვის
ნაბიჯი 7: Arduino UNO IR გადაცემის ესკიზი და კოდი
არდუინოს წრე, როგორც ნაჩვენებია ვიზუალში, საკმაოდ მარტივია ამ სისტემისთვის და ამიტომ მოკლედ არის აღწერილი:
- უფერო IR LED უნდა იყოს მიერთებული ციფრული PIN 3 -ით UNO– ში - ეს არის IRLib Arduino ბიბლიოთეკის მოთხოვნა
- მიზეზები აღწერილია ჩემს ადრინდელ IBLE– ში დისტანციური მართვის კლონირება IRLib ბიბლიოთეკასთან დაკავშირებულ განყოფილებაში
- მწვანე LED, რომელიც დაკავშირებულია ციფრულ PIN 4 -თან, არის ვიზუალური მაჩვენებელი, რომელიც ანათებს მაშინ, როდესაც UNO მიიღებს IR კოდის ყველა მონაკვეთს პითონის კლიენტისგან, რომელიც მუშაობს Raspberry Pi– ზე.
- ამ LED ნათურის დადასტურება ადასტურებს, რომ სერიული კომუნიკაცია Raspberry Pi- სა და UNO– ს შორის მუშაობს
- სერიული კომუნიკაციის გასააქტიურებლად, UNO უკავშირდება Raspberry Pi– ს USB პორტის საშუალებით
- თანდართული Arduino Sketch არის საკმარისად კომენტარი მისი ფუნქციის აღსაწერად
- კოდის ზედა ნაწილში გაკეთებული კომენტარები ასევე აღწერს, თუ როგორ არის საჭირო მიკროსქემის შეერთება
ᲨᲔᲜᲘᲨᲕᲜᲐ
პრაქტიკაში, Arduino და Pi შეიძლება ერთობლივად იყოს დაკავშირებული USB კვანძთან, რომელიც საკმარისად ძლიერია Pi, Arduino– ს მართვისთვის და ასევე გადასცემს ძლიერ სიგნალს IR LED– ის საშუალებით
ნაბიჯი 8: დაკავშირება და სისტემის ტესტირება
- შექმენით და განათავსეთ ASP. NET SignalR Hub, HTML კლიენტი SQL Server 2012 მონაცემთა ბაზასთან ერთად ინტერნეტ ინფორმაციის სერვერზე (IIS) თქვენს ადგილობრივ საშინაო ქსელში
-
ვებ აპლიკაციაზე წვდომა HTML SignalR კლიენტის HTTP– ით გახსნით
ამ გვერდის URL ჩვეულებრივ იქნება https:// yourComputer: port_number/
-
დააწკაპუნეთ ღილაკზე საკონტროლო პანელზე და თუ აპლიკაცია სწორად იქნა განლაგებული, ცენტრი უპასუხებს IR კოდის დაბრუნებით და მას აჩვენებს პანელის მიმდებარე ნაცრისფერ პანელში
დაიმახსოვრე! თქვენ მოგიწევთ კოდების ჩატვირთვა თქვენს მონაცემთა ბაზაში IR მიმღების ბიბლიოთეკის შექმნით და კოდების აღებით, როგორც ეს აღწერილია ჩემს წინა IBLE- ში
-
დაუკავშირეთ Arduino Raspberry Pi– ს USB– ით - გახსენით Arduino IDE Pi– ზე და დარწმუნდით, რომ UNO– ს შეუძლია დაამყაროს კავშირი Pi– სთან
ეს არდუინოს სამეურვეო სტატიები დაგეხმარებათ სწრაფად მიაღწიოთ ამას
-
გახსენით პითონის კოდი და განახორციელეთ შემდეგი ცვლილებები თქვენი გარემოსთვის
- თქვენი გაეროს სერიული პორტის მისამართი, როგორც მე –4 ნაბიჯიდან
- SignalR ჰაბის URL ემთხვევა თქვენს ადგილობრივ URL– ს ნაბიჯი 2 – დან - ამ მაგალითში ეს იქნება https:// yourComputer: port_number/signalr
- დაბოლოს, გახსენით Arduino Sketch Arduino IDE– ში Raspberry Pi– ზე და მიაწოდეთ UNO– ს
- მოათავსეთ პურის დაფა, რომელიც აკავშირებს წრეს მოწყობილობასთან სიახლოვეს გასაკონტროლებლად - IR LED- ს უნდა ჰქონდეს მკაფიო ხედვა მოწყობილობის IR მიმღების პორტთან
- დაიწყეთ პითონის პროგრამა Raspberry Pi– ზე F5 ღილაკზე დაჭერით Python IDLE ინსტრუმენტების ზოლზე
- დაბრუნდით საკონტროლო პანელში HTML კლიენტის პროგრამაში (ნაბიჯი 2) და დააწკაპუნეთ ღილაკზე (როგორიცაა ჩართვა ან მოცულობის გაზრდა)
თუ სისტემა სწორად არის დაყენებული, მაშინ თქვენ უნდა შეძლოთ თქვენი ტელეფონის ან ტაბლეტის HTML კლიენტის გვერდის გაშლა და თქვენი მოწყობილობის მართვა HTML კლიენტის გვერდის ღილაკებით.
ნაბიჯი 9: სისტემა მოქმედებაში
ზემოთ მოყვანილი ვიზუალი აჩვენებს სახლის ავტომატიზაციის სისტემას, როდესაც ის დაყენებულია.
მას შემდეგ რაც გამოქვეყნდა ეს IBLE, მე გავაფართოვე ინტერფეისი ჩემი VIZIO LED ტელევიზიის რამდენიმე IR კოდის გადაღებით
როგორც ნაჩვენებია ქარხნის სატელევიზიო დისტანციის გვერდით, პირველ ვიზუალში, ამ დისტანციური მართვის რამდენიმე ძირითადი ფუნქცია ჩაშენებულია ვებ – ინტერფეისში, რომელსაც წვდომა აქვს ჩემი ტაბლეტის საშუალებით
შემდგომ ვიზუალებში ნაჩვენებია პლანშეტი წინა პლანზე, ტელევიზორი უკანა მხრიდან, რომელიც პასუხობს ვებ ინტერფეისის ბრძანებებს:
- Power OFF ბრძანება - ტელევიზია გამორთულია
- ჩართვის ბრძანება - ტელევიზია ჩართულია და ეკრანის გაძლიერებისთანავე გამოჩნდება "V" ლოგო
- მუნჯი ჩართვის ბრძანება - ჰორიზონტალური ზოლი გამოდის დინამიკით დადუმებული
ყველა ტესტში, ნაცრისფერი მხარე ტაბლეტის ეკრანზე დაფის გვერდით აჩვენებს კლიენტის მიერ გაცემულ ბრძანებას და დისტანციური SignalR Hub– ის მიერ გამოგზავნილ პასუხს.
ნაბიჯი 10: ავტომატიზაციის სისტემის გაძლიერება და მასთან დაკავშირებული ცვლილებები
ეს სისტემა შეიძლება გაფართოვდეს სხვადასხვა სისტემიდან აღებული მეტი კოდის დამატებით. მიუხედავად იმისა, რომ ეს ნაწილი ადვილია, არის ორი სხვა ფაქტორი, რომელთა გათვალისწინებაც მოგიწევთ.
გაძლიერება 1 (სწრაფი): სხვადასხვა სიგრძის IR სიგნალებთან მუშაობა
-
სხვადასხვა სისტემის IR კოდები მოდის სხვადასხვა სიგრძით, თუნდაც ერთი და იმავე მწარმოებლის ორ პროდუქტს შორის.
მაგალითად, ამ შემთხვევაში, IR კოდის მასივის სიგრძე LED ტელევიზორისთვის არის 67, ხოლო სამსუნგის ხმოვანი ზოლის სიგრძე დაახლოებით 87
- რაც იმას ნიშნავს, რომ თუ პირველად ჩავრთავდი ხმოვან ზოლს, არდუინოს ესკიზში IR ბუფერული მასივი ივსებოდა IR კოდის თანმიმდევრობით, რომელიც შეიცავს 87 კოდს
- ამის შემდეგ, თუ ჩართავდი LED ტელევიზორს, ის შეავსებდა IR ბუფერულ მასივს მხოლოდ 67 კოდით, მაგრამ წინა ოპერაციიდან დარჩენილი 20 კოდი მაინც იქნება
Შედეგი? LED ტელევიზორი არ ირთვება, რადგან IR კოდის ბუფერი დაზიანებულია დამატებითი 20 კოდით, რომელიც არ არის გასუფთავებული წინა ოპერაციისგან!
დაფიქსირება 1 (მარტივი გამოსავალი, არ არის რეკომენდებული)
შეცვალეთ Arduino Sketch შემდეგნაირად:
შეცვალეთ შემდეგი ფუნქციის ზარები მარყუჟის () {} ფუნქციაში
transmitIRCode ();
გადააქვთ კოდი (გ);
შეიტანეთ ცვლილებები ზემოაღნიშნული ფუნქციის ხელმოწერაში:
void transmitIRCode (int codeLen) {// RAWBUF მუდმივი შეიცვალა codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }
მიუხედავად იმისა, რომ ეს ადვილია, მასივი არასოდეს ხდება მთლიანად გაწმენდილი და, შესაბამისად, ეს არ არის ძალიან სუფთა გამოსავალი
დაფიქსირება 2 (არ არის რთული, რეკომენდირებულია)
გამოაცხადეთ დამატებითი ცვლადი Arduino Sketch– ის ზედა ნაწილში, კომენტარების განყოფილების შემდეგ:
ხელმოუწერელი EMPTY_INT_VALUE;
დაამატეთ ეს setup () ფუნქციის ზედა ნაწილში:
// აიღეთ ცარიელი ხელმოუწერელი მთელი ცვლადის ბუნებრივი მდგომარეობა EMPTY_INT_VALUE = IRCodeBuffer [0];
გადაახვიეთ ქვემოთ და დაამატეთ ახალი ფუნქცია ესკიზს transmitIRCode () ფუნქციისთანავე:
void clearIRCodeBuffer (int codeLen) {// მასივიდან ყველა კოდის გასუფთავება // შენიშვნა: მასივის ელემენტების 0-ზე დაყენება არ არის გამოსავალი! (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}
დაბოლოს, დარეკეთ ზემოთ ახალი ფუნქცია მარყუჟის () ფუნქციის შემდეგ ადგილას:
// გადატვირთვა - განაგრძეთ სერიული PortclearIRCodeBuffer კითხვა (გ);…
ეს უფრო სუფთა მიდგომაა, რადგან ის რეალურად აღადგენს IR Buffer მასივის ყველა მდებარეობას, რომელიც დასახლებული იყო უახლესი IR კოდის სიგნალით, შემთხვევისათვის არაფრის დატოვების გარეშე.
გაძლიერება 2 (უფრო მეტად ჩართული): IR სიგნალის გადაცემის გამეორება გარკვეული მოწყობილობებისთვის
ზოგიერთი მოწყობილობა მოითხოვს ერთიდაიგივე სიგნალის გადაცემას რამდენჯერმე პასუხის გასაცემად მაგალითი: ამ შემთხვევაში, Samsung ხმოვანი ბარი მოითხოვს ერთი და იგივე კოდის ორჯერ გაგზავნას 1 წამიანი ინტერვალით
კონცეფციის გამოსწორება აქ განიხილეს, რადგან ის ცოტა უფრო მეტად არის ჩართული და საჭიროებს ტესტირებას
Ardunio Sketch– ის განმეორებითი ფუნქციონირების დამატება ნიშნავს იმას, რომ თქვენ უნდა აანთოთ ესკიზი ყოველ ჯერზე, როდესაც დაამატებთ ახალ მოწყობილობას თქვენს სახლის ავტომატიზაციის სისტემაში
ამის ნაცვლად, ამ შესწორების დამატება HTML SignalR კლიენტსა და Python SignalR სერვისის პროგრამაში გადაწყვეტილებას ბევრად მოქნილს ხდის. და ეს შეიძლება მიღწეული იყოს პრინციპში შემდეგნაირად:
შეცვალეთ SignalR HTML კლიენტი, რომ გადასცეთ განმეორებითი ინფორმაცია კერას
გახსენით index.html და ჩასვით განმეორებითი მნიშვნელობა HTML ღილაკში ასე:
მნიშვნელობა = "SMSNG-SB-PWR-ON" გახდება მნიშვნელობა = "SMSNG-SB-PWR-ON_2_1000"
სადაც, 2 არის განმეორებითი მნიშვნელობა და 1000 არის შეფერხების მნიშვნელობა მილიწამებში ორ განმეორებით სიგნალს შორის
როდესაც დააწკაპუნებთ ამ ღილაკზე, SignalR კერა მიიღებს საკვანძო კოდს+Repeat_Spec
შეცვალეთ SignalR Server– ის გვერდითი მეთოდები მხოლოდ გასაღები კოდის გასაანალიზებლად:
- გამოიყენეთ გასაღები კოდი, როგორც ყოველთვის, მონაცემთა ბაზიდან IR კოდის ამოსაღებად
- გადასცეს ძირითადი კოდი+Repeat_Spec და IRCode SingalR კლიენტებს ჩვეულებისამებრ
შეცვალეთ Python SignalR სერვისის პროგრამა სიგნალების გადასაცემად განმეორებითი მნიშვნელობების გამოყენებით:
გახსენით Python კლიენტი და შეცვალეთ შემდეგი ორი ფუნქცია:
def print_command_from_hub (buttonId, cmdSrc):
# გაანალიზეთ განმეორებითი კოდი ღილაკიდან მნიშვნელობა
def transmitToArduino (IRSignalCode, delim, endPrefix):
# დააყენეთ ცოტა ხნით ან მარყუჟისთვის, რომ გადასცეს სიგნალი სასურველ სიხშირეზე
- ამრიგად, არდუინოს არაერთხელ უნდა აციმციმდეს
- ნებისმიერი რაოდენობის განმეორებითი სიხშირე შეიძლება ჩაშენდეს ამ სისტემაში
- გარდა ამისა, თუ თქვენ იყენებთ გაეროს, არსებობს შეზღუდვა იმ ზომებზე, რომლითაც თქვენი ესკიზი შეიძლება გაიზარდოს!
ნაბიჯი 11: ცნობილი საკითხები და უსაფრთხოების საკითხები
როგორც ეს პირველად სისტემების შემთხვევაშია, ამ სისტემას აქვს რამოდენიმე საკითხი, რაც გამოჩნდა ტესტირების დროს.
საკითხი 1: სწრაფი თანმიმდევრული ბრძანებების გაშვება ღილაკზე დაწკაპუნებებს შორის წამზე ნაკლებ დროში გამოიწვია, რომ სისტემა უპასუხოდ იქცა პირველივე ჯერზე.
- Python SignalR კლიენტის გადატვირთვა აღადგენს სისტემას ნორმალურ ფუნქციონირებაზე
- შეიძლება დაუყოვნებლივ მოგვარდეს ის, რომ წაშალოთ Debug– ის არასასურველი შედეგები ორივეში, Python SignalR კლიენტში და ასევე Arduino Sketch– ში და გაიმეოროთ ეს ტესტები
- სხვა ადგილი, რომელიც უნდა ვეძებოთ, იქნება თავად სერიული კომუნიკაცია - შესაძლებელია თუ არა კოდის დამატება ბუფერის სწრაფად გასათავისუფლებლად?
როგორც ვთქვი, მე შევამჩნიე, რომ ჩემი ტელევიზია კარგად არ რეაგირებს მის ქარხნულ დისტანციურ მოწყობილობაზე - ამიტომ ჩემი ტელევიზიის IR კომუნიკაციის ბუნებაც შეიძლება იყოს ხელშემწყობი ფაქტორი.
საკითხი 2: HTML ეკრანი წყვეტს ღილაკების დაწკაპუნებაზე რეაგირებას დიდი ხნის უმოქმედობის შემდეგ
როგორც წესი, გვერდის განახლება წყვეტს ამ ქცევას - ამ ქცევის მიზეზი მაინც გაურკვეველია
უსაფრთხოებას ეხება
ეს სისტემა შემუშავებულია მხოლოდ ადგილობრივი (სახლის) ქსელის გამოყენებისთვის და არ გააჩნია უსაფრთხოების აუცილებელი გარანტიები ინტერნეტში გამოსაყენებლად
ამიტომ რეკომენდირებულია, რომ SignalR Hub განთავსდეს ადგილობრივ აპარატზე თქვენს ადგილობრივ/სახლის ქსელში
მადლობა რომ კითხულობ ჩემს IBLE- ს და ვიმედოვნებ გაერთობი!
გირჩევთ:
ულტრა დაბალი სიმძლავრის WiFi სახლის ავტომატიზაციის სისტემა: 6 ნაბიჯი (სურათებით)
ულტრა დაბალი სიმძლავრის WiFi სახლის ავტომატიზაციის სისტემა: ამ პროექტში ჩვენ ვაჩვენებთ, თუ როგორ შეგიძლიათ ააშენოთ ძირითადი ადგილობრივი ავტომატიზაციის სისტემა რამდენიმე ნაბიჯში. ჩვენ ვაპირებთ გამოვიყენოთ Raspberry Pi, რომელიც იმოქმედებს როგორც ცენტრალური WiFi მოწყობილობა. ვინაიდან ბოლო კვანძებისთვის ჩვენ ვაპირებთ გამოვიყენოთ IOT Cricket ბატარეის შესაქმნელად
წვრილმანი სახლის ავტომატიზაციის შემტევი სიგნალიზაცია!: 5 ნაბიჯი (სურათებით)
DIY Home Automation Intruder Alarm System !: ამ პროექტში მე გაჩვენებთ თუ როგორ გამოიყენოთ Home Assistant პროგრამული უზრუნველყოფა, რათა შექმნათ ინტრუდირების სიგნალიზაცია თქვენს სახლში. სისტემა ძირითადად ამოიცნობს, თუ კარი ნებართვის გარეშე გაიხსნება და შემდეგ ის გაგზავნის შეტყობინებას
კედლის მთა IPad– ისთვის, როგორც სახლის ავტომატიზაციის მართვის პანელი, სერვო კონტროლირებული მაგნიტის გამოყენებით ეკრანის გასააქტიურებლად: 4 ნაბიჯი (სურათებით)
Wall Mount for IPad როგორც სახლის ავტომატიზაციის მართვის პანელი, Servo კონტროლირებადი მაგნიტის გამოყენებით ეკრანის გასააქტიურებლად: ბოლო დროს მე საკმაოდ დიდ დროს ვატარებ ნივთების ავტომატიზაციაში ჩემს სახლში და მის გარშემო. მე ვიყენებ Domoticz– ს, როგორც ჩემი სახლის ავტომატიზაციის პროგრამას, დეტალებისთვის იხილეთ www.domoticz.com. საინფორმაციო დაფის პროგრამის ძიებაში, რომელიც აჩვენებს ყველა Domoticz ინფორმაციას გადართული
სახლის ავტომატიზაციის დაწყება: სახლის ასისტენტის დაყენება: 3 ნაბიჯი
სახლის ავტომატიზაციის დაწყება: სახლის ასისტენტის დაყენება: ჩვენ ახლა დავიწყებთ სახლის ავტომატიზაციის სერიას, სადაც ჩვენ ვქმნით ჭკვიან სახლს, რომელიც საშუალებას მოგვცემს გავაკონტროლოთ ისეთი რამ, როგორიცაა განათება, დინამიკები, სენსორები და ა. ხმის ასისტენტი. ამ პოსტში ჩვენ ვისწავლით თუ როგორ უნდა
ბატარეის კარის სენსორი სახლის ავტომატიზაციის ინტეგრაციით, WiFi და ESP-NOW: 5 ნაბიჯი (სურათებით)
ბატარეის კარის სენსორი სახლის ავტომატიზაციის ინტეგრაციით, WiFi და ESP-NOW: ამ სასწავლო ინსტრუქციაში მე გაჩვენებთ როგორ გავაკეთე ბატარეაზე მომუშავე კარის სენსორი სახლის ავტომატიზაციის ინტეგრაციით. მე მინახავს სხვა ლამაზი სენსორები და სიგნალიზაციის სისტემები, მაგრამ მინდოდა მე თვითონ გამეკეთებინა ისინი. ჩემი მიზნები: სენსორი, რომელიც აღმოაჩენს და აცნობებს დუოს