Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Pored mnogih drugih svrha, računar koristim i kao multimedijalni centar. Ponekad se opuštam na sofi slušajući muziku ili gledajući film ili TV i ne dođe mi se ustati da podesim jačinu zvuka ili promijenim TV kanal svaki put kad se pojave glupe reklame ili zaspim i poželim tišina. Stoga sam odlučio učiniti svoj računar daljinskim upravljanjem standardnim IC daljinskim upravljačem kako bih mogao odmah pritisnuti dugme umjesto da bijesno zgrabim miš ili tipku za isključivanje zvuka na tastaturi.
Projekat se sastoji od nekoliko dijelova:
- Daljinski upravljač
- PC softver
- Modul IC prijemnika
Korak 1: Daljinski upravljač
Prva stavka - daljinski upravljač - trivijalna je s kojom treba završiti. Samo upotrijebite bilo koju IR kontrolu koja vam se sviđa. Koristio sam onaj koji se prodaje kao set zajedno sa IC prijemnikom - pogledajte sliku. Jedini razlog zašto sam se odlučio za ovu vrstu je taj što sam je već imao kod kuće.
Korak 2: Softver
Napravio sam program za GNU/Linux OS koji radi na terminalu. Izvorni kod možete besplatno preuzeti/koristiti/dijeliti/mijenjati. Za sastavljanje koda samo izdajte naredbu poput gcc -o remotePC remotePC.c u terminalu. Za pokretanje programa upišite./remotePC.
Sljedeće informacije u ovom koraku upućene su onima koje zanima kako stvari funkcioniraju.
Opis programa
Program prvo provjerava postoji li datoteka /dev /ttyACM0 ili ttyACM1. Ako je tako, provjerava se da se ID grupe datoteke razlikuje od nule. To znači da zajednički korisnik može čitati i pisati serijski port. Dva bajta s vrijednostima 0xAA 0x55 se zatim zapisuju na port kako bi signalizirali da je program spreman za prijem podataka. Dolazni podaci se uspoređuju sa pohranjenim vrijednostima. Ako se pronađe podudaranje, izvršava se unaprijed definirana radnja.
Kontrola jačine zvuka
Program može uključiti/isključiti zvuk, povećati/smanjiti jačinu zvuka na nivou sistema. To se postiže upotrebom programa pactl. Komande tada izgledaju ovako:
pactl set-sink-mute 0 prekidač
pactl set-sink-volume 0 +10%
pactl set-sink-volume 0 -10%
Ako je potrebno, instalirajte potrebne pakete.
Kontrola VLC Media Player -a
Program takođe može pokrenuti/pauzirati audio/video zapis i promijeniti pjesmu u prethodnu/sljedeću na listi za reprodukciju VLC Media Playera. U ovom slučaju koristi se Desktop Bus. Komande:
dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc
/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. PlayPause
dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc
/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Next
dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc
/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Prethodna
Korak 3: Modul IC prijemnika
Treći dio projekta je najsloženiji, a ipak prilično jednostavan. Ideja je da će IC prijemnik emitirati signal u MCU koji će ga transformirati u jedinstveni broj. Taj će se broj zatim prenijeti na računalo putem USB -a.
Modul je predviđen za ugradnju u kućište računara i kablom povezan na USB priključak na matičnoj ploči. U slučaju da više volite vanjsku vezu s USB -om, morat ćete izvršiti manja podešavanja.
MCU
Modul sam izgradio na mikrokontroleru PIC16F1829. Izbor MCU -a nije kritičan, možete koristiti bilo koji drugi MCU ako ste u mogućnosti prilagoditi izvorni kod. Odabrao sam ovaj PIC iz dva razloga. Prvo sam ga imao na raspolaganju, a drugo, njegove iglice su djelomično oštećene intenzivnom upotrebom u različitim projektima testiranja. Pa sam ga htio koristiti u stalnom projektu prije nego što postane potpuno neupotrebljiv.:-)
IC prijemnik
Drugi dio na kojem se modul temelji je IC prijemnik VS1838B - onaj koji je spomenut u 1. koraku.
UART/USB pretvarač
Treći dio je MCP2221 koji je UART/I2C/USB pretvarač.
Zadatak je kombinirati ta tri dijela kako bi se izgradio modul koji će moći primati signale sa daljinskog upravljača i predati ih računaru.
Ožičenje
Na prvoj slici je krug testiranja na ploči. U drugom je shema ožičenja.
Spisak delova
1 kom PIC16F1829 (ili bilo koji drugi MCU)
1 kom VS1838B (ili bilo koji drugi IC prijemnik)
1 kom MCP2221 (ili bilo koji drugi UART/USB pretvarač)
2 kom 4-pinski zaglavlje
1 kom 6-pinski zaglavlje
1 kom otpornik 100R
2 kom otpornika 10K
2 kom otpornika 330R
1 kom kondenzator 470 nF
2 kom elektrolitički kondenzator 4,7 uF
1 prekidač za računar (opcionalno)
PCB sklop
Sastavite modul pomoću sheme. Možete koristiti univerzalnu ploču ili stvoriti prilagođenu PCB. Ako je ovo drugo slučaj, dostavio sam KiCad datoteke u arhivu ispod.
Firmver
Izvorni kod za PIC napisan uz upotrebu MPLAB X IDE -a i XC8 kompajlera dostupan je za preuzimanje u nastavku.
Napomene o izvornom kodu
Sledeći redovi su za one koji bi želeli da znaju šta program tačno radi.
Nakon svih postavki crvena LED lampica svijetli i MCU čeka na podatke 0x55AA. Nakon toga LED svijetli zeleno i MCU počinje detektirati signal iz IC prijemnika uz pomoć prekida. On mjeri i bilježi vremenske intervale u kojima je signal na visokom i niskom nivou. Ova vremena se zatim pretvaraju u 32-bitni broj koji se šalje na računar.
Odnos između vremena i konačnog broja dat je NEC protokolom.
Korak 4: Kako koristiti uređaj
Firmware
Otpremite firmver na PIC. Koristim programer PICkit 3.
Hardver
Instalirajte modul IC prijemnika kao što je prikazano na slikama:
- Priključite USB zaglavlje ili na unutrašnji USB priključak na matičnoj ploči unutar kućišta računara odgovarajućim 4-žičnim kablom ili spolja na USB priključak sa standardnim USB kablom. U drugom slučaju morate si na neki način pomoći, npr. kao što se vidi na trećoj slici za inspiraciju.
- Priključite 5 V kabel za napajanje iz izvora napajanja unutar kućišta računara u 4-polno zaglavlje. Ili napajanje modula na drugi način u slučaju vanjske upotrebe.
Potražite opis pinova USB utičnice na matičnoj ploči. Nisam siguran da li ožičenje slijedi neku vrstu standarda pa je bolje provjeriti. U mom slučaju postoje dva iglasta reda sa 5 igala u gornjem i 4 igle u donjem. Slijeva na desno pinovi su + 5 V, D-, D +, Gnd. 5. pin u prvom redu nije povezan. Priključio sam kabel kao što se vidi na drugoj slici.
Softver
Pokrenite program na terminalu. Ako sve ide kako treba, zadnja poruka programa je "čekanje podataka …". Sada, kada pritisnete tipku na daljinskom upravljaču, primljeni kod će se pojaviti na terminalu. Na ovaj način ćete znati koje dugme emituje koji kôd.
Sada vas čekaju neke programske stvari, ali ne brinite. Samo nekoliko stvari treba promijeniti u izvornom kodu programa kako bi program reagirao na vaš daljinski upravljač. Otvorite datoteku remotePC.c u uređivaču teksta ili u nekom IDE -u ako želite i zamijenite moje kodove svojim. Samo pritisnite jedno po jedno dugme koje namjeravate koristiti za svaku radnju. Jednostavno kopirajte kodove koji se pojavljuju na terminalu i zalijepite ih u izvorni kod na mjesto s odgovarajućom radnjom.
Kada završite, zatvorite program i ponovno kompajlirajte kôd naredbom gcc -o remotePC remotePC.c. Ponovo pokrenite program i on će od sada reagirati na vaš daljinski upravljač.
Koristim ovaj način s tvrdo kodiranim radnjama u programu jer smatram besmislenim gubiti vrijeme na daljnji razvoj projekta do stanja kada je moguće dodavati/mijenjati kodove/radnje u grafičkom okruženju prilagođenom korisniku. Ali ako želite to učiniti ili još više, možete.