Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Contrôle total de votre téléviseur à l'aide d'Alexa et d'Arduino IoT Cloud

Composants et fournitures

Arduino Nano 33 IoT
× 1
Résistance 330 ohm
× 1
Récepteur IR (générique)
ex. VS1838B
× 1
Émetteur IR (générique)
× 1
Câbles de raccordement (générique)
× 1
Planche à pain (générique)
× 1

Applications et services en ligne

Éditeur Web Arduino
Arduino IoT Cloud
Arduino Amazon Alexa Official Arduino Skill

À propos de ce projet

Remarque :Ce tutoriel est peut-être obsolète, veuillez y aller ici pour une version plus récente.

Introduction :Arduino IoT Cloud

Arduino IoT Cloud est une plate-forme qui permet à quiconque de créer facilement des objets connectés IoT. Afin de contrôler notre téléviseur à l'aide d'Alexa, nous utiliserons également la compétence officielle Arduino Alexa.

Si vous êtes nouveau sur Arduino IoT Cloud, nous vous conseillons de jeter d'abord un coup d'œil à ce projet d'introduction, qui vous donnera un aperçu et vous guidera tout au long du processus de configuration de l'une des cartes prises en charge, IoT Cloud Things et Propriétés et vous embarquer.

Partie 1 : Comment contrôler un téléviseur

Le moyen le plus simple de contrôler tout type de téléviseur est d'agir comme si nous étions sa propre télécommande infrarouge. Pour ce faire, nous devrons écouter pour les signaux que la télécommande enverra, capturez les données et imitez-les avec notre carte Arduino. Une fois le circuit assemblé, nous téléchargerons ce croquis sur notre carte. Il traduira les rafales de signal IR générées par les pressions de bouton à distance dans un tableau d'entiers non signés. Pointons la télécommande vers le récepteur IR Arduino nous avons construit et appuyé sur les boutons suivants :

  • ALIMENTATION/VEILLE
  • CANAUX DE 1 À 9
  • AUGMENTATION DE VOLUME
  • DIMINUER LE VOLUME
  • MUTE
  • CANAL UP
  • CANAL VERS LE BAS

Nous verrons les valeurs passer par le Serial Monitor , signalé comme rawData . Prenons-en note dans un fichier texte pour l'instant et affectons à chaque liste son propre nom de tableau (chan1 , chan2 etc). Les valeurs suivantes sont fournies à titre indicatif et sont générées par la télécommande d'un téléviseur Samsung.

CANAL 1unsigned 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};CANAL 2unsigned int chan2[67] ={4500,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,550, 550,600, 500,600, 550,600, 500 ,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,650, 450,1700, 550,600, 500 ,1700, 550,1700, 500,1700, 550,1700, 550,1700, 500};CANAL 3unsigned int chan3[67] ={4500,4500, 500,1700, 550,1700, 550,1700, 500,600, 550,550 , 550,600, 500,600, 550,550, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 550,550, 550,550, 550,600, 550,550, ,1700, 500 ,600, 550,550, 550,1700, 550,1650, 550,1700, 550,1700, 500,1700, 600};CANAL 4unsigned int chan4[67] ={4450,4450, 550,1700, 550,1700, 500 ,1700, 550,600, 500,600, 550,550, 600,550, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,550, 550,600, 500,600, 550 , 550 600, 500 1700, 550 1700, 550 1700, 500 600, 550 1700, 500 1700, 550 1700, 550 1700, 500} ; CANAL 5 int chan5[67] ={4500 4500, 500 1700, 550 1700, 550 1700, 550 550, 550 550, 550 550, 600 550, 550 550, 550 1700, 550 1650, 550 1700, 550 550, 550 600 500 600, 550 550, 550 600, 500 1700, 550 600, 500 600, 550 1700, 500 600, 550 550, 550 600, 550 550, 550 550, 550 1700, 550 1700, 500 600, 550 1700, 500 1700, 550 1700 , 550,1700, 500} ; CANAL 6unsigned int chan6[67] ={4500,4500, 550,1650, 550,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 600,550 , 500 600, 550 550, 600 550, 550 550, 550 1700, 500 600, 550 1700, 500 600, 550 550, 550 600, 500 600, 550 1700, 500 600, 550 1700, 500 600, 550 1650, 600 1650, 550 1700 , 550,1650, 600} ; CANAL 7unsigned int chan7[67] ={4500 4500, 550 1700, 500 1700, 550 1750, 500 550, 550 600, 500 650, 500 550, 550 550, 550 1750, 500 1700, 500 1700, 550 650, 450 650 , 500 550, 550 600, 500 650, 500 550, 550 600, 500 1700, 550 1750, 500 600, 500 550, 550 600, 500 650, 500 1750, 450 1700, 550 600, 500 650, 500 1700, 500 1700, 550 1750 , 500,1700, 500} ; CANAL 8unsigned int chan8[67] ={4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 500 600, 550 550, 550 600, 500 1700, 550 600, 500 1700, 550 1700, 500 600, 550 550, 550 650, 450 600, 550 550, 550 1700, 550 550, 550 600, 500 1700, 550 1700, 550 1700 , 500,1700, 550} ; CANAL 9unsigned int chan9[67] ={4450,4500, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 500,600, 550,550 , 550 600, 500 600, 550 550, 550 600, 500 1700, 550 1700, 550 1700, 500 600, 550 550, 550 550, 550 600, 500 1700, 550 600, 500 600, 550 550, 550 1700, 550 1700, 500 1700 , 550,1700, 550} ; VOLUME UPunsigned int volUp[67] ={4500,4500, 550,1700, 500,1750, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,650, 450,600 , 550 600, 500 650, 450 650, 500 1700, 500 1750, 500 1750, 500 550, 550 600, 500 650, 500 550, 550 600, 500 650, 500 600, 500 600, 500 1700, 550 1750, 450 1750, 500 1700 , 550,1700, 500} ; VOLUME DOWNunsigned int volDown[67] ={4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 500 600, 550 550, 550 600, 500 1700, 550 1700, 550 600, 500 1700, 550 600, 500 600, 500 600, 550 550, 550 600, 500 650, 500 1700, 500 650, 500 1700, 500 1750, 500 1700 , 550,1700, 500} ; CANAL UPunsigned int chanUp[67] ={4500,4450, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 550,550, 550,550, 600,550, 550,1650, 550,1700, 550,1650, 600,550, 550,550 , 550,600, 500,600, 550,550, 550,550, 550,1700, 550,550, 600,550, 550,1650, 550,600, 550,550, 550,550, 550,1700, 550,550, 550,1700, 550,1700, 550,550, 550,1650, 600,1650 , 550,1700, 550} ; CANAL DOWNunsigned int chanDown[67] ={4500 4450, 600 1650, 550 1700, 550 1650, 550 600, 550 550, 550 550, 550 600, 500 600, 550 1700, 500 1700, 550 1700, 550 550, 550 600 , 550,550, 550,550, 550,550, 600,550, 550,550, 550,600, 500,600, 550,1650, 600,550, 550,550, 550,550, 600,1650, 550,1700, 500,1700, 600,1650, 550,550, 600,1650, 550,1700 , 500,1700, 550} ; 

Partie 2 :Arduino IoT Cloud

Depuis le Cloud IoT Arduino principal page, nous allons créer une nouvelle Chose et attribuez-lui un nom significatif. Appelons-le TVRemoteController . Nous allons ensuite sélectionner le tableau que nous allons utiliser. Pour ce didacticiel, nous avons utilisé un Arduino Nano 33 IoT, mais si vous avez une autre carte compatible, cela ira également, gardez simplement à l'esprit que le brochage et le comportement de la bibliothèque IR peuvent changer. Si, à ce stade, vous ne pouvez pas voir votre tableau, vous avez peut-être ignoré la Mise en route procédure que nous avons mentionnée ci-dessus, si tel est le cas, reprenez ce processus.

Une fois cela fait, nous ajouterons une Propriété à notre Chose , il représentera notre téléviseur. Sous la Smart Home catégorie, sélectionnez « TV » comme type de propriété, définissez-le sur « Lecture et écriture » ​​et sous « Mise à jour », sélectionnez « Quand la valeur change ».

Voici ce que les Propriétés vue de notre Chose devrait ressembler à ce point :

Partie 3 : Éditeur Web Arduino

Le moment est venu de cliquer sur le bouton "EDIT SKETCH", qui nous mènera à l'éditeur Web, où nous pourrons ajouter du code personnalisé au Sketch généré automatiquement par IoT Cloud.

La première chose que nous devons inclure est la bibliothèque IR Remote, par Ken Shirriff.

#include  

Nous devons ensuite configurer un tableau à deux dimensions pour nos canaux et 6 tableaux pour les commandes dont nous avons besoin. Si vous vous souvenez, dans la partie 1, nous avons capturé des données IR que nous allons maintenant utiliser pour remplir nos tableaux

const unsigned int chan[9][67] ={ {chan1}, {chan2}, {chan3}, {chan4}, {chan5}, {chan6}, {chan7}, {chan8}, {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] ={...}; 

Configurons ensuite la librairie IR et la fréquence requise (pour ce genre d'application ce sera toujours 38KHz)

IRsend irsend;const int freq =38; 

Nous aurons également besoin d'une fonction pour envoyer des commandes IR et faire clignoter la LED intégrée (à ce stade principalement à des fins de débogage). La valeur de retard utilisée dépendra de la marque et du modèle de votre téléviseur, alors n'hésitez pas à le modifier si les choses ne fonctionnent pas comme prévu (mauvaises commandes ou aucune commande reçue).

void sendIR(const unsigned int buf[]) { digitalWrite(LED_BUILTIN, HIGH); irsend.sendRaw(buf, 67, freq); retard (300); digitalWrite(LED_BUILTIN, LOW);} 

La dernière étape consiste à terminer le rappel généré onTvChange() avec un code personnalisé afin d'envoyer des commandes IR lorsque la propriété TV est modifiée par les commandes Alexa. Par exemple, si le volume est augmenté, nous devons virtuellement appuyer sur le bouton Volume Up, si le canal est mis à 7, il faut envoyer la séquence pour le bouton du canal 7, et ainsi de suite.

void onTvChange() { Serial.println("=================="); Serial.println("Switch:"+String(tv.getSwitch())); Serial.println("Volume:"+String(tv.getVolume())); Serial.println("Channel:"+String(tv.getChannel())); Serial.println("Muet :"+String(tv.getMute())); Serial.println("==================="); if (premier){ prevSwitch =tv.getSwitch(); prevVolume =tv.getVolume(); prevChannel =tv.getChannel(); prevMute =tv.getMute(); premier =faux ; retourner; } // Le volume a changé if (tv.getVolume()> prevVolume) { tv.setMute(false); prevMute =false; for (int k =prevVolume + 1; k<=tv.getVolume(); k++) { sendIR(volUp); Serial.println("Volume demandé :"+String(tv.getVolume())+" Set :"+String(k)); } prevVolume =tv.getVolume(); } else if (tv.getVolume() =tv.getVolume(); k--) { sendIR(volDown); Serial.println("Volume modifié :"+String(tv.getVolume())+" Set :"+String(k)); } prevVolume =tv.getVolume(); } // Muet modifié if (tv.getMute() !=prevMute &&tv.getMute()) { prevMute =tv.getMute(); envoyerIR(muet); Serial.println("Muet modifié :"+String(tv.getMute())); } else if (tv.getMute() !=prevMute &&!tv.getMute()) { prevMute =tv.getMute(); envoyerIR(muet); Serial.println("Muet modifié :"+String(tv.getMute())); } // Chaîne modifié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(chanDown); Serial.println("Chan demandé :"+String(newChannel)+" Set :"+String(ch)); } } } prevChannel =newChannel; Serial.println("Channel modifié :"+String(tv.getChannel())); } // On/Off changé if (tv.getSwitch() !=prevSwitch) { prevSwitch =tv.getSwitch(); if (tv.getSwitch()) { sendIR(chan[6]); } else { sendIR(onoff); } Serial.println("Switch modifié :"+String(tv.getSwitch())); } 

Partie 4 :Amazon Alexa

Nous aurons maintenant besoin de l'application Amazon Alexa téléchargeable sur l'App Store d'Apple ou le Google Play Store. Une fois installé, connectez-vous avec votre compte existant ou créez-en un nouveau.

Passons en revue les étapes nécessaires pour installer la compétence Arduino Alexa et la configurer pour accéder et contrôler notre téléviseur. Nous suivrons la séquence d'images ci-dessous pour voir toutes les étapes requises.

Nous avons terminé, il est maintenant temps de contrôler vocalement notre téléviseur en demandant des choses comme

  • "Alexa, monte le volume de la télé."
  • "Alexa, coupe le son de la télévision" ou "Alexa, rétablit le son de la télévision".
  • "Alexa, prochaine chaîne à la télévision."

Amusez-vous avec Alexa et IoT Cloud. Si vous avez des questions et/ou construisez ce projet, faites-le nous savoir dans les commentaires ci-dessous.

Merci,

L'équipe Arduino

Code

Arduino

Schémas


Processus de fabrication

  1. Activez le contrôle Alexa sur votre ventilateur de plafond
  2. Machine à LÉVITATION ULTRASONIQUE utilisant ARDUINO
  3. Télécommande universelle utilisant Arduino, 1Sheeld et Android
  4. Voltmètre DIY utilisant Arduino et Smartphone
  5. Moniteur de fréquence cardiaque utilisant l'IoT
  6. Utiliser l'IoT pour contrôler à distance un bras robotique
  7. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  8. Connaître la température de votre maison depuis n'importe où avec Arduino Cloud !
  9. Contrôler Arduino Rover à l'aide de Firmata et de la manette Xbox One