Bonjour, ceci est mon premier post sur ce forum, bien que j'ai beaucoup appris sans m'inscrire, après 3ans d'auto-formation je me lance dans un projet LoRa avec la carte RN2483 sur la plateforme LiveObject.
Il me semble avoir compris que c'est le type de carte et d'abonnement qui est plus tourné vers les sociétés plutôt que vers les particuliers, mais en insistant un peu et en inventant un projet grandiose, on peu quand même obtenir l'abonnement et la carte.
(Il suffit de leurs faire croire qu'on sera un client fidèle qui souhaite acheter des tonnes de capteurs connectés qu'ils vendent 3 fois plus chère que la normal).
Bref, je m'écarte du sujet, j'ai en ma possession cette carte RN2483 ainsi qu'un accès à LiveObject.
Documentation de la carte et libraire :
https://github.com/Orange-OpenSource/Orange-Eplorer-Kit-for-LoRa
(si ce lien ne marche pas, il suffit d'aller sur github et de taper explorer kit for LoRa mais normalement ca marche).
Mon projet :
Apprendre à envoyer les données de plusieurs capteurs, en un seul message, et de décoder ce message pour en faire des stats sur LiveObject.
Actuellement :
J'ai tester les différents exemples de codes, ils m'ont permis d'apprendre à envoyer :
chaîne hexadécimal style "uint8_t message = (0x3d, 0x65, 0xa5)"
Le problème de ce format est que je ne sais pas comment remplacer ces nombres par des noms de variables, exemple : "uint8_t message = (0x val_temperature_entier, 0x val_temperature_decimal, 0x val_humidite_entier, 0x val_humidite_decimal)"
Ca serai parfait pour moi, mais malheureusement je ne connais pas la syntaxe qui me permet de faire ça, je pense que c'est plus un problème de programmation global de ma part plutot que qlq chose relié à la librairie. en claire, mon but est de pouvoir integrer des Variables, alors que dans les exemples et tutoriels, à aucun moments ils n'indiquent comment le faire, ils ne parlent que d'envoyer soit des valeurs prédéfinis (style, ecrire Hello world en toute lettre, et envoyer le truc, ce qui ne sert vraiment à rien, vue qu'on veut faire de la com "objet à objet" et non pas "humain à objet à objet" donc j'ai vraiment besoin d'envoyer des variables et non pas des valeurs prédéfinis).
La deuxième chose que j'ai expérimenté est d'envoyer un buffer.
J'arrive à envoyer quelque chose du style :
bool SendLoRaMessage()
{
uint8_t port = 5;
uint8_t buf[] = { 't', 'e', 's', 't' };
return OrangeForRN2483.sendMessage(buf, sizeof(buf), port); // send unconfirmed message
}
Ici on retrouve le port 5 de la carte RN2483, la taille du buffer, la commande sendMessage, tout marche bien, j'envoie "test" et sur LiveObject je reçoit "74657374" qui correspond à la valeur en hexadécimal. Donc, génial, mais en fait non, toujours pas, ici j'ai bien des charactères prédéfinit et non pas des Variables.
En plus de ça je ne maîtrise toujours pas les décodeurs de la plateforme LiveObject, donc impossible pour moi de transformer ce 74657374 en "test". (Mais c'est un autre problème).
Je ne suis pas très bon en programmation (je suis autodidacte et je n'ai pas suivis de formation en programmation). Donc je ne connais pas encore très bien les buffers, je ne connais pas la syntaxe pour transformer " 't' 'e' 's' 't'" en " 'val_temperature' 'val_humidite' " ?
Mon idéale serai d'avoir un type char, dans lequel je stock directement les caractères des valeurs.
Pour ce qui se rapporche le plus de la réalité pour l'instant c'est la méthode hexadécimal avec :
bool SendLoRaMessage()
{
const uint8_t size = 5;
uint8_t port = 5;
uint8_t data[size] = { 0x48, 0x5, 0x6C, 0x6C, 0x6F }; // Hello
return OrangeForRN2483.sendMessage(data, size, port); // send unconfirmed message
}
mais je ne comprend pas comment remplacer ces valeurs avec des Variables, j'ai toujours des messages d'erreurs car je ne connais pas les bonnes syntaxes.
Le gros du problème est qu'il faut envoyer des chaînes de 8 caractères (même si ma valeur est 30°C, ce qui donne en gros 1E en héxa, et donc pas besoin de 8 caractères, mais il faut quand même les mettre, enfin je suppose, je n'en suis pas certain, mais il me semble que le décodeur n'accepte que les chaînes de 8 caractères).
J'en profite pour switcher sur le second problème, je n'ai pas encore réussis à utiliser les décodeurs (mais je n'ai fais qu'une journée de recherche donc c'est bien normal).
En gros pour résumer le problème,
je cherche un moyen de stocker dans un buffer uint8_t, les valeurs de mes capteurs, (Variables donc, j'arrive actuellement à convertir mes données en héxadécimal, et à couper en deux parties réel/décimal, donc je peux faire des pairs de 2 par 2 (pour 0x12, 0x34, 0xetc) toujours par 2. Mais je n'arrive pas à faire entrer de variables dans les buffers).
Il me semble que ce genre de projet n'est pas beaucoup présent sur cette plateforme (surtout en utilisant LiveObject). Donc je m'engage à partager mon avancement, je ne m'attend pas à beaucoup de réponses non plus, mais voila, je pose ça ici, si quelqu'un m'aime, qu'il me suive, si vous avez des questions pour répondre à mes questions, je serai heureux de répondre aux questions qui répondront à mes questions.
Je peux partager les petits bouts de programmes, même si ces exemples sont disponibles sur le lien que j'ai mis en haut.
Merci pour votre temps et votre intérêt.
0VI.
