Installation d’un Croquis RadioShuttle pour ESP32

Ce chapitre couvre l’installation des croquis de RadioShuttle. Vous trouverez ici des informations sur la carte ECO Power. Veuillez lire ce chapitre pour les instructions de mise en service.

Installer la bibliothèque RadioShuttle

Le logiciel RadioShuttle complet est livré dans une archive Zip et peut être chargé ici en spécifiant l’ID de la carte. L’ID se trouve au dos de la carte, par ex. 5678.
Une archive Zip avec le logiciel actuel sera chargée, par ex. ⁥ « RadioShuttle-Arduino-2019-05-10.zip ».
L’archive zip doit être décompressée et le contenu du dossier « libraries » copié dans le dossier « Documents/Arduino/libraries ».

Remarque :
Le contenu d’une bibliothèque RadioShuttle existante doit être complètement écrasé (ne pas fusionner) !

Après la copie, vous devriez voir ce qui suit dans le dossier « libraries » :

  • « Adafruit_Si7021 » (bibliothèque pour le capteur de température/humidité)
  • « Arduino-mbed-APIs » (pilotes supplémentaires et nouvelles fonctions de minuterie pour les puces ESP32 et D21)
  • « ds3231 » (bibliothèque pour l’horloge RTC de la carte ECO Power
  • « OLED » (bibliothèque pour les écrans SSD1306, voir information technique Utilisation de la Carte ECO Power avec un Écran OLED)
  • « pubsubclient » (bibliothèque qui fournit un client pour publier/abonner des messages simples avec un serveur compatible MQTT)
  • « RadioShuttle » (logiciel de protocole radio et exemples)
  • « RTCZero » (bibliothèque RTC pour la puce Atmel D21)
  • « SX1276GenericLib » (pilote pour la puce radio LoRa)

Personnaliser PinMap.h

Le fichier « PinMap.h » définit les connexions de l’ESP32 MCU avec la puce radio et les autres périphériques. Il doit être vérifié et, si nécessaire, adapté à chaque programme nouvellement installé. Vous pouvez le trouver dans l’EDI Arduino ci-dessus comme un onglet supplémentaire.

Pour faire correspondre le code du programme et la révision de la carte, recherche #elif defined(ARDUINO_ESP32_DEV) et assurez-vous que cette ligne est active. Si vous avez une autre version de la carte « ECO Power », activez la ligne correspondante et désactivez l’ancienne révision « ECO Power » si nécessaire :
#define ESP32_ECO_POWER_REV_1 // our rev1 ESP32 ECO Power Boards

Exemple d’application « PropertyEditor »

Il existe une mémoire dans laquelle les réglages qui doivent être conservés sur la carte après l’installation d’un nouveau croquis peuvent être sauvegardés définitivement. Ici, il est judicieux d’enregistrer des paramètres tels que les données d’accès WiFi ou, etc. Les applications « PropertyEditor » et “PropertyTest” (voir dans le tableau plus bas) vous permet d’écrire en mémoire vos propres valeurs de propriétés. La page Mémoire Permanente pour les Réglages explique en détail les différences entre les différents types de mémoir.

Après le démarrage de l’EDI Arduino, l’entrée « ESP32 Dev Module » doit être sélectionnée pour la carte ECO Power sous « Outils > Type de carte », car l’EDI Arduino affiche toujours uniquement les bibliothèques exécutables sur la carte actuellement sélectionnée.

L’exemple « PropertyEditor » peut ensuite être chargé dans l’EDI Arduino via le menu « Fichier > Exemples > Arduino-mbed-API > PropertyEditor ».

Ouvrez la fenêtre « Moniteur série » (voir Ouvrir la fenêtre « Moniteur série » d’Arduino ci-dessous) et chargez le schéma « PropertyEditor » avec la fonction de téléchargement sur la carte ECO Power. Si tout s’est bien passé, vous devriez voir ce texte dans la fenêtre :

Pour lister toutes les propriétés disponibles, entrez « l » (pour list) dans la ligne de saisie, comme montré dans l’image ci-dessus, et cliquez sur le bouton « Envoyer » :

Pour définir une valeur pour une propriété, vous devez entrer un « s » (pour set) dans la ligne de saisie, suivi du numéro de la propriété et de sa valeur. Cliquez ensuite sur le bouton « Envoyer ». Dans cet exemple, la propriété « WIFI_SSID » (numéro 30) doit recevoir la valeur « radioshuttleuser » :

Après un nouvel appel de liste, on peut voir que la propriété « WIFI_SSID » a reçu la valeur « radioshuttleuser » :

En saisissant la commande « d » (pour delete), des propriétés individuelles peuvent être effacées de la mémoire.

Définition des propriétés pour « RadioTest »

La simple application de test RadioShuttle (« RadioTest ») est destinée aux débutants. Il y a deux appareils qui communiquent entre eux et échangent un simple message. Un appareil est appelé un nœud et le second est une station. Un message est transmis du nœud à la station en appuyant sur la touche « Utilisateur ». Cela fonctionne également dans l’autre sens, la station peut également transmettre un message au nœud

Pour l’exemple d’application « RadioTest », au moins les propriétés suivantes doivent être définies avec le PropertyEditor :

PropriétéTypeExplication
LORA_DEVICE_IDT_32BITID du dispositif de la carte (par défaut)
LORA_CODE_IDT_32BITCode de la carte (par défaut)
LORA_RADIO_TYPET_32BITType d’utilisation (non défini) :
1 = Nœud hors ligne (fonctionnement comme capteur radio en mode « deepsleep »)
3 = Nœud en ligne (fonctionnement en tant que capteur radio, prêt à recevoir en permanence)
4 = Station basic (fonctionnement en tant que serveur pour les petits réseaux)
5 = Station serveur (fonctionnement en tant que serveur pour les grands réseaux)
LORA_REMOTE_IDT_32BITID de communication du station distant (non défini)
LORA_APP_PWD
(en option)
T_STRDéfinit le mot de passe de cryptage AES-128 par application

Si « LORA_REMOTE_ID » et « LORA_RADIO_TYPE » ne sont pas définis et que #define USE_DEMOBOARD_PAIR est actif dans le fichier « RadioTest.ino », un mode démo test est utilisé entre les deux cartes (voir Personnaliser RadioTest.ino plus bas).

Activation de l’exemple d’application « RadioTest »

Après le démarrage de l’EDI Arduino, l’entrée « ESP32 Dev Module » doit être sélectionnée pour la carte ECO Power sous « Outils > Type de carte », car l’EDI Arduino affiche toujours uniquement les bibliothèques exécutables sur la carte actuellement sélectionnée.

Chargez l’exemple « RadioTest » via le menu « Fichier > Exemples > RadioShuttle > RadioTest » dans l’IDE. Avec cet exemple de programme, vous pouvez envoyer des messages d’un nœud à une station ou vice versa. Il se compose des fichiers « PinMap.h », « RTCUtil.cpp » et « RadioTest.ino ».

Les réglages suivants doivent être vérifiés ou effectués avant utilisation :

Personnaliser RadioTest.ino

La ligne #define USE_DEMOBOARD_PAIR peut être désactivée comme suit :
// #define USE_DEMOBOARD_PAIR

Cette ligne a été utilisée pour faire correspondre automatiquement les paires de cartes expédiées.

Vérifier l’exemple d’application « RadioTest »

Il suffit d’appuyer sur la touche « Utilisateur » au niveau du nœud. Un message réseau est ensuite envoyé du nœud au serveur. Pendant la transmission des messages, les LEDs d’émission et de réception doivent clignoter brièvement. Ceci est également possible inversement en appuyant sur la touche « Utilisateur » sur le serveur et le nœud doit recevoir un message.

De plus, les messages sont affichés dans la fenêtre « Moniteur série ».

Ouvrir la fenêtre « Moniteur série » d’Arduino

Il est recommandé de toujours ouvrir la fenêtre de la console du moniteur série de Arduino, car elle affiche des messages importants. Bien entendu, un adaptateur de programmation raccordé est nécessaire. Les messages de réinitialisation tels que la réinitialisation du chien de garde, la réinitialisation en cas de panne de courant et les messages de démarrage y sont également affichés.

Les messages RadioShuttle reçus et les messages envoyés sont également affichés ici. Avec la fonction EnablePacketTrace(), l’enregistrement des messages peut être désactivé ou adapté.

Si la fenêtre « Moniteur série » s’ouvre plus tard, les messages précédents ne sont évidemment pas visibles.

Exemple A: Lancement réussi du logiciel RadioShuttle

Immédiatement après le démarrage ou la réinitialisation de la carte, vous devriez voir un message similaire à celui ci-dessus dans la fenêtre « Moniteur série ». Des paramètres importants tels que la fréquence, la largeur de bande et le facteur d’étalement sont visibles. Le message « TimeOnAir » indique combien de temps les données voyagent avec les paramètres réglés. Le temps, s’il est disponible, est pris du temps du RTC, sinon le temps de compilation est utilisé. Il est également important d’indiquer le numéro du nœud (ici « ID=201 ») ainsi que le réglage de l’exécution du système en tant que nœud ou station.

Exemple B: Message envoyé avec succès

Après avoir appuyé sur la touche « Utilisateur », un message de test a été envoyé à un deuxième nœud. Celui-ci a confirmé la réception.

Exemple C: Timeout d’attente pour l’envoi d’un message

Un message de test a été envoyé après avoir appuyé sur la touche « Utilisateur ». Mais la réception n’a pas été confirmée. Après trois tentatives, ce processus est interrompu et un message d’erreur (« MSG_SentTimeout ») apparaît.

Etats des LED dans l’exemple « RadioTest »

LED 2 (LED verte à droite) :

  • Désactivé
    La carte n’a pas d’alimentation ou est en mode « deepsleep »
  • Clignote brièvement toutes les 10 secondes
    La carte fonctionne et est en mode « deepsleep » ESP32 pour consommer le moins d’énergie possible, le processeur est largement éteint. Le clignotement court indique qu’il devient actif régulièrement pour vérifier s’il y a quelque chose à faire
  • S’allume en permanence faiblement
    La carte est active et fonctionne dans les événements Arduino « loop ». Ensuite, il utilise un simple « sleep » et est réveillé environ 1000 fois par seconde par le système d’exploitation
  • Scintillement
    Ceci signale la réception de données radio LoRa
  • Allumée en permanence
    La carte est active et fonctionne dans la « loop » Arduino. Pendant son fonctionnement, la LED est allumée, donc si la « loop » est active en permanence, la LED est allumée en permanence. Pour une utilisation optimisée en énergie, la « loop » doit bien entendu fonctionner le moins possible ou seulement lorsqu’il y a quelque chose à traiter. Mot-clé : pas de sondage (« no polling »)

LED 1 (LED rouge à gauche):

  • Désactivé
    En règle générale, la LED rouge ne s’allume pas, mais peut être utilisée par l’utilisateur
  • Scintillement
    Lors de la transmission de données radio LoRa, la LED rouge s’allume brièvement en fonction de la longueur des données. Cela se produit lors de l’envoi de chaque message

Bien entendu, les LEDs peuvent également être utilisées individuellement ou en complément par l’utilisateur.

Mémoire permanente pour les réglages

Il existe une mémoire dans laquelle les réglages qui doivent être conservés sur la carte après l’installation d’un nouveau croquis peuvent être sauvegardés définitivement. Ici, il est judicieux d’enregistrer des paramètres tels que les données d’accès WiFi ou similaire, etc. Les exemples d’applications « PropertyEditor » et « PropertyTest » (voir tableau ci-dessous) peuvent être utilisés à cet effet. La page Mémoire Permanente pour les Réglages explique cela en détail.

Vue d’ensemble de tous les exemples d’applications

NomBibliothèqueExplication
BlinkyArduino-mbed-APIsClignotement périodique d’une LED
BlinkyEnhancedArduino-mbed-APIsClignotement commandé par minuterie d’une LED
BlinkyEnhanced_C_Plus_PlusArduino-mbed-APIsClignotement commandé par minuterie d’une LED (en C++)
CPUBenchArduino-mbed-APIsMesure les performances des CPU flottants et entiers
DisplayI2CSampleArduino-mbed-APIsUtilisation d’un écran OLED (128×64 pixels, I2C). Voir Utilisation de la Carte ECO Power avec un Écran OLED
ESP32AsyncHTTPClientArduino-mbed-APIsUn programme client HTTP simple qui exécute une requête HTTP GET ou POST. Le tout se déroule de manière asynchrone sans bloquer la « loop » principale de l’Arduino
ESP32BlinkyDeepSleepArduino-mbed-APIsExemple « deepsleep » (faible consommation d’énergie) ; clignote toutes les 10 secondes en « deepsleep », la LED2 clignote toutes les minutes au réveil
ESP32FrequencyThrottleArduino-mbed-APIsRéduire l’horloge du processeur MCU à 2 MHz pour économiser de l’énergie
ESP32MQTTAlarmSystemArduino-mbed-APIsPetit système d’alarme qui déclenche une alarme via MQTT via un détecteur de mouvement, y compris les données d’état et de température via l’écran
ESP32MQTTClientArduino-mbed-APIsÉtablit une connexion WiFi avec un broker MQTT, lui envoie des messages et reçoit les topics enregistrés du broker
ESP32RadioShuttleMQTTArduino-mbed-APIsReçoit les données des nœuds et les transmet à un broker MQTT. Les messages MQTT reçus peuvent être transmis aux nœuds LoRa
HelloWorldArduino-mbed-APIsExemple de sortie simple ; explique les différentes options « printf »
PMSensorRadioRadioShuttleCapteur d’environnement ; mesure périodiquement la concentration de poussière en µg/m3 (selon les normes PM10 et PM2,5)
PropertyEditorArduino-mbed-APIsProgramme de réglage des paramètres (propriétés), qui sont stockés de manière permanente sur la carte. Restez après le redémarrage ou même après l’installation d’un nouveau programme. Voir aussi Mémoire Permanente pour les Réglages
PropertyTestArduino-mbed-APIsMontre comment les propriétés, telles que, les chaînes de caractères et les valeurs numériques peuvent être stockées dans la mémoire flash permanente pour être utilisées dans les croquis. Voir aussi Mémoire Permanente pour les Réglages
RadioTestRadioShuttleVoir l’explication détaillée ci-dessus
RTC3231CalibrationArduino-mbed-APIsOutil d’étalonnage pour la mesure des erreurs de fréquence du RTC de la carte ECO Power
TimerTestArduino-mbed-APIsExemple d’appel de plusieurs minuteries asynchrones qui appellent les fonctions de fin d’appel lorsqu’un timeout d’attente est en attente. Fonctionne avec précision et économise de l’énergie

Vidéo didactique : Non-volatile settings (NV Property)

Fiche produit PDF