Sommario:
- Passaggio 1: l'idea
- Passaggio 2: creazione del controller
- Passaggio 3: personalizzare il controller
- Passaggio 4: strumenti per semplificare la sartoria
Video: Falling in Stm32: telecomando per Home Media Center: 4 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questo è un prototipo completo per il controllo remoto del centro multimediale domestico basato sul micro controller smt32, stm32f103c8t6 noto come scheda "bluepill". Supponiamo di utilizzare un PC per il media center domestico. È una soluzione molto flessibile, che ti consente di posizionare un'enorme libreria video nel disco rigido interno, oppure puoi riprodurre video dalla rete, ad esempio YouTube o giù di lì, non hai alcun problema con i codec o la riproduzione video, perché è molto facile aggiornare il lettore software in qualsiasi momento. Il principale svantaggio di questa soluzione è che dovresti usare mouse e tastiera per controllare la riproduzione. Il telecomando IR è molto conveniente per questo.
In questo articolo mostrerò come creare il proprio telecomando utilizzando la scheda chip bluepill.
Passaggio 1: l'idea
L'idea principale è molto semplice: la scheda bluepill ha una porta USB incorporata e può fungere da tastiera USB HID. Se colleghiamo il ricevitore IR alla scheda, potrebbe tradurre il comando dal telecomando IR alla "pressione dei tasti" della tastiera virtuale. Non sono necessari driver aggiuntivi!
Ci sono molti protocolli IR nel mondo che ci circonda. Ogni TV del fornitore VCS ha il proprio protocollo IR. Ma tutti questi protocolli hanno qualcosa in comune: usano la modulazione degli impulsi per codificare il segnale. Di solito c'è qualche preambolo: lungo impulso prima del primo bit nel pacchetto. Quindi il controllo IR trasmette l'intero pacchetto con 0 e 1 e finalizza la trasmissione con impulso lungo finale. Per decodificare il bit dobbiamo misurare la lunghezza dell'impulso e la lunghezza del picco. Di solito, la lunghezza di picco della logica 0 e della logica 1 è la stessa, la differenza è nella lunghezza completa dell'impulso.
I micro controller stm32 hanno una funzione incorporata per catturare il segnale PWM. Quasi ogni timer del microcontrollore può essere inserito nella 'cattura segnale PWM di più' quando le variabili di canale del timer salvano la lunghezza totale dell'impulso e la sua lunghezza di picco. Qui devo evidenziare il piccolo dettaglio: quando il ricevitore IR cattura il segnale, la tensione sul suo pin di lavoro diventa 0 e nello stato di riposo la tensione nel pin di lavoro è di 5 o 3,3 volt a seconda della tensione di alimentazione del ricevitore IR. Cioè, il ricevitore "inverte" il segnale.
Con la modalità di acquisizione PWM, il micro controller stm32 può essere facilmente trasformato in un traduttore remoto IR dal telecomando IR ai codici della tastiera. Quindi puoi avviare il tuo software di visualizzazione preferito, ad esempio Kodi di VLC per riprodurre il tuo film preferito sul media center.
Passaggio 2: creazione del controller
Per programmare il micro controller stm32 vorrei raccomandare il software gratuito di STM: system workbench (aka ac6) e lo strumento di configurazione della scheda cubeMX. Per caricare il software nel micro controller è possibile utilizzare il clone del chip dell'adattatore ST-Link V2. I file di progetto del workbench di sistema allegati a questo passaggio, file F1-IR_remote.zip.
Lo strumento di configurazione della scheda semplifica il processo di configurazione hardware iniziale del nostro microcontrollore.
Se stai utilizzando lo strumento workbench di sistema, puoi semplicemente utilizzare il progetto scaricato. Ma se desideri approfondire il progetto, puoi creare la configurazione della scheda nel cubeMX:
- Crea un nuovo progetto e seleziona la scheda stm32f103c8
- Selezionare "Risonatore di cristallo/ceramica" per la voce "Orologio ad alta velocità (HSE)" nel menu RCC.
- Selezionare 'Serial Wire' per la voce 'Debug' nel menu SYS.
-
Configurare il timer n. 2 (menu TIM2) in modalità di acquisizione PWM come mostrato nell'immagine:
- Modalità Slave -> Modalità Reset
- Sorgente trigger -> TI1FP1
- Sorgente orologio -> Orologio interno
- Canale1 -> Modalità diretta cattura ingresso
- Imposta la casella di controllo "Dispositivo (FS) nel menu USB"
- Selezionare l'elemento del menu a discesa "Human Interface Device Class (HID)" nella voce "Class of FS IP" nel menu USB_DEVICE
- Nel pannello di configurazione dell'orologio, assicurati di fornire 72 MHz al timer n. 2 perché abbiamo bisogno del conteggio del timer ogni 1 mks.
- Nel pannello di configurazione configurare il dispositivo USB come mostrato nell'immagine
-
Nel pannello di configurazione configurare il timer#2 come segue:
- Prescaler - 71 (da 0 a 71) - 1 microsecondo tick!
- Modalità contatore - Su
- Counter Period - 39999 (dovremmo essere in grado di misurare l'impulso lungo)
- Ingresso cattura canale1 - Falling Edge (ricordare che il segnale dal ricevitore IR è invertito)
Nella modalità di acquisizione PWM il timer#2 funzionerebbe come segue:
Quando viene rilevato il fronte di discesa, il contatore del timer viene salvato nel registro del canale 1 e il contatore viene azzerato. Quindi il contatore continua a contare in avanti. Quindi possiamo facilmente misurare la lunghezza dell'impulso in micro secondi.
Per impostazione predefinita, la classe STM32 USB HID simula il mouse USB. Qui puoi trovare le istruzioni per trasformare il controller in tastiera.
Passaggio 3: personalizzare il controller
Il progetto funziona con il telecomando Panasonic e il media center Kodi. Per personalizzare il progetto per il tuo controller dovresti aggiungere l'array di codici per il tuo telecomando come ho fatto per il telecomando panasonic (panasonicCode) all'intestazione Inc/code.h. Come puoi vedere, ogni comando ha un ID univoco (nell'enumerazione IRcommmand). Ci sono 24 comandi (0-23) riconosciuti dal progetto. I comandi sono ordinati in base alla pertinenza.
typedef enum {IR_play = 0, IR_stop, IR_pause, IR_forward, IR_rewind, IR_last_channel, IR_OSD, IR_prevous_menu, IR_left, IR_right, IR_up, IR_down, IR_enter, IR_chapter_next, IR_chapter_previous, IR_info, IR_subtitle, IR_nxt_subtitle, IR_pos_subtitle, IR_teletext, IR_zoom, IR_mark_watched, IR_playlist, IR_power, IR_sconosciuto } IRcommand;
const uint16_t kbrd_kodi = {HID_KEY_P, HID_KEY_X, HID_KEY_SPACE, HID_KEY_F, HID_KEY_R, HID_KEY_0, HID_KEY_M, HID_KEY_BACKSPACE, HID_KEY_LEFT, HID_KEY_RIGHT, HID_KEY_UP, HID_KEY_DOWN, HID_KEY_ENTER, HID_KEY_DOT, HID_KEY_COMMA, HID_KEY_S, HID_KEY_I, HID_KEY_T, HID_KEY_L, (uint16_t (HID_LEFT_CTRL) << 8)| HID_KEY_T, HID_KEY_V, HID_KEY_Z, HID_KEY_W, HID_KEY_C };
const uint32_t panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0x100eced, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091, 0x180a021, 0xd00bcb1 };
Quindi dovresti aggiungere il tuo telecomando nel metodo init() in IR.cpp con la funzione addRemote(). Gli argomenti della funzione sono:
- Numero di bit nel pacchetto
- La lunghezza dell'intestazione del pacchetto
- Lunghezza bit 'zero'
- Lunghezza 'un' bit
- Puntatore all'array di codice
- Numero elementi dell'array
void IRcmd::init(void) { addRemote(48, 5252, 902, 1755, panasonicCode, sizeof(panasonicCode)/sizeof(uint32_t));
}
Inoltre il file contiene un'altra tabella per convertire i comandi in codici da tastiera. L'array kbdr_kodi contiene i codici chiave per Kodi media center. È possibile aggiungere un altro array per il proprio programma media center, ad esempio lettore vlc. Se si aggiungesse un'altra tabella dell'applicazione media center, si creerebbe un altro oggetto KBD e lo si inizializzerebbe nel file main.cpp.
Passaggio 4: strumenti per semplificare la sartoria
Ci sono altri due progetti nel repository
- Indagine IR - che consente di misurare i parametri di temporizzazione dei segnali del telecomando.
- IR_capture - permette di catturare i codici HEX del tuo telecomando.
Basta caricare il progetto di ricerca IR e collegare la porta USB della scheda bluepill al computer. Quindi avviare qualsiasi programma terminale sul dispositivo della porta seriale virtuale, corrispondente alla scheda stm32. Mentre si premono i pulsanti sul telecomando, il programma misurerà gli impulsi ricevuti e stamperà i tempi medi per i diversi impulsi. Dovrebbe semplificare il rilevamento della lunghezza dell'impulso per l'intestazione del pacchetto, zero e un bit.
Nel progetto di indagine IR il timer #2 funziona in modalità di cattura PWM con due canali: il canale uno cattura l'intera lunghezza dell'impulso e il canale2 cattura la lunghezza del picco. Quando viene rilevato il fronte di discesa del segnale, il valore del timer viene salvato nel registro del canale uno e il timer viene ripristinato con 0. Quando viene rilevato il fronte di salita del segnale, il contatore del timer viene salvato nel registro del canale 2.
Per acquisire i codici dei pulsanti del proprio telecomando, è possibile utilizzare il progetto IR_capture. Nel file main.c dovresti aggiungere la definizione remota come questa:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60 };
- .hdr - la lunghezza dell'intestazione in mks
- .bits - il numero di bit nel pacchetto
- .zero - la lunghezza del bit zero
- .uno - la lunghezza uno il bit
- .dev - la deviazione (la differenza di tempi che può essere accettata). Di solito è 1/10 della lunghezza più piccola.
Quindi aggiungi il tuo telecomando all'elenco dei telecomandi supportati:
const IRcode* remote[2] = {&panasonic, &pioneer};
Consigliato:
Il telecomando della TV diventa un telecomando RF -- Tutorial NRF24L01+: 5 passaggi (con immagini)
Il telecomando della TV diventa un telecomando RF || Tutorial NRF24L01+: in questo progetto ti mostrerò come ho utilizzato il popolare IC RF nRF24L01+ per regolare la luminosità di una striscia LED in modalità wireless tramite tre inutili pulsanti di un telecomando TV. Iniziamo
Telecomando wireless con modulo NRF24L01 da 2,4 Ghz con Arduino - Nrf24l01 Ricevitore trasmettitore 4 canali / 6 canali per quadricottero - Elicottero Rc - Aereo RC con Arduino: 5 passaggi (con immagini)
Telecomando wireless con modulo NRF24L01 da 2,4 Ghz con Arduino | Nrf24l01 Ricevitore trasmettitore 4 canali / 6 canali per quadricottero | Elicottero Rc | Aereo radiocomandato con Arduino: per far funzionare un'auto radiocomandata | Quadricottero | Drone | Aereo RC | Barca RC, abbiamo sempre bisogno di un ricevitore e trasmettitore, supponiamo che per RC QUADCOPTER abbiamo bisogno di un trasmettitore e ricevitore a 6 canali e quel tipo di TX e RX è troppo costoso, quindi ne faremo uno sul nostro
Converti il tuo telecomando IR in telecomando RF: 9 passaggi (con immagini)
Converti il tuo telecomando IR in telecomando RF: in Instructable di oggi, ti mostrerò come puoi utilizzare un modulo RF generico senza un microcontrollore che alla fine ci porterà a costruire un progetto in cui puoi convertire un telecomando IR di qualsiasi dispositivo in un RF A distanza. Il vantaggio principale di convertire un
Controlla i tuoi elettrodomestici con il telecomando della tua TV (telecomando ir) con display della temperatura e dell'umidità: 9 passaggi
Controlla i tuoi elettrodomestici con il telecomando della tua TV (telecomando a infrarossi) con display di temperatura e umidità: ciao sono Abhay ed è il mio primo blog su Instructables e oggi ti mostrerò come controllare i tuoi elettrodomestici con il telecomando della tua TV costruendo questo progetto semplice. grazie al laboratorio atl per il supporto e la fornitura del materiale
Controller digitale per sospensioni pneumatiche con Arduino e telecomando per smartphone: 7 passaggi (con immagini)
Controller digitale per sospensioni pneumatiche utilizzando Arduino e telecomando per smartphone: ciao a tutti. In questo tutorial cercherò di mostrarti come costruire un controller per le sospensioni pneumatiche della tua auto, utilizzando un modulo arduino + bluetooth e per remoto qualsiasi smartphone con Android +4.4, questo è anche il mio primissimo istruibile quindi abbi pazienza