Სარჩევი:

UChip - სერიული IR!: 4 ნაბიჯი
UChip - სერიული IR!: 4 ნაბიჯი

ვიდეო: UChip - სერიული IR!: 4 ნაბიჯი

ვიდეო: UChip - სერიული IR!: 4 ნაბიჯი
ვიდეო: This Is What Kenyan Mum Bought At Target 2024, ივლისი
Anonim
UChip - სერიული მეტი IR!
UChip - სერიული მეტი IR!
UChip - სერიული მეტი IR!
UChip - სერიული მეტი IR!

უკაბელო კომუნიკაცია გახდა მთავარი მახასიათებელი ჩვენს პროექტებში და საუბარი უკაბელოზე, პირველი რაც მახსენდება არის Wi-Fi ან BT, მაგრამ Wi-Fi ან BT საკომუნიკაციო პროტოკოლების დამუშავება არ არის ადვილი ამოცანა და ბევრს ხარჯავს. MCU რესურსები, რაც მცირე ადგილს ტოვებს ჩემი პროგრამის კოდირებისთვის. ამიტომ, მე ჩვეულებრივ ვირჩევ გარე Wi-Fi/BT მოდულს, რომელიც სერიულად არის დაკავშირებული მიკროკონტროლერთან, როლების გაყოფისა და უმაღლესი თავისუფლების მოსაპოვებლად.

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

წარმოიდგინეთ, რომ თქვენ უბრალოდ გჭირდებათ გარე შუქის ჩართვა/გამორთვა, ან ნათურის ინტენსივობის შეცვლა, ან ელექტრო კარიბჭის გახსნა. ღირს Wi-Fi ან BT გამოყენება?

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

მასალების ანგარიში (ერთი Tx-Rx მოწყობილობისთვის):

1 x uChip

1 x IR LED: აქვს ემისიის პიკი 950nm

1 x TSOP-38238 (ექვივალენტის)

1 x 1KOhm რეზისტორი

ტექნიკა

1 x პურის დაფა/პროტო დაფა

1 x შავი პლასტმასის მილი: შიდა დიამეტრი იგივე ზომის, რაც IR LED, მილაკი აუცილებელია TSOP მიმღებთან ჯვრისწერის თავიდან ასაცილებლად.

1 x ალუმინის კილიტა (3 სმ x 3 სმ)

1 x ფირზე

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

ნაბიჯი 1: გაყვანილობა

გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა

შეაერთეთ კომპონენტები სქემატური შესაბამისად.

რამდენიმე შენიშვნა მარტივ სქემატურზე. ვინაიდან TSOP-38238 იძლევა კვების ბლოკს 2.5V– დან 5V– მდე და შთანთქავს 0,45 mA– ს მაქსიმუმ (მონაცემების ცხრილს ნახავთ აქ), მე მიმღებს დავამუშავებ ორი ქინძისთავის გამოყენებით, რაც უზრუნველყოფს მიწას და კვების ბლოკს შესაბამისად. ეს საშუალებას გაძლევთ ჩართოთ/გამორთოთ მიმღები მოთხოვნით და ძალიან მარტივი აპარატურის გაყვანილობა. გარდა ამისა, იმ შემთხვევაში, თუ თქვენ გჭირდებათ ერთი მიმართულებით კომუნიკაცია, თქვენ შეგიძლიათ აირჩიოთ გააკეთოთ თუ არა (Tx/Rx) მხოლოდ მოწყობილობა, უბრალოდ გამორთოთ/ჩართოთ TSOP-38238.

როგორ მუშაობს წრე?

საკმაოდ მარტივია. TSOP გამომავალი პინი დაბლა იწევს მაშინ, როდესაც სენსორი აღმოაჩენს 6 პულსის ან მეტის მატარებელს 38KHz– ზე, მეორეს მხრივ ის მაღლა იწევს, როდესაც ასეთი სიგნალი არ არის. ამრიგად, სერიული მონაცემების IR- ზე გადასაცემად, რას აკეთებს წრე არის LED ანოდის ჩართვა 38KHz PWM მოდულირებული TX სერიული სიგნალით, რომელიც დაბლა იწევს LED კათოდს.

შესაბამისად, სერიული TX0- ის მაღალ დონეზე, LED არ არის მიკერძოებული ან მიკერძოებული საპირისპიროდ (არ არის პულსი) და TSOP გამომავალი პინი მაღლა იწევს. სერიალზე დაბალი დონის გადაცემა, LED იკვებება და შესაბამისად წარმოქმნის IR იმპულსებს გამოყენებული PWM სიგნალის შესაბამისად; შესაბამისად, TSOP გამომავალი დაბალია.

ვინაიდან გადაცემა პირდაპირია (0-> 0 და 1-> 1) არ არის საჭირო ინვერტორების ან სხვა ლოგიკის მიმღების მხარეს.

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

გაითვალისწინეთ, რომ ჩვენ ჯერ კიდევ გვჭირდება პულსის გამომუშავება! ამრიგად, თქვენ არ უნდა გადახვიდეთ 90% –იან სამუშაო ციკლზე, წინააღმდეგ შემთხვევაში TSOP ვერ აღმოაჩენს სიგნალს იმპულსების სახით.

გჭირდებათ მეტი ძალა?

დენის გასაზრდელად, შეგვიძლია უბრალოდ შევამციროთ 1 კჰმ რეზისტორის მნიშვნელობა?

შეიძლება, უბრალოდ არ იყოს ძალიან მომთხოვნი! მაქსიმალური დენი, რომელსაც მიიღებთ MCU– ს პინიდან, შემოიფარგლება 7 mA– ით, როდესაც ჩვეულებრივზე ძლიერ პორტის ბორბალს მართავთ (PINCFG. DRVSTR = 1 და VDD> 3V), როგორც ეს ნათქვამია SAMD21 მონაცემთა ცხრილში.

თუმცა, სტანდარტული კონფიგურაცია (რომელიც არის Arduino IDE ბიბლიოთეკების მიერ ნაგულისხმევი), ზღუდავს დენს 2 mA- მდე. ამიტომ, 1kOhm– ის გამოყენება უკვე იძლევა მიმდინარე ლიმიტს ნაგულისხმევი პარამეტრებით!

დენის გაზრდა არ არის მხოლოდ ელექტრო კომპონენტების საკითხი. მოკლედ:

  • შეცვალეთ რეზისტორი (რომლის მინიმალური მნიშვნელობა შემოიფარგლება დაახლოებით 470Ohm -> VDD/470 ~ 7mA);
  • დააყენეთ შესაბამისი PORT-> PINCFG-> DRVSTR 1;

კოდს ამ ფუნქციის ჩათვლით მივცემ მომავალ განახლებაში.

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

ნაბიჯი 2: პროგრამირება

ჩადეთ ესკიზი "IRSerial.ino" uChip- ში (ან Arduino თავსებადი დაფა, რომელსაც თქვენ იყენებთ).

იმ შემთხვევაში, თუ თქვენ გჭირდებათ PWM- ის გამომმუშავებელი პინის შეცვლა, დარწმუნდით, რომ იყენებთ TCC ქრონომეტრთან დაკავშირებულ პინს, ვინაიდან კოდის ეს ვერსია მუშაობს მხოლოდ TCC ქრონომეტრებით (ამ ინფორმაციისთვის შეამოწმეთ თქვენი დაფის „variant.c“). მე დავამატებ კოდს, რათა გამოვიყენო ასევე TC ტაიმერები მომავალ განახლებებში.

კოდი საკმაოდ მარტივია. PIN_5 დაბალი (უზრუნველყოფს TSOP GND) და PIN_6 მაღალი (ძალა TSOP) დაყენების შემდეგ, MCU იწყებს PWM– ს PIN_1– ზე, ადგენს ტაიმერის პერიოდს და აფიქსირებს საჭირო სიხშირის მოდულაციას (ჩემს შემთხვევაში ეს არის 38 KHz) და მოვალეობას ციკლი (12.5% ნაგულისხმევად). ეს კეთდება სტანდარტული analogWrite () ფუნქციის გამოყენებით PWM ქინძისთავებზე და იცვლება მხოლოდ PER_REG (პერიოდის რეგისტრი) და CC (გადაღების შედარება) რეგისტრი (ჩაწერილი კოდი უბრალოდ გაყვანილობა-ჩასმაა გაყვანილობის_ანალოგის ბიბლიოთეკიდან). თქვენ შეგიძლიათ დააყენოთ საჭირო სიხშირე TSOP სენსორის შეცვლით PER_REG (რაც არის ტაიმერის მრიცხველის გადატვირთვის ზედა ზღვარი), ხოლო CC დაყენება პერიოდის მნიშვნელობის პროპორციულად სამუშაო ციკლის სასურველ პროცენტთან.

შემდეგი, კოდი ადგენს სერიულ პორტს სწორი ბადის სიჩქარის გამოყენებით, რომელიც არის 2400bps. რატომ ასეთი დაბალი ბაუდი ?! პასუხი არის TSOP მონაცემთა ცხრილში, რომელიც შეგიძლიათ ნახოთ აქ. ვინაიდან TSOP– ს აქვს მაღალი ხმაურის უარყოფის ფილტრები არასასურველი გადართვის თავიდან ასაცილებლად, აუცილებელია გავგზავნოთ რამოდენიმე იმპულსების მატარებელი TSOP გამომავალი პინის ჩამოსაწერად (იმპულსების რაოდენობა დამოკიდებულია TSOP ვერსიაზე, 6 არის ტიპიური მნიშვნელობა). ანალოგიურად, TSOP– ის გამომუშავება მაღლა იწევს მინიმალური დროის შემდგომ 10 ექვივალენტის ან მეტი ექვივალენტისთვის. შესაბამისად, იმისათვის, რომ TSOP გამომავალი იყოს მოდულირებადი TX0 სიგნალი, აუცილებელია ბაუდის სიჩქარის დადგენა შემდეგი განტოლების გათვალისწინებით:

სერიული ბაუდი <PWM_frequency/10

38KHz– ის გამოყენებით, ეს იწვევს 3800 bps– ზე დაბალ baudrate– ს, რაც იმას ნიშნავს, რომ უმაღლესი „სტანდარტული“დასაშვები სიჩქარე არის 2400 pbs, როგორც ადრე იყო მოსალოდნელი.

გსურთ ბაუდის მაჩვენებლის გაზრდა? არის ორი ვარიანტი.

უმარტივესი ვარიანტია TSOP- ის შეცვლა უფრო მაღალი სიხშირის ვერსიით (როგორც TSOP38256), რაც საშუალებას მოგცემთ გაორმაგოთ ბაუდის სიჩქარე (4800bps)

Არ არის საკმარისი?! შემდეგ თქვენ უნდა შექმნათ თქვენი საკუთარი ოპტიკური ბმული მარტივი IR LED+ფოტოდიოდისა და გამაძლიერებელი მიკროსქემის გამოყენებით. თუმცა, ეს გამოსავალი მოითხოვს უამრავ კოდირებას და ელექტრონიკას, რათა ხმაურმა არ მოახდინოს გადაცემულ მონაცემებზე ზემოქმედება და ამიტომ მისი განხორციელება სულაც არ არის ადვილი! თუმცა, თუ თავს საკმარისად თავდაჯერებულად გრძნობთ, თქვენ უფრო მეტი მისასალმებელია, რომ სცადოთ საკუთარი TSOP სისტემის შექმნა!:)

საბოლოოდ, მე დავაყენე SerialUSB პორტი (2400bps), რომელსაც ვიყენებ სერიული მონიტორის მონაცემების გასაგზავნად და მისაღებად.

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

ნაბიჯი 3: IR LED- ის დაცვა

დამცავი IR LED
დამცავი IR LED
დამცავი IR LED
დამცავი IR LED

თუ თქვენ ჩართავთ ზემოაღნიშნულ სქემას "IRSerial.ino" კოდის ჩატვირთვის შემდეგ, შეამოწმეთ სერიული მონიტორი Arduino IDE- ზე და სცადეთ გაგზავნოთ სტრიქონი. თქვენ ალბათ ნახავთ, რომ uChip იღებს ზუსტად იმას, რასაც გადასცემს! წრეში არის ჯვარედინი საუბარი IR LED- სა და იმავე მოწყობილობის TSOP- ს შორის ოპტიკური კომუნიკაციის გამო!

აქ მოდის ამ პროექტის რთული ნაწილი, რომელიც ხელს უშლის ჯვრისწერას! მარყუჟი უნდა გატეხილი იყოს ორმხრივი სერიული კომუნიკაციის IR- ით.

როგორ გავტეხოთ მარყუჟი?

პირველი ვარიანტი, თქვენ ამცირებთ PWM სამუშაო ციკლს, რითაც ამცირებთ LED- ის ოპტიკურ სიმძლავრეს. ამასთან, ეს მიდგომა ასევე ამცირებს მანძილს, რომლის მანძილზე მიიღებთ საიმედო სერიულ IR არხს. მეორე ვარიანტი არის IR LED- ის დაცვა, რითაც ხდება მიმართული IR "სხივი". ეს არის ცდისა და შეცდომის საკითხი; ბოლოს, შავი პნევმატური ჰაერის შლანგის ნაჭრით, რომელიც ალუმინის ფოლგაში და ლენტში იყო გახვეული (ელექტრო იზოლაციის უზრუნველყოფა) მოვახერხე ჯვარედინი საუბრის გაწყვეტა. მილის შიგნით გადამცემი IR LED- ის დაყენება ხელს უშლის იმავე მოწყობილობის TX და RX შორის კომუნიკაციას.

შეხედეთ სურათს, რომ ნახოთ ჩემი გამოსავალი, მაგრამ მოგერიდებათ სცადოთ სხვა მეთოდები და/ან შემოგვთავაზოთ თქვენი! ამ საკითხის აბსოლუტური გადაწყვეტა არ არსებობს (თუ არ გჭირდებათ მარტივი ერთი მიმართულების არხი) და თქვენ ალბათ უნდა შეცვალოთ სქემის განლაგება, PWM სამუშაო ციკლი და IR ფარი თქვენი საჭიროებების შესაბამისად.

მას შემდეგ რაც დაარღვევთ ჯვარედინი საუბარს, შეგიძლიათ გადაამოწმოთ, რომ თქვენი მოწყობილობა ჯერ კიდევ მუშაობს, შექმენით მარყუჟი მოწყობილობაზე Tx-Rx, რომელიც იყენებს IR ტალღის სიგრძის ანარეკლს IR ამრეკლ ზედაპირებზე.

ნაბიჯი 4: დაუკავშირდით

დაუკავშირდით!
დაუკავშირდით!
დაუკავშირდით!
დაუკავშირდით!

Ეს ყველაფერია

თქვენი სერიული ინფრაწითელი მოწყობილობა მზადაა კომუნიკაციისთვის, გამოიყენეთ ისინი მონაცემების გადაგზავნით IR- ზე, ჩართეთ/გამორთეთ ყველაფერი რაც მოგწონთ ან შეამოწმეთ სენსორის სტატუსი, რომელსაც თქვენ ფარულად მალავთ!

მანძილი, რომელზედაც კომუნიკაცია საიმედოა, არ არის იმდენად, რამდენადაც WiFi ან BT მოწყობილობისთვის. თუმცა, ის მიმართულია (დამოკიდებულია დიაფრაგმის დიაფრაგმაზე და განხორციელებული IR დამცავი სისტემაზე), რაც შეიძლება ძალიან სასარგებლო იყოს ზოგიერთ პროგრამაში!

მალე ავტვირთავ ვიდეოს, სადაც ნახავთ ჩემს მიერ გაკეთებული პროგრამების რამდენიმე მაგალითს. ისიამოვნეთ!

გირჩევთ: