Cours du Bitcoin avec Arduino

La connexion au point d’accès Wi-Fi en HTTPS non sécurisé

L’API CoinGecko nécessite une connexion HTTPS qui est le protocole employé pour le trafic HTTP sécurisé. Dans ce projet, nous n’avons pas besoin de sécurité, aussi dans un souci de simplification nous utilisons une connexion HTTPS dont nous désactivons la sécurité.

La bibliothèque WiFiClientSecure fournie avec le gestionnaire de carte Arduino de l’ESP32 implémente le protocole HTTP sur TLS permettant d’établir une connexion à un serveur Web HTTPS.

Nous déclarons cette bibliothèque par les instructions suivantes:

// Déclaration des bibliothèques utilisées
#include <WiFiClientSecure.h>

Nous utilisons ensuite la macro “#define” pour déclarer les identifiants de la connexion au point d’accès Wi-Fi que vous avez choisi d’utiliser (la box internet de votre fournisseur d’accès internet par exemple).  Pour cet article, je prends l’exemple de “LiveBox_1324” comme nom de réseau Wi-Fi (SSID) et “12345?ABCDE” comme mot de passe.

C’est à vous de modifier ces 2 lignes de code pour y insérer vos identifiants Wi-Fi :

// Définition des constantes globales
#define SSID_L          "LiveBox_1324" // Nom du réseau Wi-Fi
#define MOT_DE_PASSE_L  "12345?ABCDE" // Mot De Passe du réseau Wi-Fi

Le client de la connexion Wi-Fi HTTPS se déclare en variable globale comme suit:

// Déclarations des variables globales
WiFiClientSecure ClientWeb_G;

Dans ce programme Arduino, une fonction unique rassemble la gestion de la connexion au point d’accès Wi-Fi. Nous appelons cette fonction “GestionConnexionWifi”:

// Prototypes de fonction
void GestionConnexionWifi(void);

Les principales étapes de cette fonction sont:

a) Le lancement de la connexion de notre WiFi Kit 32 au point d’accès WI-FI à l’aide des identifiants que vous avez déclarés précédemment:

WiFi.begin(SSID_L, MOT_DE_PASSE_L);

b) La récupération de l’état d’avancement de la connexion Wi-Fi:

StatutConnexion_L = WiFi.status();

c) La sécurité https est désactivée une fois la connexion étable, c’est à dire que le statut retourné est “WL_CONNECTED”, :

    if (StatutConnexion_L == WL_CONNECTED)
    {
      ClientWeb_G.setInsecure();  //  On ne vérifie pas les certificats ni les empreintes https 
    }

La partie du programme Arduino dédiée à la connexion au point d’accès Wi-Fi est terminée, voici la synthèse (attention aux identifiants qui sont les vôtres) :

// Déclaration des bibliothèques utilisées
#include <WiFiClientSecure.h>

// Définition des constantes globales
#define SSID_L          "LiveBox_1324" // Nom du réseau Wi-Fi
#define MOT_DE_PASSE_L  "12345?ABCDE" // Mot De Passe du réseau Wi-Fi

// Prototypes de fonction
void GestionConnexionWifi(void);

// Déclarations des variables globales
WiFiClientSecure ClientWeb_G;

// Fonction de démarrage, s'exécute une seule fois:
void setup()
{
  Serial.begin(115200); // Ouverture du port série à 115200 bauds
  
  GestionConnexionWifi();
}

// Fonction principale du programme, s'exécute en boucle:
void loop()
{
  GestionConnexionWifi();
}

void GestionConnexionWifi()
{
  // Variables de la fonction
  static wl_status_t StatutConnexion_L = WL_DISCONNECTED; // Pour mémoriser l'état de la connexion

  // Verification du statut d ela connexion
  StatutConnexion_L = WiFi.status();

  if(WiFi.status()!=WL_CONNECTED)
  {
    Serial.println("Connexion au point d'accès Wi-Fi ...");
    WiFi.begin(SSID_L, MOT_DE_PASSE_L); // Tentative de connexion au point d'accès Wi-Fi
    StatutConnexion_L = WiFi.status(); // Lecture de l'état de la connexion et mémorisation dans la variable "StatutConnexion_L"
    while ((StatutConnexion_L != WL_NO_SSID_AVAIL)&&(StatutConnexion_L != WL_CONNECTED)&&(StatutConnexion_L != WL_CONNECT_FAILED))
    {
      delay(1200);
      StatutConnexion_L = WiFi.status(); // Lecture de l'état de la connexion et mémorisation dans la variable "StatutConnexion_L"
    }
    // Affichage du résultat de la tentative de connexion
    if (StatutConnexion_L == WL_CONNECTED)
    {
      Serial.println("Connection OK");
      ClientWeb_G.setInsecure();  //  On ne vérifie pas les certificats ni les empreintes https 
    }
    else if (StatutConnexion_L == WL_NO_SSID_AVAIL)
    {
      Serial.println("SSID introuvable");
    }
    else if (StatutConnexion_L == WL_CONNECT_FAILED)
    {
      Serial.println("Mot de passe KO");
    }
    else
    {
      Serial.println("Autre erreur");
    }   
  }  
}

Pour valider cette étape, je vous invite à compiler ce programme Arduino puis à le transférer dans la carte. Le paragraphe ci-dessous détaille les traces envoyées par le port série pour permettre de vérifier que la carte WiFi Kit 32 se connecte bien au point d’accès WI-FI.

Compilation et vérification de la connexion au point d’accès Wi-Fi

Pour visualiser les traces de déverminage envoyées à travers le port série, vous pouvez utiliser le terminal série intégré à l’Arduino IDE. Pour cela, dans le menu “Outils” sélectionnez “Moniteur série”:

Lancer le "Moniteur série" de l'Arduino IDE

Afin que les traces soient lisibles, la vitesse de communication d’ordinateur doit correspondre à celle du microcontrôleur, soit 115200 bauds.

Traces du compte-rendu de connexion au point d'accès Wi-Fi

Si le message “Connexion OK” s’afficher en bas de l’écran vous pouvez passer à l’étape suivante qui présente la solution de récupération du cours du Bitcoin auprès de l’API CoinGecko (page suivante).

Laisser un commentaire