Série Cloud Home Automation, partie 4: ampoule connectée utilisant AWS, ESP32 et Arduino - How to do

The best way to stay up to date with technology

Série Cloud Home Automation, partie 4: ampoule connectée utilisant AWS, ESP32 et Arduino

Série Cloud Home Automation, partie 4: ampoule connectée utilisant AWS, ESP32 et Arduino

Partagez l'article

Bienvenue à 
SIMPLE LEARNING

 AWS  Cloud Home Automation , série  Zero to Hero. 
In the fourth part, we will create an automated system to make the home light bulb connected to the web using AWS, an 
ESP32 board, a relay module and Arduino Code.
Ceci est la dernière partie de la série et ici, nous atteindrons notre objectif ultime d'allumer l'ampoule en un seul clic de n'importe où, littéralement de n'importe où, même de l'Antarctique, car ils ont accédé à Internet. L'IoT permet à chacun de rendre la vie plus intelligente et plus facile. Bien que ce ne soit qu'un début, si les lecteurs montrent de l'enthousiasme, je ferai plus de tutoriels où l'objectif principal est d'enseigner à partir de
scratch and make cost-effective solutions
 [Faites-le moi savoir sur LinkedIn].
The following series split into four parts (refer below) with very simple and clear instructions to provision a home automation system to control house appliances through the web.
Tout ce qui est couvert à partir de zéro, vous n'aurez aucune difficulté à comprendre En cas d'éclaircissements,  envoyez-moi une note sur LinkedIn . N'hésitez pas à les explorer facilement, passez à celui qui vous concerne.
  1. Partie I  - Connectez votre appareil (ESP32) au cloud AWS.
  2. Partie II - Utilisez Device Shadow Service (AWS IoT) pour contrôler la LED intégrée ESP32 à l'aide du client MQTT.
  3. Partie III  - Créer un client Web sécurisé hébergé dans Node-RED pour contrôler la LED intégrée ESP32.
  4. Partie IV  - La vraie affaire: Créez un système automatisé pour connecter l'ampoule au Web à l'aide d'AWS, d'une carte ESP32 et d'un module de relais.
Prerequisites
:
  1. C'est la suite de la série suivante. Assurez-vous que vous avez exercé la partie I  - Connectez votre appareil (ESP32) au cloud AWS avec rigueur.
  2. Ce didacticiel couvre principalement la pratique, la connaissance préalable d'AWS IoT est un avantage. Cliquez ici pour consulter la documentation officielle AWS IoT.
  3. Un module relais 2 canaux (facilement disponible sur  Amazon.com / Amazon.in / Aliexpress ou Local Robotics Shop) et une banque d'alimentation pour alimenter l'ESP32.
Learning Objectives
:
  1. En utilisant un client Web, nous allumerons / éteindrons l'ampoule en utilisant AWS, une carte ESP32, un module de relais et le code Arduino. Nous tirerons parti de la puissance de Device Shadow qui est très efficace en cas de panne de courant et de problème de connectivité. L'ombre de l'appareil stocke l'état souhaité et lorsque l'ampoule établit la connexion, l'état souhaité est synchronisé.
  2. Bonus - Toggle the light by using Google Assistant or Alexa. 
So let's see something happen now
. 
Nous allons copier le code Arduino ci-dessous, apporter quelques modifications mineures à l'IDE Arduino et rendre le code fonctionnel. Vous pouvez également télécharger le code Arduino en tant que fichier ino  ici . 
/*********
  Gourav Das
  Complete project details at https://hackernoon.com/cloud-home-automation-series-part-4-connected-light-bulb-using-aws-esp32-and-arduino-94n377d
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*********/

#include <AWS_IOT.h>
#include <WiFi.h>
#include <ArduinoJson.h>

AWS_IOT lightbulb;
int relay_pin = 13; // Relay Pin

char WIFI_SSID[]="Wifi-Name";
char WIFI_PASSWORD[]="Wifi_Password";
char HOST_ADDRESS[]="************-***.iot.us-east-1.amazonaws.com";  //AWS IoT Custom Endpoint Address
char CLIENT_ID[]= "ESP32";
char SHADOW_GET[]= "$aws/things/{Thingname}/shadow/get/accepted";
char SENT_GET[]= "$aws/things/{ThingName}/shadow/get";
char SHADOW_UPDATE[]= "$aws/things/{ThingName}/shadow/update";

int status = WL_IDLE_STATUS;
int msgReceived=0;
char payload[512];
char reportpayload[512];
char rcvdPayload[512];

void mySubCallBackHandler (char *topicName, int payloadLen, char *payLoad)
{
    strncpy(rcvdPayload,payLoad,payloadLen);
    rcvdPayload[payloadLen] = 0;
    msgReceived = 1;
}

void updateShadow (int power)
{ 
  sprintf(reportpayload,"{\"state\": {\"reported\": {\"power\": \"%d\"}}}",power);
  delay(3000);   
    if(lightbulb.publish(SHADOW_UPDATE,reportpayload) == 0)
      {       
        Serial.print("Publish Message:");
        Serial.println(reportpayload);
      }
    else
      {
        Serial.println("Publish failed");
        Serial.println(reportpayload);   
      }  
} 

void setup() {
  Serial.begin(115200);
  pinMode(relay_pin, OUTPUT);
  delay(2000);  

    while (status != WL_CONNECTED)
    {
        Serial.print("Attempting to connect to SSID: ");
        Serial.println(WIFI_SSID);
        // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
        status = WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

        // wait 5 seconds for connection:
        delay(5000);
    }

    Serial.println("Connected to wifi");

    if(lightbulb.connect(HOST_ADDRESS,CLIENT_ID)== 0) //Connect to AWS IoT COre
    {
        Serial.println("Connected to AWS");
        delay(1000);

        if(0==lightbulb.subscribe(SHADOW_GET,mySubCallBackHandler)) //Subscribe to GET Shadow Service
        {
            Serial.println("Subscribe Successfull");
        }
        else
        {
            Serial.println("Subscribe Failed, Check the Thing Name and Certificates");
            while(1);
        }
    }
    else
    {
        Serial.println("AWS connection failed, Check the HOST Address");
        while(1);
    }
  
  //Sent Empty string to fetch Shadow desired state
  delay(3000);   
    if(lightbulb.publish(SENT_GET,"{}") == 0)
      {       
        Serial.print("Empty String Published\n");
      }
    else
      {
        Serial.println("Empty String Publish failed\n");
      }     
}

void loop() {
  
 if(msgReceived == 1)
    
  {
        msgReceived = 0;
        Serial.print("Received Message:");
        Serial.println(rcvdPayload);
        StaticJsonDocument<256> doc;
        deserializeJson(doc, rcvdPayload);
        
    // Test if parsing succeeds.
        if (doc.isNull()) {
        Serial.println("parseObject() failed");
        return;
        }
    
        int power = doc["state"]["desired"]["power"];
        Serial.println(power);
        if(power == 1)
        digitalWrite(relay_pin, LOW);
        else if(power == 0)
        digitalWrite(relay_pin, HIGH);
    updateShadow(power);  
    }  
}
Nous devons ajouter une bibliothèque dans Arduino IDE, allez dans  Outils → Gérer les bibliothèques . Recherchez ArduinoJson (par Benoit Blanchon), sélectionnez la dernière version 6.xx uniquement et cliquez sur installer. Le code ne fonctionnera pas sur les versions 5.xx et inférieures. N'oubliez pas non plus que nous avons utilisé la   bibliothèque AWS_IOT dans le code pour intégrer ESP32 à AWS. Si vous l'ignorez, passez à la  partie 1 de la série . Consultez également la section Inscription des certificats sous Intégration matérielle.
Modifications du code
char WIFI_SSID[]="Wifi-Name";
char WIFI_PASSWORD[]="Wifi_Password";
char HOST_ADDRESS[]="************-***.iot.us-east-1.amazonaws.com";  //AWS IoT Custom Endpoint Address
char CLIENT_ID[]= "ESP32";
char SHADOW_GET[]= "$aws/things/{Thingname}/shadow/get/accepted";
char SENT_GET[]= "$aws/things/{ThingName}/shadow/get";
char SHADOW_UPDATE[]= "$aws/things/{ThingName}/shadow/update";
Mettez à jour les détails nécessaires, ignorez 
CLIENT_ID[]= "ESP32"
(Gardez-le tel quel). Dans
HOST_ADDRESS[]
 mettez l'adresse AWS IoT Endpoint que vous pouvez récupérer dans le tableau de bord IoT, paramètres (vérifiez la barre latérale). Ensuite, nous remplacerons
{ThingName}
dans le code avec le nom réel de la chose (par exemple ESP32) que nous avons donné au moment de la création de la chose dans la partie 1 de la série. Pour vérifier le
Thing Name
Cliquez ici pour accéder à AWS IoT Console (Région: Virginie du Nord), sélectionnez Things sous le
Manage
 dans la barre latérale et vérifiez le nom comme indiqué ci-dessous.


Maintenant, branchez votre carte ESP32 avec votre ordinateur de bureau / portable à l'aide d'un câble USB et téléchargez le code.

ESP32 Wiring
Warning:
In this exercise, we’re dealing with the mains voltage . Playing with mains voltage is like playing with fire. If you’re not familiar with mains voltage seek help. While programming the ESP or wiring your circuit make sure everything disconnected from the mains voltage.
Dans un premier temps, nous allons connecter les fils de pontage (F / F) avec un module relais 2 canaux, comme indiqué ci-dessous. Nous utiliserons une rallonge pour allumer l'ampoule, comme
precautionary measure
vous devez éviter de mettre la fiche sur la tension secteur tout en effectuant toutes les connexions suivantes. Ensuite, placez le fil sous tension sortant de la fiche dans le port COM1 du relais et établissez une connexion entre le port NO1 du relais et l'ampoule. Ainsi, en établissant cette connexion, l'ESP32 pourra contrôler le module relais et lui indiquer quand allumer / éteindre l'ampoule.
Note: Never touch the relay module when powered from the mains voltage.
Tout d'abord, comprenez les principes fondamentaux et en suivant quelques cours électriques de base, vous pourrez éclairer toute votre maison d'un simple clic sur un bouton.
  • ESP32 VIN vers relais VCC
  • ESP32 GND vers relais GND
  • ESP32 D13 vers relais IN1
  • Reliez COM1 à la source d'alimentation principale
  • Relais NO1 à ampoule
  • Une fois que nous avons établi la connexion ci-dessus, nous avons presque terminé. Maintenant, allumez l'ESP32 en utilisant une source d'alimentation externe (Power Bank), attendez un certain temps pour que la connexion s'établisse et nous devons également allumer l'alimentation principale de l'ampoule pour faire fonctionner les circuits. Maintenant, nous allons tester les points de terminaison Web que nous avons créés dans la partie 3, appuyez sur votre URL principale Node-RED suivie de / ON , AWS (par exemple
    http://52.90.186.136:1880/ON
    ) et IBM Cloud (par exemple
    https://aws-iot.eu-gb.cf.appdomain.cloud/ON
    ). Il chargera un site Web, cliquez sur l'ampoule pour allumer / éteindre l'ampoule. Si vous êtes venus si loin, tadaa! Vous l'avez finalement fait 💪 et soyez fier de votre nouvelle réalisation et montrez au monde ce dont vous êtes capable 👩‍💻 👨‍💻.
    Peu de choses à retenir:

    1. Soyez doux tout en allumant / éteignant l'ampoule, elle peut se coincer si elle est cliquée très rapidement. La réinitialisation aidera sûrement dans ce cas, appuyez sur EN dans ESP32 pour rétablir la connexion avec AWS.
    2. AWS Device shadow est un outil puissant. En cas de panne de courant ou de problème de connectivité, l'ombre de l'appareil stocke l'état souhaité qu'il reçoit du client Web hébergé dans Node-RED. Lorsque l'ampoule établit le lien, l'état souhaité est synchronisé. Vous pouvez l'essayer en prenant l'alimentation secteur de l'ampoule après avoir envoyé la demande d'état souhaité (ON / OFF) du client Web. Lorsque vous avez rallumé l'ampoule, vous verrez la magie. 🧙‍♀️ 🧙‍♂️
    3. Congratulations on completing the 4th part :)
      C'est un immense plaisir de vous voir ici et de lire ceci, je vous remercie  individuellement . Restez curieux et si vous voulez plus de tutoriels, faites le moi savoir sur LinkedIn. Cela m'aidera à revenir avec plus de tutoriel sur divers sujets d'intérêt public.
      Bonus
      : Après avoir reçu quelques retours, j'ai pensé à intégrer le tutoriel suivant à l'assistance vocale. Vous pouvez maintenant poursuivre le didacticiel et l'intégrer avec Google Assistant ou Alexa. Cliquez ici 
      for step-by-step instructions. 
      Veuillez partager et commenter uniquement si vous le trouvez utile et aidez-moi dans ma mission d'éduquer et de familiariser les gens dans le monde de la numérisation 💪 #Ceci est un tutoriel gratuit et tous mes prochains tutoriels seront gratuits et accessibles à partir des forums publics. # Appréciez si vous m'envoyez une note sur LinkedIn et partagez votre opinion. Ne t'inquiète pas, je ne mords pas 👻 alors ne recule pas 🏃🏻‍♀️ 🏃🏻. Vos commentaires m'aideront à proposer des contenus plus impressionnants sur Internet.

Aucun commentaire:

Enregistrer un commentaire

techzone

Formulaire de contact

Nom

E-mail *

Message *

الصفحات