Mündəricat:
Video: UChip - IR üzərində Serial !: 4 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
İndiki vaxtda simsiz ünsiyyət layihələrimizin əsas xüsusiyyətinə çevrildi və simsiz əlaqə haqqında danışarkən ağlıma gələn ilk şey Wi-Fi və ya BT-dir, lakin Wi-Fi və ya BT ünsiyyət protokollarını idarə etmək asan məsələ deyil və çox istehlak edir. MCU qaynaqları, tətbiqimi kodlaşdırmaq üçün kiçik bir yer buraxdı. Buna görə rolları bölmək və daha yüksək azadlıq əldə etmək üçün ümumiyyətlə mikrokontrolöre ardıcıl olaraq qoşulmuş xarici bir Wi-Fi/BT modulu seçirəm.
Ancaq bəzən aşağı bit sürəti və qısa ünsiyyət məsafəsi tələb edən bəzi tətbiqlər üçün Wi-Fi və BT "həddindən artıq" olur. Bundan əlavə, Wi-Fi və ya BT-dən istifadə etmək, Smartfonunuzu və ya cihazınızı düzgün identifikasiya ilə birləşdirməyin zəruriliyini bildirir.
Təsəvvür edin ki, sadəcə xarici işığı yandırmaq/söndürmək və ya lampanın intensivliyini dəyişdirmək və ya elektrik qapısını açmaq lazımdır. Wi-Fi və ya BT istifadə etməyə dəyərmi?
Ətrafdan və tətbiqlərdən asılı olaraq, IR (İnfraqırmızı) dalğa uzunluğu üzərindən simsiz əlaqə lazımlı ola bilər. Bir neçə xarici komponentdən (3 ayrı komponentdən!) Və uChipdən (çox kiçik bir Arduino uyğun lövhə) istifadə olunan İQ üzərindən bir seriya aradığınız həll ola bilər!
Materiallar (bir Tx-Rx cihazı üçün):
1 x uChip
1 x IR LED: 950nm -də emissiya zirvəsinə malikdir
1 x TSOP-38238 (ekvivalent)
1 x 1KOhm Rezistor
Avadanlıq
1 x çörək taxtası/proto lövhə
1 x Qara Plastik Boru: daxili diametri İQ LED ilə eyni ölçüdədir, boru TSOP alıcısı ilə söhbətlərin qarşısını almaq üçün lazımdır.
1 x Alüminium Folqa (3 sm x 3 sm)
1 x Bant
İPUCU: Lazımsız RX/TX aparatını dövrədən çıxararaq və ya eskizdə əlaqəli kodu aktivləşdirərək/söndürərək bir yönlü ünsiyyətə ehtiyacınız olduğu təqdirdə yalnız TX və ya yalnız RX cihazı edə bilərsiniz.
Addım 1: Kabel çəkmə
Sxemaya uyğun olaraq komponentləri birləşdirin.
Sadə sxemə dair bir neçə qeyd. TSOP-38238, 2,5V-dan 5V-a qədər enerji təchizatına icazə verdiyindən və ən çoxu 0,45mA-nı udduğundan (məlumat cədvəlini BURADAN tapa bilərsiniz), alıcıya müvafiq olaraq torpaq və enerji təchizatı təmin edəcək iki pin istifadə edərək enerji verəcəyəm. Bu, tələbə əsasən alıcıyı açmağa/söndürməyə və çox sadə bir aparat naqilləri qurmağa imkan verir. Bundan əlavə, bir istiqamətli bir ünsiyyətə ehtiyacınız olduğu təqdirdə, TSOP-38238-i söndürmək/aktiv etməklə (Tx/Rx) yalnız bir cihaz hazırlamağı seçə bilərsiniz.
Dövrə necə işləyir?
Bu olduqca sadədir. Sensor 38KHz -də 6 və ya daha çox impulslu bir qatar algıladığında TSOP çıxış pimi aşağı çəkilir, digər tərəfdən isə belə bir siqnal olmadıqda yüksək çəkilir. Buna görə də, ardıcıl məlumatları IR üzərindən ötürmək üçün, dövrənin etdiyi şey, LED katodunu aşağı çəkən TX serial siqnalı ilə modulyasiya edilmiş 38KHz PWM ilə LED anodunu gücləndirməkdir.
Nəticə olaraq, yüksək səviyyəli TX0 səviyyəsində, LED arxa tərəfdə qərəzli və ya qərəzli deyil (nəbz yoxdur) və TSOP çıxış pimi yüksək çəkilir. Serialda aşağı səviyyəni ötürən LED, gücə malikdir və tətbiq olunan PWM siqnalına uyğun olaraq IR pulsları yaradır; buna görə TSOP çıxışı aşağı çəkilir.
Transmissiya birbaşa olduğundan (0-> 0 və 1-> 1) alıcı tərəfdə çeviricilərə və ya başqa məntiqə ehtiyac yoxdur.
Tətbiqə uyğun olaraq PWM iş dövrünü seçərək LED optik çıxış gücünü tənzimləyirəm. Vəzifə dövrü nə qədər yüksəkdirsə, optik çıxış gücü də o qədər yüksəkdir və buna görə də mesajınızı daha da ötürəcəksiniz.
Unutma ki, hələ də nəbzlər yaratmalıyıq! Beləliklə, 90% vəzifə dövrünü keçməməlisiniz, əks halda TSOP siqnalı puls olaraq algılamayacaq.
Daha çox gücə ehtiyacınız varmı?
Cərəyanı artırmaq üçün sadəcə 1kOhm rezistorun dəyərini azalda bilərikmi?
Bəlkə də çox tələbkar olmayın! SAMD21 məlumat cədvəlində göstərildiyi kimi, MCU pinindən əldə edə biləcəyiniz maksimum cərəyan, port pinini normaldan daha güclü idarə edərkən (PINCFG. DRVSTR = 1 və VDD> 3V) 7mA ilə məhdudlaşır.
Bununla birlikdə, standart konfiqurasiya (Arduino IDE kitabxanalarının standart olaraq qəbul etdiyi) cərəyanı 2mA ilə məhdudlaşdırır. Buna görə, 1kOhm istifadə etmək, cari həddi standart parametrlərlə verir!
Cərəyanı artırmaq təkcə elektrik komponentlərinə aid deyil. Qısaca:
- Rezistoru dəyişdirin (minimum dəyəri təxminən 470Ohm -> VDD/470 ~ 7mA ilə məhdudlaşır);
- Müvafiq olaraq PORT-> PINCFG-> DRVSTR-i 1 olaraq təyin edin;
Gələcək bir yeniləmədə bu xüsusiyyət daxil olmaqla kodu verəcəyəm.
Ancaq unutmayın ki, MCU pinlərindən həddinə yaxın olan cərəyanı batırmaq və boşaltmaq o qədər də yaxşı bir yanaşma deyil. Həqiqətən, MCU ömrünü və etibarlılığını azaldır. Buna görə uzun müddətli istifadə üçün normal sürücü gücünü saxlamağı təklif edirəm.
Addım 2: Proqramlaşdırma
"IRSerial.ino" eskizini uChip -ə (və ya istifadə etdiyiniz Arduino uyğun lövhəyə) yükləyin.
PWM yaradan pin dəyişdirməyinizə ehtiyac varsa, TCC taymerinə bağlı bir pin istifadə etdiyinizə əmin olun, çünki kodun bu versiyası yalnız TCC taymerləri ilə işləyir (bu məlumat üçün lövhənizin "variant.c" bölməsinə baxın)). Gələcək yeniləmələrdə TC taymerlərindən istifadə etmək üçün kodu əlavə edəcəyəm.
Kod olduqca sadədir. PIN_5 aşağı (TSOP GND təmin edir) və PIN_6 yüksək (TSOP -a enerji verir) təyin etdikdən sonra, MCU PWM -i PIN_1 -də işə salır, taymer müddətini təyin edir və lazımi tezlik modulyasiyasına (mənim vəziyyətimdə 38 KHz) uyğun olaraq müqayisə edir. dövrü (standart olaraq 12.5%). Bu, PWM pinlərindəki standart analogWrite () funksiyasından istifadə etməklə və yalnız PER_REG (dövr qeydiyyatı) və CC (çəkmə müqayisə) reyestrini dəyişdirməklə aparılır (yazılı kod sadəcə wiring_analog kitabxanasından kəsilmiş və yapışdırılır). Lazım olan tezliyi, PER_REG dəyişən TSOP sensörünə uyğun olaraq təyin edə bilərsiniz (bu, taymer sayğacının sıfırlanmasının yuxarı həddi), CC -ni dövrün dəyərinə istədiyiniz iş dövrünün faizinə nisbətlə təyin edə bilərsiniz.
Sonra, kod 2400bps olan düzgün ötürmə sürətini istifadə edərək Serial portunu təyin edir. Niyə belə aşağı baud dərəcəsi ?! Cavab TSOP məlumat cədvəlində BURADAN tapa bilərsiniz. TSOP -da arzuolunmaz keçidlərin qarşısını almaq üçün yüksək səs -küydən imtina filtrləri olduğundan, TSOP çıxış pinini aşağı çəkmək üçün birdən çox nəbzdən ibarət bir qatar göndərmək lazımdır (pulsların sayı TSOP versiyasından asılıdır, 6 tipik dəyərdir). Eynilə, TSOP çıxışı 10 və ya daha çox impulsa bərabər olan minimum müddətdən sonra yüksək çəkilir. Nəticə olaraq, TSOP çıxışını modulyasiya edən TX0 siqnalı olaraq təyin etmək üçün aşağıdakı tənliyi nəzərə alaraq baud sürətini təyin etmək lazımdır:
Serial Baud <PWM_frequency/10
38KHz -dən istifadə etməklə 3800bps -dən aşağı olan bir baud sürəti əldə edilir, bu da icazə verilən daha yüksək "standart" baud sürətinin əvvəlcədən gözlənildiyi kimi 2400 pbs -dir.
Baud sürətini artırmaq istəyirsiniz? İki variant var.
Ən asan seçim, TSOP -u daha yüksək tezlik versiyasına (TSOP38256 kimi) dəyişdirməkdir ki, bu da baud sürətini (4800bps) iki dəfə artırmağa imkan verir.
Kifayət deyil?! Sonra sadə bir IR LED+fotodiod və gücləndirmə sxemindən istifadə edərək öz optik bağlantınızı qurmalısınız. Bununla birlikdə, səs -küyün ötürülən məlumatlara təsir etməməsi üçün bu həll çoxlu kodlaşdırma və elektronika təcrübəsi tələb edir və buna görə də onun həyata keçirilməsi heç də asan deyil! Ancaq özünüzü kifayət qədər inamlı hiss edirsinizsə, öz TSOP sisteminizi yaratmağa cəhd edə bilərsiniz.:)
Nəhayət, serial monitorda məlumat göndərmək və almaq üçün istifadə etdiyim SerialUSB portunu (2400bps) təyin etdim.
Loop () funksiyası, iki serial üzərində məlumatları keçmək üçün lazım olan kodu ehtiva edir və yalnız serial adlarını dəyişdirərək SerialPassthrough nümunə eskizindən birbaşa kopyalanır.
Addım 3: Qoruyucu IR LED
"IRSerial.ino" kodunu yüklədikdən sonra yuxarıdakı dövrəni işə salırsınızsa, Arduino IDE -də Serial Monitoru yoxlayın və bir sim göndərməyə çalışın. Yəqin ki, uChip -in ötürdüklərini tam olaraq aldığını görəcəksiniz! IR LED və eyni cihazın TSOP arasındakı optik əlaqə səbəbiylə dövrədə çarpaz söhbət var!
İşdə bu layihənin çətin hissəsi gəlir, söhbətlərin qarşısını alır! IR üzərindən ikitərəfli Serial ünsiyyət qurmaq üçün döngə pozulmalıdır.
Döngəni necə pozarıq?
Birinci seçim, PWM iş dövrünü azaldır, beləliklə LED -in optik güc çıxışını azaldır. Bununla birlikdə, bu yanaşma etibarlı bir seriyalı IR kanalı əldə etdiyiniz məsafəni azaldır. İkinci seçim, IR LED -ini qorumaqdır, beləliklə, istiqamətləndirilmiş bir IR "şüası" yaradır. Sınaq və səhv məsələsidir; Nəhayət, alüminium folqa və lentə (elektrik izolyasiyası təmin edən) bükülmüş bir qara pnevmatik hava hortumundan istifadə edərək söhbətimi pozmağı bacardım. Borunun içərisinə ötürücü IR LED -in qoyulması eyni cihazın TX və RX arasında ünsiyyətin qarşısını alır.
Mənim həllimi görmək üçün şəklə baxın, amma başqa üsulları sınamaqdan və/və ya öz təkliflərinizi verməkdən çekinmeyin! Bu məsələnin mütləq bir həlli yoxdur (sadə bir istiqamətli bir kanala ehtiyacınız olmadığı təqdirdə) və ehtimal ki, elektrik sxemini, PWM iş dövrünü və IR qalxanınızı ehtiyaclarınıza uyğun olaraq tənzimləməlisiniz.
Çarpaz söhbəti pozduqdan sonra, IR əks etdirən səthlərdə İR dalğa uzunluğunun əksini istifadə edərək cihazınızda Tx-Rx döngəsi yaradaraq cihazınızın hələ də işlədiyini yoxlaya bilərsiniz.
Addım 4: Ünsiyyət qurun
Bu qədər
IR cihaz üzərindəki serialınız ünsiyyət qurmağa hazırdır, onlardan IR üzərindən məlumat göndərmək, istədiyiniz hər şeyi açmaq/söndürmək və ya gizləddiyiniz bir sensorun vəziyyətini yoxlamaq üçün hazırdır!
Ünsiyyətin etibarlı olduğu məsafə WiFi və ya BT cihazı qədər deyil. Bununla birlikdə, bəzi tətbiqlərdə çox faydalı ola biləcək yönlüdür (LED diyaframından və tətbiq olunan IR qoruyucu sistemindən asılı olaraq)!
Tezliklə etdiyim tətbiqlərin bir neçə nümunəsini görə biləcəyiniz bir video yükləyəcəyəm. Zövq alın!
Tövsiyə:
Windows 10 -u bir Moruq Pi üzərində necə işlətmək olar: 3 addım
Windows 10 -u Raspberry Pi -də necə işlətmək olar: Windows 10 -u moruq pi üzərində işlətmək bir az sinir bozucu ola bilər, ancaq bu təlimat bütün Raspberry Pi Windows 10 ilə əlaqədar problemlərinizi həll edəcək
Ağac üzərində ikiqat dinamiklər: 3 addım
Ağac üzərində Cüt Dinamiklər: Bu Təlimat, bir ağac parçasına bir cüt dinamik qoyduğunuzda nə baş verdiyini göstərir. Bunu özünüz sınayaraq səs çıxışındakı dəyişiklikləri görə bilərsiniz. Videoda səs dəyişikliyinin nəzərə çarpmadığı görünür. Bununla birlikdə dinamikləri taxtaya taxaraq
Simsiz Şəbəkə Üzərində İstənilən Kompüteri LANda Oyanın: 3 addım
Simsiz Şəbəkə Üzərində İstənilən Kompüterdə LANda oyanın: Bu təlimat Raspbpian görüntüsündəki dəyişikliklərə görə artıq yenidir. Zəhmət olmasa burada yenilənmiş təlimatı izləyin: https://www.instructables.com/id/Raspberry-Pi-As-Wake-on-LAN-ServerWOL bu gün demək olar ki, bütün Ethernet portlarında mövcuddur. Bu deyil
IPad Stylus İpucu - (Kiçik hissələri jet torna üzərində necə çevirmək olar), bunu Texniki Dükanda hazırladım!: 7 addım
IPad Stylus İpucu - (Kiçik hissələri Jet Torna üzərində necə çevirmək olar), bunu Texniki Dükanda hazırladım!: Qələm kauçuk uclarını tutmaq üçün bu pirinç ucu hazırlayın! Öz kapasitiv qələminizi düzəltməyin ən çətin hissəsi budur! İnkişaf etdirdiyim təzyiqə həssas qələm üçün rezin ucu tutmaq üçün bir pirinç ucuna ehtiyacım var idi. Bu təlimat sizə mənim
Bir Moruq Pi üzərində FlightRadar: 5 addım
Bir Moruq Pi üzərində FlightRadar: Öz Raspberry Pi və möhtəşəm bir veb interfeysi ilə yaxınlıqdakı uçuşları izləyin