Sadržaj:
Video: UChip - Serijski preko IC -a!: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Bežična komunikacija postala je ključna značajka u našim današnjim projektima i govorimo o bežičnoj mreži, prvo što mi pada na pamet je Wi-Fi ili BT, no rukovanje komunikacijskim protokolima Wi-Fi ili BT nije lak zadatak i troši puno MCU resursa, ostavljajući mali prostor za kodiranje moje aplikacije. Stoga se obično odlučujem za vanjski Wi-Fi/BT modul serijski spojen na mikrokontroler kako bih podijelio uloge i stekao veću slobodu.
Međutim, ponekad su Wi-Fi i BT "pretjerani" za neke aplikacije koje zahtijevaju nisku bitrate i kratku komunikacijsku udaljenost. Nadalje, korištenje Wi-Fi-ja ili BT-a podrazumijeva neophodnost povezivanja vašeg pametnog telefona ili uređaja s odgovarajućom autentifikacijom.
Zamislite da jednostavno trebate uključiti/isključiti vanjsko svjetlo ili promijeniti jačinu svjetiljke ili otvoriti električna vrata. Bi li se isplatilo koristiti Wi-Fi ili BT?
Ovisno o okruženju i aplikacijama, bežična komunikacija putem IC (infracrvene) valne duljine mogla bi vam dobro doći. Serijski preko IC, implementiran s nekoliko vanjskih komponenti (3 diskretne komponente!), I uChip (vrlo mala ploča kompatibilna s Arduinom) može biti rješenje koje ste tražili!
Predmet materijala (za jedan Tx-Rx uređaj):
1 x uChip
1 x IR LED: sa vrhom emisije na 950nm
1 x TSOP-38238 (ekvivalent)
1 x 1KOhm otpornik
Hardver
1 x matična ploča/proto ploča
1 x Crna plastična cijev: unutarnji promjer iste veličine kao i IR LED, cijev je neophodna za sprječavanje unakrsnog razgovora s TSOP prijamnikom.
1 x aluminijska folija (3 cm x 3 cm)
1 x traka
SAVJET: Možete napraviti samo-TX ili samo-RX uređaj u slučaju da vam je potrebna komunikacija u jednom smjeru uklanjanjem nepotrebnog RX/TX hardvera iz kruga ili omogućavanjem/onemogućavanjem povezanog koda na skici.
Korak 1: Ožičenje
Spojite komponente zajedno prema shemi.
Nekoliko napomena o jednostavnoj shemi. Budući da TSOP-38238 omogućuje napajanje od 2,5 V do 5 V i apsorbira najviše 0,45 mA (tehnički list možete pronaći OVDJE), napajat ću prijemnik pomoću dva pina koji će osigurati uzemljenje, odnosno napajanje. To omogućuje uključivanje/isključivanje prijemnika na zahtjev i vrlo jednostavno postavljanje hardverskog ožičenja. Nadalje, u slučaju da vam je potrebna komunikacija u jednom smjeru, možete odabrati želite li napraviti uređaj (samo Tx/Rx) jednostavnim onemogućavanjem/omogućavanjem TSOP-38238.
Kako radi krug?
Vrlo je jednostavno. Izlazni pin TSOP -a se povlači nisko kada senzor detektira niz od 6 impulsa ili više na 38KHz, s druge strane, povlači se visoko kad nema takvog signala. Stoga, za prijenos serijskih podataka putem IC -a, krug napaja LED anodu s PWM -om od 38KHz moduliranom s TX serijskim signalom koji povlači nisku LED katodu.
Slijedom toga, na visokoj razini serijskog TX0, LED dioda nije pristrana ili pristrana unatrag (bez impulsa), a izlazni pin TSOP -a je visoko povučen. Prenoseći nisku razinu na serijskoj ploči, LED se napaja i generira IC impulse u skladu s primijenjenim PWM signalom; stoga je izlaz TSOP -a nizak.
Budući da je prijenos izravni (0-> 0 i 1-> 1), nema potrebe za pretvaračima ili drugom logikom na strani prijemnika.
Ja reguliram izlaznu optičku snagu LED -a odabirom radnog ciklusa PWM -a u skladu s primjenom. Što je viši radni ciklus, veća je optička izlazna snaga i stoga ćete dalje prenositi svoju poruku.
Imajte na umu da još uvijek moramo generirati impulse! Dakle, ne biste trebali ići iznad 90% radnog ciklusa, inače TSOP neće detektirati signal kao impulse.
Trebate li više energije?
Da bismo povećali struju, možemo li jednostavno smanjiti vrijednost otpornika od 1 kOhm?
Možda, samo nemojte biti previše zahtjevni! Maksimalna struja koju dobijete s pina MCU -a ograničena je na 7mA kada pogonite pin priključka jačim od normalnog (PINCFG. DRVSTR = 1 i VDD> 3V) kako je navedeno u podatkovnom listu SAMD21.
Međutim, standardna konfiguracija (koju su standardno prihvatile Arduino IDE knjižnice) ograničava struju na 2 mA. Stoga korištenje 1kOhm već daje trenutno ograničenje sa zadanim postavkama!
Povećanje struje nije samo stvar električnih komponenti. Kratko:
- Promijenite otpornik (čija je minimalna vrijednost ograničena na približno 470Ohm -> VDD/470 ~ 7mA);
- Postavite odgovarajuće PORT-> PINCFG-> DRVSTR na 1;
Kôd s ovom značajkom pružit ću u budućem ažuriranju.
Ali zapamtite, poništavanje i istjecanje struje iz MCU pinova blizu njegovih granica nije tako dobar pristup. Doista, smanjuje vijek trajanja i pouzdanost MCU -a. Stoga predlažem da zadržite normalnu snagu pogona za dugotrajnu uporabu.
Korak 2: Programiranje
Umetnite skicu "IRSerial.ino" u uChip (ili Arduino kompatibilnu ploču koju koristite).
U slučaju da trebate promijeniti pin za generiranje PWM -a, provjerite koristite li pin spojen na TCC mjerač vremena, jer ova verzija koda radi samo s TCC mjeračima (ove podatke potražite u "variant.c" ploče)). Dodati ću kôd za korištenje TC mjerača vremena u budućim ažuriranjima.
Kod je vrlo jednostavan. Nakon postavljanja niskog PIN_5 (pruža TSOP GND) i visokog PIN_6 (napajanja TSOP -a), MCU pokreće PWM na PIN_1, postavljajući vremensko razdoblje i snimanje u skladu s potrebnom frekvencijskom modulacijom (u mom slučaju to je 38KHz) i radnom snagom ciklusa (12,5% prema zadanim postavkama). To je učinjeno iskorištavanjem standardne analogWrite () funkcije na PWM pinovima i promjenom samo PER_REG (registar razdoblja) i CC (snimanje usporedbe) registra (pisani kod jednostavno je izrezivanje i lijepljenje iz biblioteke wiring_analog). U skladu s time možete postaviti potrebnu frekvenciju tako da senzor TSOP promijeni PER_REG (što je gornja granica za poništavanje brojača vremena), dok CC postavite proporcionalno vrijednosti razdoblja do željenog postotka radnog ciklusa.
Zatim kôd postavlja serijski port koristeći ispravnu brzinu prijenosa od 2400bps. Zašto tako niska brzina prijenosa ?! Odgovor je u podatkovnom listu TSOP -a koji možete pronaći OVDJE. Budući da TSOP ima filtere s visokim odbijanjem šuma kako bi se spriječilo neželjeno prebacivanje, potrebno je poslati niz više impulsa kako bi se povukao TSOP izlazni pin (broj impulsa ovisi o verziji TSOP -a, 6 je tipična vrijednost). Slično, izlaz TSOP -a se povlači visoko nakon minimalnog vremena ekvivalentnog 10 impulsa ili više. Slijedom toga, kako bi se TSOP izlaz postavio kao modulirajući signal TX0, potrebno je postaviti brzinu prijenosa uzimajući u obzir sljedeću jednadžbu:
Serijski Baud <PWM_frequency/10
Korištenjem 38KHz to rezultira brzinom prijenosa nižom od 3800bps, što znači da je viša "standardna" dopuštena brzina prijenosa 2400pbs, kako se ranije predviđalo.
Želite li povećati brzinu prijenosa podataka? Postoje dvije mogućnosti.
Najjednostavnija opcija je promjena TSOP -a u verziju veće frekvencije (kao TSOP38256), što bi vam omogućilo udvostručenje brzine prijenosa (4800bps)
Nedovoljno?! Zatim morate napraviti vlastitu optičku vezu pomoću jednostavne IC LED+fotodiode i pojačala. Međutim, ovo rješenje zahtijeva mnogo znanja o kodiranju i elektronici kako bi se spriječilo da buka utječe na prenesene podatke pa stoga njegova implementacija nije nimalo laka! Međutim, ako se osjećate dovoljno samopouzdano, više ste nego dobrodošli da isprobate vlastiti TSOP sustav!:)
Na kraju, postavio sam SerialUSB port (2400bps) koji koristim za slanje i primanje podataka na serijski monitor.
Funkcija loop () uključuje kôd potreban za prolaz podataka kroz dvije serije i kopira se izravno iz primjera skice SerialPassthrough mijenjajući samo nazive serija.
Korak 3: Zaštitna IC LED dioda
Ako nakon učitavanja koda “IRSerial.ino” uključite gornji krug, provjerite serijski monitor na Arduino IDE -u i pokušajte poslati niz. Vjerojatno ćete vidjeti da uChip prima upravo ono što odašilje! U krugu dolazi do unakrsnog razgovora zbog optičke komunikacije između IC LED i TSOP istog uređaja!
Ovdje dolazi najteži dio ovog projekta, sprječavanje unakrsnog razgovora! Petlja se mora prekinuti kako bi se dvosmjerna serijska komunikacija odvijala putem IC veze.
Kako ćemo prekinuti petlju?
Prva opcija, snižavate radni ciklus PWM -a, smanjujući tako optičku izlaznu snagu LED -a. Međutim, ovaj pristup također smanjuje udaljenost na kojoj dobivate pouzdan serijski IR kanal. Druga mogućnost je zaštita IR LED, čime se stvara usmjereni IR "snop". To je stvar pokušaja i pogreške; napokon, pomoću komada crnog pneumatskog crijeva za zrak omotanog aluminijskom folijom i trakom (pružajući električnu izolaciju) uspio sam prekinuti razgovor. Stavljanje odašiljajuće LED LED unutar cijevi sprječava komunikaciju između TX i RX istog uređaja.
Pogledajte sliku da vidite moje rješenje, ali slobodno isprobajte druge metode i/ili predložite svoje! Ne postoji apsolutno rješenje za ovo pitanje (osim ako vam je potreban jednostavan jednosmjerni kanal) i vjerojatno morate prilagoditi izgled sklopa, radni ciklus PWM-a i IR štit prema vašim potrebama.
Nakon što prekinete unakrsni razgovor, možete provjeriti radi li vaš uređaj i dalje stvaranjem petlje na uređaju Tx-Rx iskorištavajući odraz IC valne duljine na IC reflektirajućim površinama.
Korak 4: Komunicirajte
To je sve
Vaš serijski preko IC uređaja spreman je za komunikaciju, koristite ih za slanje podataka putem IC veze, uključite/isključite sve što vam se sviđa ili provjerite status senzora koji tajno skrivate!
Udaljenost na kojoj je komunikacija pouzdana nije toliko velika kao za WiFi ili BT uređaj. Međutim, usmjeren je (ovisno o LED otvoru i implementiranom sustavu IR zaštite), što može biti vrlo korisno u nekim aplikacijama!
Uskoro ću prenijeti video na kojem možete vidjeti nekoliko primjera aplikacija koje sam napravio. Uživati!
Preporučeni:
Postavljanje Raspberry Pi 4 preko prijenosnog računala/računala pomoću Ethernet kabela (bez monitora, bez Wi-Fi-ja): 8 koraka
Postavljanje Raspberry Pi 4 putem prijenosnog računala/računala pomoću Ethernet kabela (bez monitora, bez Wi-Fi-ja): U ovom ćemo radu raditi s Raspberry Pi 4 Model-B od 1 GB RAM-a za postavljanje. Raspberry-Pi je jednokrilno računalo koje se koristi u obrazovne svrhe i DIY projekte po pristupačnoj cijeni, zahtijeva napajanje od 5V 3A. Operacijski sustavi poput
ROBOT KOJI SE GLASNO UPRAVLJA PREKO BLUETOOTH: 3 koraka
ROBOT KOJI SE GLASA KONTROLIRA PREKO BLUETOOTH -a: Ovim robotom upravlja naš telefon.Link za aplikaciju: https://play.google.com/store/apps/details?id=com….Ovim robotom upravlja naš glas i također se njime može upravljati i pomoću gumba. Ovaj robot služi samo za demonstraciju. Slijedite
Upravljajte Grbl CNC preko Wi -Fi -ja: 5 koraka
Upravljajte Grbl CNC -om preko Wi -Fi -ja: U ovom vodiču ću vas provesti kako omogućiti GRBL kontrolu nad WIFI -jem. Ovu metodu možete koristiti sa svim pošiljateljima, uključujući lasergrbl i univerzalni pošiljatelj Gcode (UGS). Ukratko, koristit ćemo arkypitin rad i drugi softver za stvaranje vi
Iscrtavanje grafikona u stvarnom vremenu na Androidu od Arduina preko HC-05: 3 koraka
Iscrtavanje grafikona u stvarnom vremenu na Androidu od Arduina preko HC-05: Hej, evo vodiča kako iscrtati grafikon vrijednosti u stvarnom vremenu iz mikrokontrolera, poput Arduina, u aplikaciju. Koristi Bluetooth modul poput HC-05 da djeluje kao uređaj za razmjenu poruka za prijenos i primanje podataka između Ar
KOMUNIKACIJA SENZORA PREKO USB: 3 koraka
KOMUNIKACIJA SENZORA PREKO USB -a: Ovaj vodič prikazuje kako koristiti izoliranu USB EZO Carrier Board za interakciju s EZO krugovima. S nekoliko jednostavnih koraka moći ćete kalibrirati i otkloniti pogreške u krugovima ili čak nadzirati dotični parametar u stvarnom vremenu.PREDNOSTI: