Pubblicato 2026-04-19
Questa guida fornisce una soluzione pratica e completa per il controllo di aservomotore utilizzando un telecomando a infrarossi (IR) standard. Seguendo i passaggi seguenti, sarai in grado di posizionare con precisione aservomotore premendo i pulsanti su qualsiasi telecomando IR comune (ad esempio, il telecomando di una TV o di un set-top box). Non sono richiesti componenti specifici del marchio e le istruzioni si basano su moduli ampiamente disponibili e a basso costo.
Un telecomando IR emette impulsi di luce invisibile. Un ricevitore IR rileva questi impulsi e li converte in un codice digitale univoco per ciascun pulsante. Un microcontrollore legge questo codice e invia un segnale corrispondente di modulazione di larghezza di impulso (PWM).servomotore, impostando il suo albero ad un angolo specifico.
Scenario di esempio:Il pulsante “volume su” di un comune telecomando TV ruota un servo a 90° (ad esempio, aprendo un piccolo fermo), mentre “volume giù” lo riporta a 0°. Questo principio viene utilizzato nei bracci robotici fai-da-te, nelle mangiatoie automatiche per animali domestici e nei sistemi di brandeggio con telecamera telecomandati.
Importante:La maggior parte dei servi assorbe una corrente significativa (200–500 mA). Non alimentare il servo direttamente dal pin 5V del microcontrollore se richiede più di 500 mA. Utilizzare un'alimentazione esterna da 5 V con terra comune.
Collegare i componenti come segue. Questo cablaggio è stato testato con sistemi standard a 5 V.
Modulo ricevitore IR (guardando il lato piatto):
Pin sinistro: Segnale → Pin digitale 11 del microcontrollore (esempio)
Pin centrale: GND → Terra comune
Pin destro: VCC → uscita 5V
Servomotore:
Filo marrone/nero: GND → Terra comune
Filo rosso: 5 V → Alimentazione esterna 5 V (o microcontrollore 5 V solo per servi piccoli)
Filo arancione/giallo: Segnale → Pin 9 PWM del microcontrollore (esempio)
Terreno comune:Collega il GND dell'alimentatore esterno al GND del microcontrollore. Questo è obbligatorio per il funzionamento stabile.
Ogni telecomando IR invia codici diversi. Devi prima leggere i codici dal tuo telecomando specifico.
Caso tipico:Un telecomando TV Sony potrebbe inviare0x10per il pulsante "1", mentre un telecomando Samsung invia0x80. Il codice non è l'etichetta del pulsante: è un numero esadecimale univoco per la marca del pulsante + telecomando.
Azione:Carica un semplice schizzo del decodificatore IR (disponibile nelle librerie comuni come "IRremote") sul tuo microcontrollore. Apri il monitor seriale, premi ciascun pulsante che desideri utilizzare e annota i codici. Per esempio:
Freccia su →0xFF629D
Freccia giù →0xFFA857
OK/Seleziona →0xFF02FD
Decidere quale pulsante sposta il servo a quale angolo. Gli angoli dei servi standard vanno da 0° a 180°.
Mappatura di esempio (utilizzando i codici del passaggio 1):
Pulsante0xFF629D→ Angolo del servo 0°
Pulsante0xFFA857→ Angolo del servo 90°
Pulsante0xFF02FD→ Angolo del servo 180°
Di seguito è riportato un esempio di codice generico che funziona con la popolare libreria IRremote (versione 3.x o successiva). SostituireREMOTE_CODE_1, REMOTE_CODE_2, ecc., con i codici effettivi del passaggio 1.
#includere#includereconst int IR_PIN = 11; const int SERVO_PIN = 9; IRrecv irrecv(IR_PIN); risultati decode_results; ServomioServo; // Sostituiscili con i codici effettivi del tuo telecomando (valori esadecimali del passaggio 1) const unsigned long CODE_ANGLE_0 = 0xFF629D; // ad esempio, pulsante Su const unsigned long CODE_ANGLE_90 = 0xFFA857; // ad esempio, pulsante Giù const unsigned long CODE_ANGLE_180 = 0xFF02FD; // ad esempio, pulsante OK void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Avvia il ricevitore IR myServo.attach(SERVO_PIN); mioServo.write(0); // Inizia da 0° Serial.println("Pronto. Premi i pulsanti sul telecomando."); } void loop() { if (irrecv.decode(&risultati)) { unsigned long ricevutoCodice = risultati.valore; Serial.print("Codice ricevuto: 0x"); Serial.println(codicericevuto, HEX); // Mappa il codice ricevuto sull'angolo del servo if (receivedCode == CODE_ANGLE_0) { myServo.write(0); Serial.println("Servo → 0°"); } else if (receivedCode == CODE_ANGLE_90) { myServo.write(90); Serial.println("Servo → 90°"); } else if (codicericevuto == CODICE_ANGOLO_180) { mioServo.write(180); Serial.println("Servo → 180°"); } else { Serial.println("Pulsante non mappato. Ignorato."); } irrecv.resume(); // Aspetta il segnale successivo } }
Nota:Se il telecomando utilizza un protocollo diverso (ad esempio NEC, Sony, RC5), la libreria lo rileva automaticamente. Il codice sopra funziona per la maggior parte dei telecomandi consumer.
1. Alimentare il circuito (alimentazione del servo esterno se necessario).
2. Aprire Monitor seriale a 9600 baud.
3. Premere un pulsante mappato: il servo dovrebbe spostarsi all'angolo preimpostato entro 0,5 secondi.
4. Se il servo trema o non si muove, controllare:
Collegamento a terra comune.
Capacità di alimentazione servo (minimo 500 mA per servi standard).
Il ricevitore IR non è esposto alla luce solare diretta o alla luce fluorescente (che causano interferenze).
Conclusione fondamentale ribadita:Un telecomando IR standard abbinato a un ricevitore IR a basso costo e un microcontrollore ti offre un servocontrollo wireless preciso senza alcun hardware proprietario.
Tre raccomandazioni attuabili per rafforzare la tua implementazione:
1. Aggiungi più servi:Utilizza una serie di oggetti servo e assegna pulsanti diversi a servi diversi. Ad esempio, il pulsante “1” controlla il servo A a 0°, il pulsante “2” controlla il servo B a 45°.
2. Implementare un movimento fluido:Sostituireservo.write(angolo)con un ciclo che incrementa l'angolo passo dopo passo (ad esempio, dall'angolo corrente all'angolo target con incrementi di 1° con ritardo di 15 ms). Questo crea un movimento professionale e graduale.
3. Memorizza le mappature dei pulsanti nella EEPROM:Scrivi una piccola routine di calibrazione che ti consenta di apprendere nuovi pulsanti senza ricaricare il codice. Ciò è particolarmente utile se perdi il telecomando originale e passi a un'altra marca.
Verifica finale:Prima di implementare il progetto in un'applicazione reale (ad esempio, chiusura della porta telecomandata o pinza robot), testare la pressione di tutti i pulsanti almeno 50 volte ciascuna. I segnali IR possono essere bloccati da oggetti o luce intensa: includere sempre un indicatore visivo (ad esempio, un LED che lampeggia quando viene ricevuto un codice) per confermare che il sistema funziona.
Tempo di aggiornamento: 2026-04-19
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.