L'atelier loRa est parti, sous le nom de “Rendez-vous avec loRa”.
Nous allons explorer les possibilités offertes par cette technologie de communication sans fil bas débit et très basse consommation, qui est notamment à la base de ce que l'on nomme “l'Internet des Objets”, ou “IOT”.
Quelques documents sont disponibles :
Sans oublier l'excellente carte mentale de Philippe:
Un atelier a été consacré au module REYAX RYLR896.
De la doc est disponible dans cette carte mentale
Noter qu'il existe le site mySensors qui parle de capteurs et d'actionneurs sans fils, mais de bien plus courte portée, et plus orienté vers la domotique. mySensors sera plutôt abordé lors des ateliers “Les données, du capteur au web”
Il s'agit des cartes de AliExpress du nom de : “TTGO 868MHz/915MHz SX1276 ESP32 LoRa 0.96 Inch Blue OLED Display Bluetooth WIFI Lora Kit 32 Module IOT Board for Arduino” et avec l’option 868 MHz. Le fabricant est WEMOS. Selon le descriptif fourni, ce type de cartes se définit dans l'IDE par “Esp32 Dev Module”.
On se réfère à l'article «LoRa and the ESP32 SX1276.doc » publié le 22/01/18 sur le site : https://www.hackster.io/rayburne/lora-and-the-esp32-6ce9ba et spécifique de SX1276.
La version courante est ici . On a installé l'IDE Arduino version 1.8.7 de Linux. La décompression de l'Arduino s'est faite dans le répertoire créé sous la racine et que l'on a nommé “Arduino”. Par un clic droit sur le fichier install.sh, on a sélectionné l'option Run in Terminal ce qui exécute l'installation. Dans le cas où l'option n'existe pas, on ouvre un terminal. On se rend dans le répertoire “Arduino” et on tape la commande ./install.sh ce qui exécute l'installation. Dans tous les cas, on obtient une icône d'Arduino sur le Bureau. Le répertoire “Arduino” contient alors un sous-répertoire librairies avec le fichier readme.txt. Il contiendra ensuite les applications installées à l'aide du gestionnaire bibliothèque de l'IDE.
cf. le site : https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md Il suffit d’introduire, dans les préférences de l'IDE Arduino (zone URL de gestionnaire de cartes supplémentaires, copie par les touches CTRL V), l'URL suivante: https://dl.espressif.com/dl/package_esp32_index.json. Puis, le lancement du Gestionnaire de carte est effectué (Outils/Type de carte/Gestionnaire de carte), type Tout, avec sélection de la ligne “ESP32 “: et commande Installer
. Une autre solution consisterait à aller chercher les fichiers sur le GitHub d’espressif à l'adresse : https://github.com/espressif/arduino-esp32. On suit ensuite les instructions d'installation pour ajouter le noyau ESP32 à l'IDE Arduino“.
On utilise la librairie sandeep mistry que l'on télécharge à arduino-LoRa library by sandeep mistry. Puis, on ouvre l'Arduino, puis Croquis/Inclure une bibliothèque/Gestionnaire de bibliothèque, installation de la librairie “LoRa by Sandeep Mistry”. Détails : “LoRa by Sandeep Mistry An Arduino library for sending and receiving data using LoRa radios. Supports Semtech SX1276/77/78/79 based boards/shields. Version 0.5.0”.
U8g2 est une bibliothèque graphique monochrome pour les périphériques intégrés. La bibliothèque Arduino U8g2 peut être installée à partir du gestionnaire de bibliothèque de l'IDE Arduino. On applique la commande Croquis/Inclure une bibliothèque/Gérer les bibliothèques. On choisit d'installer la librairie U8g2 by oliver, compatible avec le contrôleur d'écran SSD1306. Renseignements complémentaires sur : Setup Guide and Reference Manual . On y trouve les diverses commandes du logiciel.
https://github.com/ThingPulse/esp8266-oled-ssd1306 dont le titre est “Driver for the SSD1306 and SH1106 based 128×64 pixel OLED display running on the Arduino/ESP8266 platform”. Le téléchargement fournit le fichier “esp8266-oled-ssd1306-master.zip”. On l’enregistre dans la bibliothèque d’Arduino et on l’installe. transfère dans le répertoire Arduino sous la racine.
Noter que le tableau ci-dessous est disponible mis en page au format .pdf
Sélection de “Esp32 Dev Module” dans l'IDE d'Arduino.
Un sketch “ESP32_LoRa_Initialisation” a été mis au point pour purger la carte entre deux tests différents. Il affiche : ESP32 LoRa Device//Device initialised !
^ Origine ^ Sketches ^ Corrections ^ Résultat ^
Site AliExpress (1) | 868mhzOledLoRa Utilisation de “Wire.h” | Pour les deux cartes : LoRa.begin (BAND) au lieu de LoRa.begin(868) et suppression de image.h . Pour le receveur : correction String au lieu de string. | L'émetteur affiche : Sending packet n avec n qui croît de 1 en 1. La LED bleue clignote. Le récepteur affiche : RSSI -n1//Received8bytes/hello n . Avec n1 = taille du paquet. |
Site AliExpress (2) | “OLED_LoRa_Sender” et “OLED_LoRa_Reciver” Utilisation de “Wire.h” | Pour les deux cartes, nombre de bauds de 9600 à 115200. Le sender : la ligne display.drawXbm(0,5,logo_width,logo_height,logo_bits); sort en erreur à la compilation avec Invalid conversion from char to const uint8_t … . On met la ligne en commentaire. | L'émetteur affiche : Sending packet: n avec n qui croît de 1 en 1. La LED bleue clignote. Le récepteur affiche : RSSI -n1//Received8bytes/Hello n . Avec n1 = taille du paquet. |
Article “LoRa and the ESP32 SX1276.doc” Ligne ZIP of Send and Receive Sketches for testing . On télécharge LoRa.zip | “ESP32_LoRa_Send” et “ESP32_LoRa_Rec_OLED” Utilisation de arduino.h | Pour les deux cartes : correction BAND 868E6. Le récepteur : quelques corrections, le programme n'affichant que les unités des nombres qui sont émis. Corrections faites dans le loop() : Paragraphe “try to parse packet”, supprimer la ligne “u8x8…” ; , Paragraphe “read packet”, corriger la ligne : receivedText = LoRa.readString() corriger la dernière ligne : u8x8.drawString(0, 4, currentid) ajouter u8x8.clearLine(4); en avant dernière ligne. | L'émetteur affiche : Sending packet/n avec n croissant de 1 en 1. Le récepteur affiche : LoRa Receiver//Hello n/PacketRS –n1 . Avec n1 = taille du paquet. Le récepteur affiche LoRa Receiver dès le branchement à une source d'énergie. |
Tests avec breadBoard | |||
---|---|---|---|
Sketch Blink de la bibliothèque Arduino | On le renomme : ESP32_LoRa_allume_Led Test avec Led résistance 220 ohms | Variable LED_BUILTIN renommée ledTest et branchée : a) sur port 2 (borne 4à droite). b) sur port 23 (borne 8d) (int ledTest = 23 ou #define LedTest 23 au choix). | Clignotement de la LED. clignotement de la LED bleue si port 2 branché (GPIO LED).(3) |
Sketch DS18x20_Temperature de la bibliothèque Arduino | On le renomme : ESP32_DS18x20_Temp . Montage avec capteur filaire DS18B20. Sortie jaune su GND, rouge sur 3v3 et verte sur le port 21.Résistance de 4,7 k ohms | delay(1000) au lieu de 250 et Serial.begin à 115200. OneWire ds(21) sur borne 1g. | Affichage, sur le moniteur uniquement, de la température que l'on fait varier au toucher. |
Le sketch précédent complété par ajout du sketch ESP32_LoRa_Send | On le nomme: ESP32_LoRa_TempSender . Test avec ESP32_LoRa-Rec-OLED | néant | L'émetteur affiche: Sending packet dd.cc (exemple 22.56) ESP32_LoRa-Rec-OLED affiche: LoRa Receiver//Hello nn.pp/PacketRS –n1 avec, par exemple, nn.pp = 22.56 et –n1 = -50 (4) |
(1) Ces sketches ont été fournis avec le descriptif des cartes. Le second “sender” est, en réalité, un receveur. On les nomme 868mhzOledLoRaSender et 868mhzOledLoRaReceiver.
(2) AliExpress propose, en complément de ceux du descriptif, un couple de sketches de test à l'adresse : https://github.com/LilyGO/TTGO-LORA32-V2.0/tree/LilyGO-868-V1.0 On y télécharge TTGO-LORA32-V2.0-LilyGO-868-V1.0.zip
d'où l'on extrait les deux sketches (à noter que ce couple est aussi fourni dans l'article “LoRa and the ESP32 SX1276.doc”).
(3) Avec le même montage et le sketch “ESP32_LoRa_Initialisation” la LED s'allume (feu fixe) sur les bornes 3 (port 4 OLED SDA), 5 (port 15 OLED SCL), 6 (port 5 LoLa SCK), 11 (port 9 CLK1), 12 (port RST), 13 (port TX CLK3), 14 (port RX CLK2). Allumage vérifié aux bornes 16 (port 3V3) et 17 (port 5v) de chaque face.
(4) Exemple d'affichage sur le moniteur, en défilement : >ROM = 28 D9 E5…
>Chip = DS18B20
>Data = 1 69 1 4B 46
>Temperature = 22.56 Celsius 72.61 Fahrenheit
>Sending packet : 22.56
>No more addresses
Lors des tests, nous arrivons à faire communiquer deux module Lora.
La passerelle Konk Ar Lab sur le réseau TheTingsNetwork a été mise en place.
Elle fonctionne correctement. Reste à lui trouver une place correcte, en hauteur et dégagée.
On arrive à envoyer des données vers la passerelle Konk Ar Lab.
Méthode à suivre pour mettre en place un capteur:
La première chose à faire est de se créer un compte sur le réseau TTN (The Things Network). Cette démarche est gratuite. Elle est documenté ici sur WikiFab.
Une première approche permet de récupérer des données via le site cayenne
A suivre …