Contrôler votre TV avec Alexa via Arduino IoT Cloud – Guide étape par étape
Composants et fournitures
| Composant | Quantité | Remarques |
|---|---|---|
| Arduino Nano 33 IoT | 1 | |
| Résistance 330 Ω | 1 | |
| Récepteur IR (générique, ex. VS1838B) | 1 | |
| Émetteur IR (générique) | 1 | |
| Fils de câblage (génériques) | 1 | |
| Platine d'essai (générique) | 1 |
Applications et services en ligne
- Arduino Web Editor
- Arduino IoT Cloud
- Skill Arduino Amazon Alexa officiel
À propos de ce projet
Note : Ce tutoriel pourrait être obsolète, veuillez consulter ici pour une version plus récente.
Introduction : Arduino IoT Cloud
Arduino IoT Cloud est une plateforme permettant à quiconque de créer facilement des objets connectés IoT. Pour contrôler notre TV avec Alexa, nous utiliserons également le Skill Arduino Alexa officiel.
Si vous découvrez Arduino IoT Cloud, commencez par le projet d'introduction qui présente la configuration d'une carte supportée, la création de Things et Properties.
Partie 1 : Comment contrôler un téléviseur
La méthode la plus simple est d'imiter la télécommande infrarouge du téléviseur. Il faut écouter les signaux de la télécommande, capturer les données et les reproduire avec l'Arduino. Une fois le circuit monté, téléversez ce sketch pour traduire les impulsions IR des pressions de boutons en tableaux d'entiers non signés. Pointez la télécommande vers le récepteur IR de l'Arduino et appuyez sur :
- MARCHE/VEILLE
- CHAÎNES 1 À 9
- VOLUME +
- VOLUME -
- MUET
- CHAÎNE +
- CHAÎNE -
Les valeurs apparaissent dans le Moniteur Série sous forme de rawData. Notez-les dans un fichier texte en attribuant un nom de tableau à chaque liste (chan1, chan2...). Les valeurs ci-dessous sont données à titre de référence (télécommande Samsung) :
// Exemple pour CHANNEL 1
unsigned int chan1[67] = {4450,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 500,1700, 550,1700, 550,1700, 500,1700, 550,1700, 500};
// ... (chan2 à chan9, volUp, volDown, chanUp, chanDown, onoff, mute)
Partie 2 : Arduino IoT Cloud
Depuis la page principale Arduino IoT Cloud, créez un nouveau Thing nommé TVRemoteController. Sélectionnez la carte (ici Arduino Nano 33 IoT). Si votre carte n'apparaît pas, reprenez la procédure « Getting Started ».
Ajoutez une Property à votre Thing représentant le téléviseur : catégorie Smart Home, type « TV », « Read & Write », mise à jour « When the value changes ».
Partie 3 : Arduino Web Editor
Cliquez sur « EDIT SKETCH » pour ouvrir l'éditeur web et ajouter du code personnalisé au sketch généré automatiquement.
- Incluez la bibliothèque IR Remote de Ken Shirriff :
#include <IRremote.h> - Définissez les tableaux de commandes IR (capturés en Partie 1) :
const unsigned int chan[9][67] = { {chan1}, {chan2}, ... {chan9} }; const unsigned int volUp[67] = {...}; const unsigned int volDown[67] = {...}; const unsigned int chanUp[67] = {...}; const unsigned int chanDown[67] = {...}; const unsigned int onoff[67] = {...}; const unsigned int mute[67] = {...}; - Configurez la bibliothèque IR et la fréquence (toujours 38 kHz pour ce type d'application) :
IRsend irsend; const int freq = 38; - Fonction d'envoi IR avec clignotement LED intégrée (débogage) :
void sendIR(const unsigned int buf[]) { digitalWrite(LED_BUILTIN, HIGH); irsend.sendRaw(buf, 67, freq); delay(300); // À ajuster selon marque/modèle TV digitalWrite(LED_BUILTIN, LOW); } - Complétez le callback généré
onTvChange()pour envoyer les commandes IR quand Alexa modifie la propriété TV :void onTvChange() { Serial.println("=================="); Serial.println("Switch:"+String(tv.getSwitch())); Serial.println("Volume:"+String(tv.getVolume())); Serial.println("Channel:"+String(tv.getChannel())); Serial.println("Mute:"+String(tv.getMute())); Serial.println("=================="); if (first) { prevSwitch = tv.getSwitch(); prevVolume = tv.getVolume(); prevChannel = tv.getChannel(); prevMute = tv.getMute(); first = false; return; } // Volume changé if (tv.getVolume() > prevVolume) { tv.setMute(false); prevMute = false; for (int k = prevVolume + 1; k <= tv.getVolume(); k++) { sendIR(volUp); Serial.println("Volume requested:"+String(tv.getVolume())+" Set:"+String(k)); } prevVolume = tv.getVolume(); } else if (tv.getVolume() < prevVolume) { tv.setMute(false); prevMute = false; for (int k = prevVolume - 1; k >= tv.getVolume(); k--) { sendIR(volDown); Serial.println("Volume changed:"+String(tv.getVolume())+" Set:"+String(k)); } prevVolume = tv.getVolume(); } // Muet changé if (tv.getMute() != prevMute && tv.getMute()) { prevMute = tv.getMute(); sendIR(mute); Serial.println("Mute changed:"+String(tv.getMute())); } else if (tv.getMute() != prevMute && !tv.getMute()) { prevMute = tv.getMute(); sendIR(mute); Serial.println("Mute changed:"+String(tv.getMute())); } // Chaîne changée if (tv.getChannel() != prevChannel) { int newChannel = tv.getChannel(); if (newChannel > 0 && newChannel < 10) { sendIR(chan[newChannel-1]); } else if (newChannel > 9) { if (newChannel > prevChannel) { for (int ch = prevChannel; ch < newChannel; ch++) { sendIR(chanUp); Serial.println("Chan requested:"+String(newChannel)+" Set:"+String(ch)); } } else if (newChannel < prevChannel) { for (int ch = prevChannel; ch > newChannel; ch--) { sendIR(chanDown); Serial.println("Chan requested:"+String(newChannel)+" Set:"+String(ch)); } } } prevChannel = newChannel; Serial.println("Channel changed:"+String(tv.getChannel())); } // Marche/Arrêt changé if (tv.getSwitch() != prevSwitch) { prevSwitch = tv.getSwitch(); if (tv.getSwitch()) sendIR(chan[6]); // Exemple: chaîne 7 pour allumer? else sendIR(onoff); Serial.println("Switch changed:"+String(tv.getSwitch())); } }
Partie 4 : Amazon Alexa
Installez l'application Amazon Alexa (App Store / Play Store), connectez-vous ou créez un compte.
Suivez les étapes pour installer le Skill Arduino Alexa et le configurer pour accéder et contrôler votre TV (séquence d'images ci-dessous).
C'est terminé ! Vous pouvez maintenant contrôler votre TV par la voix :
- « Alexa, augmente le volume sur TV. »
- « Alexa, mute TV » ou « Alexa, unmute TV. »
- « Alexa, chaîne suivante sur TV. »
Amusez-vous bien avec Alexa et IoT Cloud. Questions ou réalisations ? Dites-le dans les commentaires.
Merci,
L'équipe Arduino
Schémas
Processus de fabrication
- Contrôler votre ventilateur de plafond avec Alexa : Guide étape par étape
- Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
- Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
- Contrôle IoT à Distance d'un Bras Robotique Personnalisé avec Arduino MKR1000
- Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
- Surveiller la température de votre maison n'importe où avec Arduino Cloud
- Contrôlez un rover Arduino avec Firmata et une manette Xbox One