Erreur de compilation ESP8266 et Armapi

Bonjour à tous,

Je suis actuellement entrain d'effectuer un projet sur lequel je dois mettre en communication un bouclier LoraWan avec une Wemos ESP8266.

Le seul soucis c'est qu'avec la documentation fournit par LoraWan je dois utiliser la bibliothèque armapi. Ce qui pose problème puisque à peine la bibliothèque armapi choisi et la carte ESP8266 un bon nombre d'erreurs s'affichent dont : Erreur de compilation pour la carte Generic ESP8266 Module. Les erreurs me renvoient dans la bibliothèque armapi...

Merci de votre aide et bonne journée.

Bonjour

tout ceci est plus que vague et ne permet aucune réponse sur le fond

-Quel 'bouclier' ? -Quelle "documentation fournie par LoRaWAN" ? -Quel LoRaWAN ? (celui de Bougues, d'Orange ou de TTN) ? -Quelle bibliothèque 'armapi' ? -Quelles erreurs de compilation ?

dans 'armapi' il ya a arm et api... or l'ESP8266 n'est pas un ARM, il est basé sur une autre architecture.

Il y a eu dernièrement içi un échange autour d'une tentative d'utilisation d'un bouclier de la société ATIM....il me semble qu'il y était question d'une librairie armapi et qu'il ya avait un manque sérieux d'infos pour utilsier cette librairie en LoRaWAN

Désolé je ne savais pas trop quelle précision apportée.

  • Pour ce qui est du bouclier c’est un ATIM acw_duino V0.2 je peux pas vous en dire beaucoup plus mais il est compatible en terme de broches avec la Wemos D1.

-C’est mon projet de fin d’année de BTS et on a reçu des documentations sous forme de pdf pour l’utilisation des boucliers sur les cartes en général et sur le RaspBerry.

-Le LoraWAN c’est la passerelle LoRaWAN server compact edition.

  • dans le code j’ai simplement include <arm.h>

  • Les erreurs de compilation :

C:\Users\Utilisateurs\Documents\Arduino\libraries\armapi\src\armport_arduino.cpp: In member function ‘int ArmPort::Config(armPortBaudrate_t, armPortDatabits_t, armPortParity_t, armPortStopbit_t)’:

C:\Users\Utilisateurs\Documents\Arduino\libraries\armapi\src\armport_arduino.cpp:133:65: error: invalid conversion from ‘uint8_t {aka unsigned char}’ to ‘SerialConfig’ [-fpermissive]

((HardwareSerial*)_port)->begin((unsigned long)baudrate, config);

^

In file included from C:\Users\Utilisateurs\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/Arduino.h:244:0,

from C:\Users\Utilisateurs\Documents\Arduino\libraries\armapi\src\armport_arduino.cpp:36:

C:\Users\Utilisateurs\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/HardwareSerial.h:78:10: error: initializing argument 2 of ‘void HardwareSerial::begin(long unsigned int, SerialConfig)’ [-fpermissive]

void begin(unsigned long baud, SerialConfig config)

^

exit status 1
Erreur de compilation pour la carte Generic ESP8266 Module

C’est peut-être le problème de l’ARM mais dans ce cas je ne sais pas trop quoi mettre à la place.
Merci de votre aide

quelels informations fournir ?

Tout est dit dans la Règle du Forum (a consulter bien évidemment en arrivant ici)

un lien actif vers la librairie problématique utilisée permetterait de gagner du temps. (une part croissante des aidants de ce forum s'y connecte avec une tablette ou un smarphone, les liens actifs sont nettement plus suivis)

Pour ce qui est de Serial() sur ESP8266 la doc de référence est içi avec toutes les autres fonctions https://arduino-esp8266.readthedocs.io/en/2.6.3/reference.html#serial (chez moi deux devices et la mini passerelle tournent sans pb depuis un an)

Si vous n'êtes pas 'condamné' à utiliser ce shield ATIM et que l'objectif est LoRaWAN , il y a plus simple ,moins coûteux et fonctionnel (y compris avec des ESP8266 ou 32) : petits modules 898MHz autour d'une puce SX1276 ou son clone RFM95W, reliés en SPI... avec des librairies compatibles qui vont bien.

un tutoriel de présentation ici pour l'accès au réseau LoRaWAN collaboratif The Thing Networks https://forum.arduino.cc/index.php?topic=612818.0

Voilà l'échange récent où il a été question du shield ATIM en question içi il me semble : https://forum.arduino.cc/index.php?topic=669112.0

Bonjour,

Je ne comprends pas ce que vous entendez par "lien actif vers la bibliothèque utilisée".

Je pense être condamné à devoir utiliser le matériel fourni et uniquement celui fourni.

The Thing Networks est une sorte de collaboration pour les utilisateurs de réseaux LoraWAN ? Je ne vois pas quelle est la réelle utilité de passer par cela. Après j'ai encore des zones de floues devant LoraWAN. Il n'est pas possible d'identifier les appareils connectés sur le LoraWAN à partir de son ip de passerelle en passant par un navigateur web ?

Merci et bonne journée.

"lien actif vers la bibliothèque utilisée".

comme ci dessous : un lien sur lequel il suffit de cliquer (une icône Insert a Link) est disponible dans l'éditeur de messages. Pour un visiteur sur smarphone ou tablette ça aide ....

exemple : http://atim-radiocommunications.github.io/armapi/doc/html/a00029.html

Intérêt de TTN : étant un particulier je ne suis pas bénéficiaire direct des réseaux publics LoRaWAN d'Orange ou Bouygues couvrant l'essentiel du territoire, par contre mes 'devices' rejoignent le réseau LPWAN public offert par TTN Je peux donc utiliser le LoRaWAN de TTN comme je le fais avec Sigfox pour envoyer mes données 'dans le nuage' et ensuite les récupérer, traitret, visualiser..... Ma problématique est celle d'un 'maker' cherchant l'accès à un LPWAN public , pas le montage d'un LPWAN privé. je ne connais que 2 solutions : Sigfox et TTN

n'est pas possible d'identifier les appareils connectés sur le LoraWAN à partir de son ip de passerelle en passant par un navigateur web ?

Un "device" à un identifiant mais pas d'ip. La passerelle, elle, à une adresse ip, elle relaie des trames cryptées contenant l'identifiant de l'émetteur. (le device est essentiellement émetteur d'informations, très peu de possibilité de réception)) LoRAWAN est un protocole réseau à part (couche physique = LoRa) ... d'où la présence de passerelles spécifiques pour le 'raccord' à Internet .

J'ai réussi à faire fonctionner le code, il fallait que je modifie une ligne dans la bibliothèque armport_arduino.cpp.

passer de :

((HardwareSerial*)_port)->begin((unsigned long)baudrate, config);

par

((HardwareSerial*)_port)->begin((unsigned long)baudrate, (SerialConfig) config);

J'ai suivi un peu votre tuto pour mettre des appareils sur TTN. J'ai vu que vous mentionnes qu'il est possible de faire une passerelle à l'aide de l'ESP8266 ? Vraiment ? Par passerelle entendez-vous que vous pouvez remplacer cela : ( Le matériel avec lequel je travaille) https://vipress.net/passerelles-lorawan-atim-acquiert-la-start-up-grenobloise-1gate/ par simplement une petite carte ESP8266 ?

Enfin, est-il nécessaire de placer le bouclier ATIM sur la Wemos D1 pour que TTN puisse recevoir les données ?

J'avoue ne pas avoir tout compris sur le fonctionnement de TTN voilà pourquoi je vous pose ces questions, merci de votre aide.

Bonjour

Par passerelle entendez-vous que vous pouvez remplacer cela : ( Le matériel avec lequel je travaille) https://vipress.net/passerelles-lorawan-atim-acquiert-la-start-up-grenobloise-1gate/ par simplement une petite carte ESP8266 ?

NON ou 'OUI partiellement'.... Tout dépend des fonctionalités attendues de la passerelle !!

Une véritable passerelle LoRaWAN (TTN ou pas) écoute simultanément 8 canaux dans la bande des 868 MHz, accepte plusieurs facteurs d'étalement et relaie vers le réseau tous les paquets LoRaWAN conformes. Elle est également capable de retourner les infos éventuelles vers les devices en utilsant les caanux appropriés.

Ceci est possible à l'aide de plusieurs circuits intégrés spécialisés de marque Semtech, circuits relativement coûteux qui expliquent en poartie le prix des 'vraies' passerelles complètes.

Une librairie d'origime IBM, la librairie LMIC, permet de réaliser une MINI passerelle, qui n'écoute que l'un des canaux et non l'ensemble des attribués et n'accepte qu'une seule valeur pour le facteur d'étalement. Cette mini passerelle d'autre part fait l'impasse sur le retour d'info du réseau vers les 'devices'.

Elle est donc monocanal et unidirectionnelle. Cette [u]réduction des fonctionalités[/u] permet d'éviter les circuits intégrés spécialisés coûteux et permet de se contenter pour la modulation LoRa d'un petit transceiver LoRa 868 a qq euros.

LMIC a été portée pour être compilée avec l'IDE Arduino est réputée tourner avec ESP8266 et ESP32 Je ne l'utilise qu'avec ESP32 avec une carte comportant la puce radio Semtech Sx1276 (cf message #7)

Reliée en WiFi à ma box , elle écoute l[u]a seule fréquence 868,1 MHz[/u] et relaie , par Internet, vers le serveur TTN tous les paquets LoRaWAN conformes émis par mes devices (réglés pour émettre sur 868,1 MHz) ou d'autres 'devices' voisinage. Les paquets LoRaWAN émis sur d'autres canaux, par contre, ne sont pas relayés. D'autre part mes 'devices' ne peuvent recevoir des paquets du réseau, ils ne sont que sources d'informations. Disons que la 'mini passerelel' est sélective, tout ne 'passe' pas.

Malgré ces contraintes mes 'capteurs LoRaWAN', envoient leurs données 'dans le nuage' où ils peuvent votager vers 'ThingSpeak dans mon cas. C'est une 'passerelle de test'

Si mes capteurs sont positionnés dans une grande ville (couverture TTN) ils voient leurs paquets relayés par les passerelles TTN mises en service par des particuliers.

Il est probable que j'investisse un jour dans une vraie passerelle (multifréquence et bidirectionnelle) pour apporter ma pierre au réseau collaboratif TTN

Bonjour,

Je vous remercie pour ces précisions j’y vois déjà un peu plus clair.
Une petite question j’ai tiré un code de leur librairie de TTN sur Arduino

#include <TheThingsNetwork.h>

// ABP keys
const char *devAddr = "********";
const char *nwkSKey = "********************************";
const char *appSKey = "********************************";


#define loraSerial Serial1
#define debugSerial Serial

// Replace REPLACE_ME with TTN_FP_EU868 or TTN_FP_US915
#define freqPlan TTN_FP_EU868

TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan);

void setup() {
  loraSerial.begin(57600);
  debugSerial.begin(9600);


  // OTAA or ABP activation
ttn.personalize(devAddr, nwkSKey, appSKey);
}

void loop() {

 byte data[1];
  data[0] = (digitalRead(LED_BUILTIN) == HIGH) ? 1 : 0;
    
  ttn.sendBytes(data, sizeof(data));
  
  delay(10000);
}

Seulement je ne parviens pas à récupéré de données que ce soit à l’aide de TTN ou de ma passerelle avec le bouclier. Je dois adapter le code pour que mon bouclier atim puisse envoyer des données sur ma passerelle mais qu’en est-il du site TTN ? Le bouclier est-il obligatoire pour quoi je puisse récupéré les données envoyé sur mon ESP8266 ? ( sur ma passerelle et sur TTN)

Je vous remercie de votre temps.

Seulement je ne parviens pas à récupéré de données que ce soit à l'aide de TTN ou de ma passerelle avec le bouclier. Je dois adapter le code pour que mon bouclier atim puisse envoyer des données sur ma passerelle mais qu'en est-il du site TTN

L'utilsation de TTN nécessite à la fois -une configuration de la passerelle et sa déclaration sur le site TTN; (zone 'gateways' -une configuration des 'devices' (carte ° bouclier) et leur déclaration dans la zone "Application" de TTN

Ceci fait les paquets (conformes TTN) envoyés par le 'device' sera capté par la passerelle et relayée par elle, par Internet, vers le serveur TTN. Ils seront la bs visibles et disponibles pour leur traitement.

Le bouclier est-il obligatoire pour quoi je puisse récupéré les données envoyé sur mon ESP8266 ? ( sur ma passerelle et sur TTN)

Quel est le rôle exact de l'ESP8266 dans ceci ? Si l'ESP8266 est au coeur d'une passerelle les données n'y sont normalement pas accessibles (le facteur n'ouvre pas le courrier, s'il l'ouvre il ne saura pas décrypter !!)