ინფრაწითელი მიმღების დაკავშირება arduino-სთან. Arduino: ინფრაწითელი დისტანციური მართვა და მიმღები. ბიბლიოთეკები IR-თან მუშაობისთვის
- შეყვანის ძაბვა: 4.0 ... 5.5 V (5 V ნომინალური)
- დენის მოხმარება: 100 mA-მდე პულსის რეჟიმში (Vcc = 5 V)
- სინათლის ტალღის სიგრძე: 940 ნმ (პიკური მნიშვნელობა)
- სიგნალის მაქსიმალური სიხშირე: 10 MHz-მდე
- გადაცემის მანძილი: 10 მ-მდე (Vcc=5V-ზე)
- სამუშაო ტემპერატურა: -25 … 85 °C
- მიმართულების კუთხე: 120° (ძაბვის დაკარგვით< 50%)
"Trema" ხაზის ყველა მოდული დამზადებულია იმავე ფორმატში
კავშირი:
მოსახერხებელია მოდულის დაკავშირება 3 გზით, სიტუაციიდან გამომდინარე:
მეთოდი - 1:სადენიანი კაბელის და Piranha UNO-ს გამოყენება
ბიბლიოთეკა იყენებს მეორე აპარატურულ ტაიმერს,
არ გამოუშვათ PWM სიგნალები 3 ან 11 გამომავალზე!
წაიკითხეთ მეტი ბიბლიოთეკის დაყენების შესახებ ჩვენს...
დამატებითი ინფორმაცია მოდულთან მუშაობის შესახებ:
პაკეტები:თითქმის ყველა დისტანციური მართვის პულტი აგზავნის არა მხოლოდ ინფორმაციის პაკეტს (მიუთითებს მოწყობილობის ტიპს და დაჭერილი ღილაკის კოდს), არამედ იმეორებს პაკეტებს და აცნობებს მოწყობილობას, რომ ღილაკი დაჭერილია. ამრიგად, მიმღებ მოწყობილობას შეუძლია რეაგირება მოახდინოს ღილაკის ერთხელ ან მთელი დროის განმავლობაში დაჭერაზე.
მაგალითად: სატელევიზიო არხის ნომრის ღილაკზე დაჭერით, ტელევიზორი გადაერთვება ამ არხზე მხოლოდ ერთხელ. ხმის გაზრდის ღილაკზე დაჭერისას ტელევიზორი გაზრდის მას ღილაკზე დაჭერის დროს.
საინფორმაციო პაკეტების რაოდენობადისტანციური მართვის უმეტესობას აქვს ერთი, მაგრამ ზოგიერთი მოწყობილობა, როგორიცაა კონდიციონერი, იყენებს 2, 3 ან მეტ საინფორმაციო პაკეტს.
პაკეტის შინაარსი:საინფორმაციო პაკეტი შეიცავს ინფორმაციას მწარმოებლის კოდის, მოწყობილობის ტიპის, დაჭერილი ღილაკის კოდის შესახებ და ა.შ. განმეორებითი პაკეტები შეიძლება ნაწილობრივ ან მთლიანად ემთხვეოდეს საინფორმაციო პაკეტს, დააკოპიროს მისი ბიტები ინვერსიით, ან არ ჰქონდეს რაიმე ინფორმაცია, რაც წარმოადგენს რამდენიმე იდენტური ბიტის თანმიმდევრობას თითოეული განმეორებითი პაკეტისთვის.
პაუზის ხანგრძლივობა პაკეტებს შორის:ჩვეულებრივ არ აღემატება 200 ms.
მონაცემთა გადაცემის პროტოკოლები:განსაზღვრეთ შემდეგი ძირითადი პარამეტრები:
გადამყვანის სიხშირე:დისტანციური მართვის უმეტესობისთვის ეს არის 38 kHz, სწორედ ამ სიხშირეზეა მორგებული Trema IR მიმღები.
ინფორმაციის კოდირება:ეს არის მონაცემთა ბიტების გადაცემის პრინციპი. მოდით გამოვყოთ კოდირების სამი ძირითადი ტიპი, რომლებშიც თითოეული ბიტი გადაიცემა ერთი პულსის და ერთი პაუზის თანმიმდევრობით:
დაწყების, გაჩერების და გადართვის სიგნალები:მათი სახელის მიხედვით, ისინი განლაგებულია პაკეტის დასაწყისში, ბოლოს ან შუაში.
შეჩერება:ხანგრძლივი პაუზის კოდირებისას შეუძლებელია პაკეტში ბოლო ბიტის მნიშვნელობის დადგენა, რადგან პაკეტს მოჰყვება ხანგრძლივი პაუზა და ბოლო ბიტი ყოველთვის იქნება განსაზღვრული როგორც "1", ამიტომ ემატება Stop სიგნალი. პაკეტს, რომელიც არის პულსი, რომელიც არ ატარებს ინფორმაციას.
დაწყება:ორფაზიანი კოდირებით, საჭიროა დაწყების სიგნალი, რადგან შეუძლებელია პაკეტის გადაცემის დაწყება პაუზიდან.
გადართვა:ეს არის ცოტა, რომელიც ცვლის თავის მნიშვნელობას ყოველი ახალი ღილაკის დაჭერით, რომელიც გამოიყენება RS5, RS5X, RS6 (Philips) პროტოკოლებში, სადაც განმეორებითი პაკეტები მთლიანად იმეორებენ ინფორმაციის პაკეტის მონაცემებს. ამ გზით მიმღებ მოწყობილობას შეუძლია განასხვავოს ღილაკის დაჭერა და ხელახლა დაჭერა.
პულსის სიგრძის კოდირება- ჯერ გადაიცემა პულსი, რომლის სიგრძე დამოკიდებულია გადაცემული ბიტის მნიშვნელობაზე, შემდეგ მოდის პაუზა, რომლის ხანგრძლივობა არ არის დამოკიდებული ბიტის მნიშვნელობაზე. მაგალითად: SIRC პროტოკოლში (Sony), პულსის სიგრძე ბიტისთვის "1" = 1200 μs, ხოლო ბიტისთვის "0" = 600 μs, პაუზების სიგრძე ყოველთვის არის 600 μs. ამ გზით თქვენ შეგიძლიათ განასხვავოთ "1" "0"-დან პულსის სიგრძით.
პაუზის სიგრძის კოდირება- ჯერ გადაიცემა პულსი, რომლის სიგრძე არ არის დამოკიდებული გადაცემული ბიტის მნიშვნელობაზე, რასაც მოჰყვება პაუზა, რომლის სიგრძე დამოკიდებულია ბიტის მნიშვნელობაზე. მაგალითად: NEC პროტოკოლში, პაუზის სიგრძე ბიტისთვის „1“ = 1687,5 μs, ხოლო ბიტისთვის „0“ = 562,5 μs, პულსის სიგრძე ყოველთვის არის 562,5 μs. ამრიგად, თქვენ შეგიძლიათ განასხვავოთ "1" "0"-დან პაუზის სიგრძით.
ორფაზიანი კოდირება- პულსის სიგრძე უდრის პაუზის ხანგრძლივობას და მათი თანმიმდევრობა განსაზღვრავს გადაცემული ბიტის ტიპს. მაგალითად: RS5 პროტოკოლში (Philips), "1" ბიტისთვის პულსი მიჰყვება პაუზას, ხოლო ბიტისთვის "0" პაუზა მიჰყვება პულსს. NRC პროტოკოლისთვის (Nokia), პირიქით, ბიტისთვის "1" პაუზა მიჰყვება პულსს, ხოლო ბიტისთვის "0" პულსი პაუზას მოსდევს.
მაგალითები:
მონაცემთა ერთჯერადი გადაცემა:
#შეიცავსმონაცემთა გადაცემა ხელახალი პაკეტებით:
#შეიცავსმონაცემთა გადაცემა პროტოკოლის მითითებით:
#შეიცავსეს მაგალითი გვიჩვენებს, თუ როგორ შეუძლია გადამცემს სრულად მოახდინოს სხვა IR დისტანციური მართვის სიგნალების სიმულაცია.
მიღებული პროტოკოლის სტრიქონი პარამეტრად უნდა გადაეცეს protocol() ფუნქციას, რის შემდეგაც შეგიძლიათ გაგზავნოთ ღილაკების კოდები send() ფუნქციის გამოყენებით. შედეგად, მოწყობილობები რეაგირებენ IR გადამცემზე, თითქოს ისინი პასუხობდნენ საკუთარ IR დისტანციურ კონტროლს.
ბიბლიოთეკის ძირითადი ფუნქციების აღწერა:
ბიბლიოთეკის დაკავშირება:
#შეიცავს// მეორე პარამეტრი, ტიპის bool, შეიძლება მიუთითებდეს, რომ გადამცემის მონაცემები უნდა იყოს შებრუნებული.
- ფუნქცია start();
- მიზანი: IR გადამცემთან მუშაობის ინიციალიზაცია
- სინტაქსი: begin();
- პარამეტრები: არცერთი.
- დაბრუნების მნიშვნელობები: არცერთი.
- შენიშვნა: დარეკვა ერთხელ დაყენების კოდში.
VD.begin(); // IR გადამცემთან მუშაობის დაწყება
- ფუნქცია send();
- მიზანი: მონაცემთა გადაცემა.
- სინტაქსი: გაგზავნა (DATA [, HOLD ]);
- პარამეტრები:
- DATA - კოდი, როგორიცაა uint32_t, რომელიც უნდა გადაიცეს;
- პარამეტრები: არცერთი.
- შენიშვნა: თუ ფუნქცია გამოიძახება HOLD პარამეტრის გარეშე, ან უდრის false-ს, მაშინ ფუნქცია, ყოველ ჯერზე მისი გამოძახებისას, ერთხელ გადასცემს მითითებულ კოდს. თუ ფუნქცია გამოიძახება HOLD პარამეტრით, რომელიც ტოლია true-ს, მაშინ ფუნქცია წყვეტს ღილაკს და აგზავნის ხელახლა ცდის პაკეტებს (პროტოკოლში მითითებულ ინტერვალში), როდესაც ის შეჩერებულია.
- შენიშვნა: დარეკვა ერთხელ დაყენების კოდში.
ფუნქციის პროტოკოლი();
- მიზანი: მონაცემთა გადაცემის პროტოკოლის დაყენება.
- სინტაქსი: პროტოკოლი (STRING);
- სინტაქსი: გაგზავნა (DATA [, HOLD ]);
- LINE - შედგება 25 პროტოკოლის სიმბოლოსგან + ხაზის ბოლო სიმბოლოსგან. ამ სტრიქონის მიღება შესაძლებელია ამავე სახელწოდების ფუნქციის მიმღებისთვის პარამეტრების გარეშე გამოძახებით.
- დააბრუნეთ მნიშვნელობები: bool - სტრიქონი შეიცავს პროტოკოლის სწორ მონაცემებს თუ არა.
- შენიშვნა: ფუნქცია ადგენს მონაცემთა გადაცემის პროტოკოლს, ასე რომ IR გადამცემს შეუძლია ჩვეულებრივი დისტანციური მართვის სიგნალების სიმულაცია. ამ ფუნქციის გამოძახების შემდეგ მონაცემთა გადაცემა send() ფუნქციის გამოყენებით განხორციელდება ახალი პროტოკოლის გამოყენებით. მონაცემთა გადაცემის ნაგულისხმევი პროტოკოლი შეესაბამება "Car mp3" დისტანციურ კონტროლს.
- შენიშვნა: დარეკვა ერთხელ დაყენების კოდში.
// ახლა გადამცემი გაგზავნის მონაცემებს, დაშიფრავს მას, მითითებული პროტოკოლის შესაბამისად.
- // პროტოკოლის სტრიქონის მიღება შეგიძლიათ ტელევიზორის დისტანციური მართვის ნებისმიერ ღილაკზე დაჭერით და IR მიმღებისთვის ამავე სახელწოდების ფუნქციის დარეკვით, პარამეტრების გარეშე.
- სიხშირის ცვლადი:
- მნიშვნელობა: ადგენს მონაცემთა გადაცემის მატარებლის სიხშირეს kHz-ში;
შენიშვნა: თუ ცვლადს არ ენიჭება მნიშვნელობა, მაშინ გადაცემა ხორციელდება პროტოკოლში მითითებული სიხშირით. თუ თქვენ მიუთითებთ 0 მნიშვნელობას, მაშინ მონაცემები გადაეცემა მოდულაციის გარეშე.
- VD.სიხშირე=36; // დააყენეთ გადამზიდავი სიხშირე მონაცემთა გადაცემისთვის 36 kHz-ზე. VD.send(0xCCDDEEFF); // მონაცემების გაგზავნა გადამზიდავი სიხშირით 36 kHz. VD.send(0xABCDEF); // მონაცემების გაგზავნა გადამზიდავი სიხშირით 36 kHz.
- განათების ჩართვა/გამორთვა, გათბობა, ვენტილაცია, მორწყვა და ა.შ.
- კარების გაღება/დახურვა, ჟალუზები, სახურავის ფანჯრები, ვენტილატორები და ა.შ.
ყველა სახლს აქვს ტელევიზორის პულტი, ან სხვა პულტი. ეს მოწყობილობა საშუალებას გაძლევთ აკონტროლოთ ნებისმიერი მოწყობილობა შორიდან, რაც ძალიან მოსახერხებელია. არ არის საჭირო ძვირფასი კალორიების დაკარგვა და არასაჭირო მოძრაობების გაკეთება. თუ თქვენ გაქვთ მოწყობილობა და გსურთ მისი მართვა შორიდან, მაშინ შეგიძლიათ დისტანციურად მართოთ ეს მოწყობილობა. სურვილის შემთხვევაში, დისტანციური მართვის პულტი საკუთარი ხელით გააკეთე, მაგრამ ამის საჭიროება არ არის და ეს სხვა ამბავია. რატომ შეიძლება დაგჭირდეთ დისტანციური მართვა?! - მარტივია:
სიზარმაცე არის თვისება, რომელიც გვაიძულებს, დიდი ძალისხმევა შევამციროთ ენერგიის საერთო ხარჯები.
პირველად დისტანციური მართვა აჩვენა მსოფლიოს გამომგონებელმა ნიკოლა ტესლამ 1898 წელს, მედისონ სკვერ გარდენში გამართულ გამოფენაზე, მან წარმოადგინა რადიომართვადი ნავი სახელწოდებით "ტელეავტომატური". დღეს ეს ტექნოლოგია ფართოდ გავრცელდა, დაემატა მხოლოდ ბრძანებების გადაცემის სხვადასხვა მეთოდი (საკომუნიკაციო არხი).
ძირითადი საკომუნიკაციო არხები მოიცავს:
- რადიო არხი
- ულტრაბგერითი
- ინფრაწითელი
ამ სტატიაში ვისაუბრებთ მოწყობილობის მართვაზე ინფრაწითელი დისტანციური მართვის საშუალებით. ინფრაწითელი გამოსხივება არის ელექტრომაგნიტური გამოსხივება, რომელიც იკავებს სპექტრულ ზონას ხილული სინათლის წითელ ბოლოსა და მიკროტალღურ გამოსხივებას შორის. ინფრაწითელი გამოსხივება არ ჩანს ადამიანის თვალით, მაგრამ მისი დანახვა შესაძლებელია კამერით ან ვიდეოკამერით. ხშირად ასე ამოწმებენ ტელევიზორის დისტანციური მართვის ფუნქციონირებას სახლში.
ერთხელ ჩემს ძველ სამსახურში ავიღე დისტანციური მართვის პულტი და "საყურე" (IR მიმღები) უსაფრთხოების სისტემიდან, რომელიც ჩამოწერილი იყო, ის დიდი ხნის განმავლობაში უმოქმედო იყო და ბოლოს შევამოწმე მისი მუშაობა. .
ამ მიმღების დაშლის შემდეგ დავინახე რაღაც ხრიკი ამ „თვალში“ 4 IR მიმღები იყო შედუღებული. ეს გაკეთდა იმისათვის, რომ მიეღო IR ტალღები ოთხი მხრიდან. და ეს მოსახერხებელია, თქვენ არ გჭირდებათ საკუთარი თავის შეზღუდვა გარკვეული მიღების კუთხით.
მეც დავხატე მსგავსი წრე ოთხი მიმღებით, თუ დამჭირდებოდა. მე გამოვიყენე TSOP1836 IR მიმღებები, მაგრამ შეგიძლიათ გამოიყენოთ სხვა. 360 გრადუსიანი მიღების უზრუნველსაყოფად, თქვენ უნდა აირჩიოთ შესაბამისი IR მიმღები (მიღების ფართო კუთხით) და მოათავსოთ ისინი ერთმანეთთან რაც შეიძლება ახლოს. მე ვერ შევამჩნიე რაიმე პრობლემა ჩემს მიმღებებთან. მე ასევე ჩავრთე ბეჭდური მიკროსქემის დაფა და ელემენტების მდებარეობა დანართში.
ბრძანებების დასამუშავებლად ბუნებრივად გამოვიყენებ arduino uno-ს, შემიძლია გამოვიყენო IR როგორც მიმღები
TSOP34836 (აქვს მიღების მაღალი დიაპაზონი, მაგრამ უფრო ძვირია) ან TL1838. თქვენ შეგიძლიათ აიღოთ ნებისმიერი IR პულტი, თუნდაც ტელევიზორიდან. კარგად, თუ გჭირდებათ საკუთარი დისტანციური მართვის პულტი, შეგიძლიათ შეიძინოთ ნაკრები arduino-სთვის.
მუშაობის პრინციპი:
დისტანციური მართვის ღილაკზე დაჭერისას ის აგზავნის ღილაკის კოდს ინფრაწითელ შუქზე, რის შემდეგაც მიმღები იღებს ამ ღილაკის კოდს და აგზავნის მას აქტუატორთან, რომელიც ღილაკიდან გამომდინარე შეასრულებს გარკვეულ მოქმედებას.
თქვენ ასევე შეგიძლიათ ინფორმაციის გადაცემა მცირე მანძილზე IR ტალღების გამოყენებით. თქვენი ბრძანებების ან ინფორმაციის გადასაცემად, შეგიძლიათ გამოიყენოთ მეორე arduino IR გადამცემით. მაგრამ ასეთი გადაცემის სიჩქარე ძალიან ნელია. ინფრაწითელი არხის უპირატესობებში შედის ელექტრომაგნიტური ჩარევისადმი მგრძნობელობა.
arduino IR სიგნალების მისაღებად, ჩვენ დავუკავშირებთ IR მიმღებს შემდეგნაირად:
გთხოვთ გაითვალისწინოთ, რომ მიმღების ფეხების მდებარეობა შეიძლება განსხვავდებოდეს.
მიმღებს აქვს 3 ფეხი, "+" და "-" კვების წყარო (ძირითადად ძაბვა 3.3-5V) და მონაცემთა ფეხი არის ის, რაც გადასცემს ინფორმაციას მოწყობილობას (ჩვენს შემთხვევაში, arduino). TSOP34836-ის მიწოდების ძაბვა არის 2.7-5.5 ვოლტი. გამოვიყენებ 5 ვოლტს სტანდარტული არდუინოს გამომავალიდან.
რა თქმა უნდა, თქვენ გჭირდებათ firmware arduino-სთვის. მუშაობის ალგორითმი იქნება ასეთი: პულტის ზედა ღილაკზე დაჭერისას არდუინო ჩართავს რელეს, ხოლო როცა ისევ დააჭერთ გამორთავს. ამ რელეს გამოყენებით შეგიძლიათ ჩართოთ, მაგალითად, შუქნიშანი, მაგრამ არ არის აუცილებელი რელეზე ღილაკის დაჭერის დაპროგრამება, შეგიძლიათ კომპიუტერზე ბრძანების გამოტანა ან გარკვეული ოპერაციის შესრულება arduino-ში და ა.შ.
სამუშაოს გასამარტივებლად გამოვიყენებთ მზა ბიბლიოთეკას. firmware კოდი:
#შეიცავს
void setup() (
Serial.begin(9600);
irecv.enableIRIn(); // ჩართეთ მიმღები
pinMode (RELAY_PIN, OUTPUT); // რელეს კონფიგურაცია გამოსავალზე
ციფრული ჩაწერა (RELAY_PIN,HIGH); //დააყენეთ მნიშვნელობა მაღალი
}
void loop() (
if (irrecv.decode(&results)) (//თუ მონაცემები მიღებულია
Serial.print ("0x");
Serial.println(results.value, HEX);//მიღებული შეტყობინების გამოტანა ტერმინალში
if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF)) digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));//თუ ღილაკის კოდი საპირისპიროა 0x8FF40BF ან 0xB0F ასახელებს ხელახლა შესაცვლელად
დაგვიანებით(200)
irrecv.resume();// მიიღეთ შემდეგი მნიშვნელობა
}
}
ნება მომეცით ავხსნა ცოტა ესკიზით:
if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF))
შედეგად მიღებული მნიშვნელობა შედარებულია "0x8FF40BF" და "0xD72040BF" - ეს არის ღილაკების კოდები თექვსმეტობითი აღნიშვნით. ორი მნიშვნელობა მხოლოდ იმიტომ, რომ მე ვიყენებ ორი დისტანციური მართვის უნიკალური კოდებით.
digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));
ციფრული პინით ჩაწერის სტანდარტული პროცედურა გარდა "!digitalRead(RELAY_PIN)". მოაწერე "!" აღნიშნავს ინვერსიას, ჩვენს შემთხვევაში ციფრული გამომავალი "RELAY_PIN" მდგომარეობის ინვერსიას.
Serial.print ("0x");
Serial.println(results.value, HEX);//მიღებული შეტყობინების გამოტანა ტერმინალში
ეს ხაზები აგზავნის ყველა მიღებულ კოდს ტერმინალში. სამუშაო პროგრამაში ეს არ არის აუცილებელი, მაგრამ აუცილებელია კონკრეტული ღილაკისთვის საჭირო კოდის გარკვევა. ანუ ჯერ ავტვირთავთ ესკიზს Arduino-ში, მივდივართ ტერმინალში და ღილაკზე დაჭერით მივიღებთ სასურველ კოდს.
ასევე არსებობს რამდენიმე განსხვავებული მაგალითი IRremote ბიბლიოთეკაში, რომლებიც შეიძლება სასარგებლო იყოს.
სტატიის დანართში:
- ესკიზი არდუინოსთვის
- PCB 4 სენსორისთვის
ცოტა ხნის წინ დამჭირდა ტელევიზორის დისტანციური მართვის კონტროლი პატარა პროექტისთვის არდუინო. იდეა იყო კონდიციონერის გაკონტროლება არდუინოტემპერატურის სენსორით. ჩემს კონდიციონერს მოყვება საკმაოდ მოსახერხებელი დისტანციური მართვის პულტი, მაგრამ მისი ჩართვა, ტემპერატურის დაყენება და გამორთვა ავტომატიზირებულია. დიდი ხნის ძებნის შედეგად, მე თვითონ მოვახერხე გამოსავალი მეპოვა. მეტი დეტალი ამის შესახებ ჭრის ქვეშ.
როგორ მუშაობს ეს
დაკავშირება IR მიმღები, ჩვენ ვხელმძღვანელობთ დისტანციური მართვამიმღებს, ჩაწერეთ სიგნალი და გამოუშვით იგი სერიალი. (რადგან ეს სტატიის პირველი ნაწილია, ჩვენ არ განვიხილავთ სიგნალის გაგზავნას. გაგზავნაზე ვისაუბრებთ მეორე ნაწილში).
რა გვჭირდება
- არდუინო(ან ანალოგებს, მე ვიყენებ ტოსდუინო- 2-ჯერ იაფი, სრულად თავსებადია ჩვეულებრივ არდუინოსთან)
- LED ( LED)
- 220 kOhm რეზისტორი
- IR მიმღები სერიიდან
კავშირი
IR მიმღები
LED
არდუინო | პურის დაფა | არდუინო |
---|---|---|
პინი ნომერი 11 | რეზისტორი 220 kOhm | GND (GrouND) |
IR ტექნოლოგია
ხილული ხელმისაწვდომობის მქონე მოწყობილობის დისტანციურად მართვის ყველაზე იაფი გზა ინფრაწითელი გამოსხივების გამოყენებით. ამ გზით შესაძლებელია თითქმის ყველა აუდიო და ვიდეო აღჭურვილობის კონტროლი. ფართო ხელმისაწვდომობის წყალობით, საჭირო კომპონენტები საკმაოდ იაფია, რაც ამ ტექნოლოგიას იდეალურს ხდის ჩვენთვის, ვისაც უყვარს IR დისტანციური მართვის გამოყენება ჩვენი საკუთარი პროექტებისთვის.
ინფრაწითელი გამოსხივება რეალურად არის ნორმალური სინათლე კონკრეტული ფერის მქონე. ჩვენ ადამიანები ვერ ვხედავთ ამ ფერს, რადგან მისი ტალღის სიგრძეა 950 ნმ, რაც ხილული სპექტრის ქვემოთაა. ეს არის ერთ-ერთი მიზეზი, რის გამოც IR არჩეულია ტელემექანიკის საჭიროებებისთვის, ჩვენ გვინდა მისი გამოყენება, მაგრამ არ გვაინტერესებს მისი ნახვა. მიუხედავად იმისა, რომ ჩვენ ვერ ვხედავთ დისტანციური მართვისგან გამოსხივებულ ინფრაწითელ შუქს, ეს არ ნიშნავს იმას, რომ ჩვენ არ შეგვიძლია მისი ხილვა.
ვიდეოკამერა ან ციფრული კამერა „ხედავს“ ინფრაწითელ შუქს, როგორც ამას ქვემოთ მოცემულ ვიდეოში ხედავთ. ყველაზე იაფ მობილურ ტელეფონებსაც კი აქვთ ჩაშენებული კამერები. უბრალოდ მიმართეთ დისტანციური მართვის პულტს ასეთ კამერაზე, დააჭირეთ ნებისმიერ ღილაკს და დაინახავთ LED ციმციმებს.
მინიატურული მიმღებების სერია ინფრაწითელი დისტანციური მართვის სისტემებისთვის. PIN დიოდი და წინასწარ გამაძლიერებელი აწყობილია ტყვიის ჩარჩოზე და შექმნილია როგორც IR ფილტრი. დემოდულირებული გამომავალი სიგნალის პირდაპირ დეკოდირება შესაძლებელია მიკროპროცესორის მიერ. - ეს არის სტანდარტული მიმღები, მხარს უჭერს გადაცემის ყველა ძირითად კოდს.
ნაწილი | გადამზიდავი სიხშირე |
---|---|
30 kHz | |
33 kHz | |
36 kHz | |
36.7 kHz | |
38 kHz | |
40 kHz | |
56 kHz |
IRremote.h
ჩამოტვირთეთ ბიბლიოთეკა IR დისტანციურიშეგიძლიათ ჩემი საცავიდან Github.com-ზე
ამ ბიბლიოთეკის დასაყენებლად დააკოპირეთ არქივის შიგთავსი: arduino-1.x/libraries/IRremote სადაც arduino-1.x არის საქაღალდე, სადაც არის დაინსტალირებული Arduino-1.x/libraries/IRremote /IRremote.cpp ხელმისაწვდომი უნდა იყოს და IRremote.h
მაგალითი No1 - ვიღებთ დისტანციური მართვის ღილაკის კოდს
ეს ჩანახატი წაიკითხავს დისტანციურ მართვის პულტზე დაჭერილი ღილაკის კოდს და ამ ღილაკის შესახებ ინფორმაციას გადასცემს სერიულ პორტს, რათა შემდეგ ეს კოდი გამოვიყენოთ.
#შეიცავს
მე გამოვიყენებ ამ ღილაკების კოდებს ყველა შემდეგ მაგალითში:
მაგალითი No2 - დისტანციური მართვის ღილაკისთვის სახელის მინიჭება
მოდით გავაგზავნოთ ღილაკების სახელები სერიულ პორტში. (პირველ რიგში ამ ღილაკების კოდები უნდა დავიჭიროთ და სახელები მივცეთ, გადახედეთ კოდს, მგონი იქ ყველაფერი გაირკვევა).
#შეიცავს
მაგალითი No3 - ჩართეთ LED დისტანციური მართვის ღილაკის გამოყენებით
ახლა ვასწავლოთ ჩვენი არდუინოჩართეთ LED PIN 11-ზე დისტანციური მართვის ღილაკის საშუალებით
#შეიცავს
მაგალითი No4 - PWM დისტანციური მართვის საშუალებით
ახლა მოდით გავაკონტროლოთ ჩვენი LED-ის სიკაშკაშე (რადგან ის დაკავშირებულია პორტ 11-თან, რომელსაც აქვს PWM, პრობლემები არ უნდა იყოს). სიკაშკაშის გასაკონტროლებლად გამოყენებული იქნება დისტანციური მართვის ღილაკები ზემოთ და ქვემოთ.
#შეიცავს
) analogWrite (LED, სიკაშკაშე);
irrecv.resume();
))
ინფრაწითელი გამოსხივების მიმღებები დღეს ფართოდ გამოიყენება საყოფაცხოვრებო ტექნიკაში ხელმისაწვდომი ფასის, სიმარტივისა და გამოყენების სიმარტივის გამო. ეს მოწყობილობები საშუალებას გაძლევთ მართოთ მოწყობილობები დისტანციური მართვის გამოყენებით და შეგიძლიათ იპოვოთ თითქმის ნებისმიერი ტიპის მოწყობილობაში. მაგრამ ამის მიუხედავად, Bluetooth მოდული თანდათან უფრო და უფრო მეტ პოპულარობას იძენს.
IR მიმღების მუშაობის პრინციპი. დისტანციური მართვის სიგნალის დამუშავება
IR მიმღებს Arduino-ზე შეუძლია მიიღოს და დამუშავდეს ინფრაწითელი სიგნალი მოცემული ხანგრძლივობისა და სიხშირის იმპულსების სახით. გამოიყენება Arduino-სთვის დაბრკოლებების სენსორისა და დიაპაზონის მპოვნელის წარმოებაში. როგორც წესი, IR მიმღებს აქვს სამი ფეხი და შედგება შემდეგი ელემენტებისაგან: PIN ფოტოდიოდი, გამაძლიერებელი, გამტარი ფილტრი, ამპლიტუდის დეტექტორი, ინტეგრირებული ფილტრი და გამომავალი ტრანზისტორი.
ინფრაწითელი გამოსხივების ზემოქმედებით ფოტოდიოდში, რომელსაც შორის გვდა ნრეგიონებმა შექმნეს ნახევარგამტარის დამატებითი რეგიონი ( მე-რეგიონი), დენი იწყებს დინებას. სიგნალი მიდის გამაძლიერებელზე, შემდეგ კი გამტარ ფილტრზე, რომელიც მორგებულია ფიქსირებულ სიხშირეზე: 30; 33; 36; 38; 40 და 56 კილოჰერცი და იცავს მიმღებს ჩარევისგან. ჩარევა შეიძლება გამოიწვიოს ნებისმიერი საყოფაცხოვრებო ტექნიკით.
იმისათვის, რომ დისტანციური მართვის სიგნალი მიიღოს Arduino IR მიმღებმა, დისტანციური მართვის პულტი უნდა იყოს იმავე სიხშირეზე, რომელზეც დაყენებულია ფილტრი IR მიმღებში. ამიტომ, ყველა დისტანციური მართვა არ იმუშავებს. თქვენ უნდა აირჩიოთ IR მიმღები და IR გადამცემი იგივე სიხშირით. ფილტრის შემდეგ, სიგნალი მიდის ამპლიტუდის დეტექტორზე, რომელიც აერთიანებს ფილტრსა და გამომავალ ტრანზისტორს.
როგორ დააკავშიროთ IR მიმღები Arduino-სთან
ინფრაწითელი მიმღების კორპუსები შეიცავს ოპტიკურ ფილტრს მოწყობილობის გარე ელექტრომაგნიტური ველებისგან დასაცავად. IR მიმღების Arduino UNO-სთან დასაკავშირებლად გამოიყენება სამი ფეხი, რომლებიც დაკავშირებულია - GND, 5V და A0. ჩვენ გირჩევთ გამოიყენოთ 3.3 ვოლტი დასაწყებად, რათა არ დაიწვას IR სენსორი დაყენების დროს.
ამ გაკვეთილისთვის დაგვჭირდება შემდეგი დეტალები:
- Arduino Uno / Arduino Nano / Arduino Mega board;
- breadboard;
- IR მიმღები;
- დისტანციური მართვა;
- 1 LED და 220 Ohm რეზისტორი;
- მამრობითი მამრობითი და მამრობითი მდედრობითი სქესის მავთულები.
IR მიმღების დაკავშირების დიაგრამა Arduino ანალოგურ პორტთან
შეაერთეთ IR მიმღები ზემოთ ნაჩვენები სქემის მიხედვით და დააკავშირეთ LED-ები 12 და 13 ქინძისთავებს. პროგრამის ჩამოტვირთვამდე დაგჭირდებათ IRremote.h ბიბლიოთეკის ინსტალაცია, თუ ის უკვე არ არის დაინსტალირებული. ეს ბიბლიოთეკა არ ეკუთვნის Arduino IDE პროგრამირების გარემოს სტანდარტულ ბიბლიოთეკებს. შეგიძლიათ ჩამოტვირთოთ IRremote.h ბიბლიოთეკა და დასრულებული ესკიზი ერთ არქივში Google Drive-დან ბმულის გამოყენებით.
ესკიზი Arduino IR მიმღებისთვის:
#შეიცავსახსნა კოდისთვის:
- IRremote.h ბიბლიოთეკა შეიცავს ბრძანებების ერთობლიობას და საშუალებას გაძლევთ გაამარტივოთ ესკიზი;
- decode_results განცხადება ანიჭებს ცვლადის სახელს შედეგებს დისტანციური მართვის მიღებულ სიგნალებს.
IR სენსორი შეიძლება გამოყენებულ იქნას Arduino მიკროკონტროლერზე არსებულ ბევრ მოწყობილობაში, მათ შორის დისტანციური მართვის სერვო დისკი Arduino-ზე IR მიმღებიდან. დაყენებისას უნდა ჩართოთ Arduino IDE პორტის მონიტორი და გაარკვიოთ რა სიგნალს იგზავნება დისტანციური მართვის ესა თუ ის ღილაკი. მიღებული კოდები უნდა იქნას გამოყენებული ესკიზში if() პირობებში ორმაგი ტოლობის ნიშნის შემდეგ.
პოსტები ამ თემაზე:
IR Receiver მოდული IR დისტანციურ მართვასთან ერთად საშუალებას მოგცემთ მარტივად განახორციელოთ Arduino დაფის დისტანციური მართვა.
ეს სხვა არაფერია, თუ არა VS1838B IR მიმღები დაფაზე დამონტაჟებული მწარმოებლის მიერ რეკომენდებული აღკაზმულობა.
ამ მოდულთან მუშაობისთვის საჭიროა დისტანციური მართვის პულტი 38 kHz სიხშირით.
ამ დაფის უპირატესობა არის შემაერთებელი კონექტორი, რომელიც საშუალებას გაძლევთ შეცვალოთ IR მიმღები სხვათ, რომელიც მუშაობს თქვენი პროექტისთვის საჭირო სიხშირეზე შედუღების გარეშე.
ძირითადი ტექნიკური მახასიათებლები:
მიწოდების ძაბვა: 2.7 - 5.5V
მოდულაციის სიხშირე: 38 kHz
ტემპერატურის დიაპაზონი: - 20 ... + 80°C
ინტერფეისი: ციფრული
დაკავშირება Arduino-სთან
მოდული აღჭურვილია სამი პინიანი 2.54 მმ კონექტორით
: უერთდება GND პინს
: უერთდება +5V გამომავალს
: აკავშირებს ციფრულ პინთან (მაგალითად D2)
არდუინოს გარემოში მუშაობის მაგალითი
ამ მოდულთან მუშაობისთვის საჭიროა დააინსტალიროთ IRremote ბიბლიოთეკა
ჩამოტვირთეთ, ამოალაგეთ და განათავსეთ ბიბლიოთეკების საქაღალდეში Arduino საქაღალდეში. თუ Arduino IDE ღია იყო ბიბლიოთეკის დამატების დროს, გადატვირთეთ გარემო.
დისტანციური მართვის ღილაკების კითხვა
დისტანციური მართვის ჩვენებების წასაკითხად შეავსეთ ესკიზი ქვემოთ. ის გამოსცემს დაჭერილი ღილაკების კოდირებას პორტში.
მაგალითად, გამოვიყენებთ დისტანციურ კონტროლს, როგორც სურათზე, რადგან... ამ ტიპის დისტანციური მართვის კომპლექტში შედის
თქვენ შეგიძლიათ წაიკითხოთ სხვადასხვა დისტანციური მართვის ლოგიკის განსხვავებების შესახებ ორიგინალურ სტატიაში ჩვენი საზოგადოების წევრის მეტსახელით.
კოდის ნიმუში:
#შეიცავს))
თქვენ უნდა ნახოთ შემდეგი პორტის მონიტორზე:
ყოველი ღილაკის დაჭერით თითქმის წამით ვიღებთ დაახლოებით 10 კოდს. პირველი არის ღილაკის კოდი. და ამის შემდეგ იწყება სტანდარტული კოდის გამოჩენა, რომელიც იტყობინება, რომ ღილაკი გაჩერებულია.
Arduino დაფის მართვა დისტანციური მართვის საშუალებით
კოდის ნიმუში:
მოდით, არდუინოს დაფაზე (D13) LED აანთოთ პირველი ღილაკის დაშიფვრისას და გამორთოთ მეორე ღილაკის დაშიფვრისას.// დატესტილია Arduino IDE 1.0.3-ზე