[Tuto] Implémenter un protocole de communication

:grin: hi,

bon je vai essayer de regarder le code pour comprendre, mais le c++ n'est pas ma tasse de thé :fearful:
merci quand même, bonne journée
Jacques

Vive les logiciels libres aux formats normalisés ISO, qui tournent sur plusieurs systèmes d'exploitation et qui de surcroît sont gratuits comme libreoffice (traitement de texte + tableur + dessins + présentation + base de donnée[->là pas terrible] ). Merci de toujours avoir à l'esprit que Windows n'est pas une obligation et que Linux, Mac, Androïd, existent aussi. Penser aussi que si vous n'avez pas Linux, par symétrie celui qui a Linux (Mac) n'a pas Windows.

Le format pdf n'est pas une aussi bonne idée qu'il parait. Un pdf est fait pour ne pas être modifié.
Sur ce forum nous délivrons des documents "libres", AMHA il faut donc laisser à chaque utilisateur la possibilité de l'adapter et/ou de le compléter suivant ses besoins personnels.

Très bon tuto dans l'ensemble en tout cas !

Je suis entrain d'essayer de comprendre le code (le C est mon "am"i mais le C++ pas z"encore mais bon apparemment la seule chose du C++ que tu/vous utilise"s/z" sont les bool qui ne sont pas présent dans le C)

Je viens de dévorer votre code ! Bravo je le trouve super bien codé.

Ca m'inspire pas mal pour améliorer le mien, mais pour le petit système que je fais, je ne sais pas si séparer les deux "couches" de message comme vous le faites est une bonne idée.
En tout cas bravo pour le travail fourni !

Si la couche basse de transport des messages convient, autant la garder telle quelle et travailler sur la couche supérieure.
C'est le but de la séparation des couches.

Bonjour,

Je viens de parcourir le code et suis assez content, car il se rapproche de ce que j'ai fait. Félicitation pour ton travail.
Je serai assez intéressé par un article sur un protocole binaire (celui que j'utilise), notamment la façon dont on peut éviter les erreurs de détection entre les tokens de début et les données. C'est toujours dans les tuyaux ?

Merci à toi.

Pffff
Faudrait que je m'y mette mais je traine la patte
On va y réfléchir :smiley:

Merci de tes encourragements

Ce tuto est très bien rédigé et très complet. Cependant, il y a quelque chose que je ne comprend pas... Vous découpez les tâches pour la clarté, mais en réalité, est-il possible d'avoir plusieurs fichiers dans un programme Arduino ?

Merci d'avance
AntoineOnTheWeb

Oui, puisque j'y arrive....

On peut avoir un INO qui est la partie principale (setup, loop)
Et des modules CPP+H

Dans l'IDE Arduino, une fois que tu as un INO tu peux ajouter les fichier supplémentaires par l'icône sur la droite. En cliquant dessus tu auras un menu avec 'ajouter un fichier'.

Ok je ne savais pas :slight_smile:
Merci pour cette info

Bonjour, merci et félicitations pour ton tuto, j'y retrouve les élément auxquels je me suis heurté en développent un protocole de communication a base de module 433Mhz.
Et d'autres que je n'avais pas pris en compte.
Grâce a toi je vais améliorer tout ça!!

Avec des modules 433MHz, tu as intérêt à utiliser la lib VirtualWire qui va prendre en charge la couche basse :

  • structure de message (synchro de début, longueur, ...)
  • détection d'erreur
    Un peu comme le protocole UDP sur réseau IP.

Le lien vers le document ne fonctionne plus..... :grin:

Jean-François:
Le lien vers le document ne fonctionne plus..... :grin:

Apparemment il y a pas mal de problèmes avec les pièces jointes sur le forum ces temps ci. ]:slight_smile:
Peut être font-ils du nettoyage et les suppriment après un certains temps ?
Peux tu te renseigner ?

J'ai mis un 2eme lien direct qui marchera toujours (dans l'historique).

@ Barbudor:

Le code n'implémente que le coté esclave sur Arduino. En fonction de l'intérêt je pourrais proposer aussi (...) une version du maître sur Arduino pour une communication Arduino/Arduino.

Oui, moi je voudrais bien, si c'est accessible à un touriste comme moi! XD

  • Pourquoi? Arduino Forum (en français)
    et Arduino Forum (en anglais)
  • Comment? Sur le conseil de l'excellent Skywodd (je comprends pas bien tout ce qu'il m'écrit là, mais au point où j'en suis :grin: ...):

Regarde si tu peux faire du broadcast UDP avec la RedFly, ça te simplifierait grandement les choses.
L'UDP c'est pratique car ça utilise la notion de datagramme, soit le datagramme arrive soit le datagramme arrive pas, mais dans tous les cas s'il arrive c'est forcément en entier.

Donc en gros tes serveurs (note de MichelNimes: que moi j'appelle clients, et que toi, Barbudor appelle maîtres) avec les capteurs auraient juste à "balancer" un paquet suivant un format que tu définis.
Les clients (note de MichelNimes: que moi j'appelle serveurs, et que toi, Barbudor appelle esclaves) eux tendent l'oreille sur le réseau et interceptent ce qui passe.

Si tu peut utiliser le broadcast UDP il te suffira de faire un format (= protocole) pour tes datagrammes.
Tu as un trés bon tuto justement sur l'implémentation d'un protocole de communication dans la partie cours/tutoriel du forum arduino (partie francophone).

Et quid de Firmata ? Avez vous une opinion sur ce protocole ASCII ? Je cherche à l'utiliser entre Arduino et Processing mais j'en arrive à modifier les sources de base !

Super tuto :slight_smile: Et merci à Zoroastre pour la version tar lisibles par les autres debianistes faciles :wink:

Bonjour,

Je suis en pleine recherche pour faire communiquer deux arduinos DUE pour monter un petit système multiplexé en full duplex si possible.
Le tuto m'a permis de comprendre et progresser dans mes apprentissages mais je me pose plusieurs questions pour l'autodidacte que je suis sur arduino et en programmation:

Je me trouve très loin des fonctions prévues par la bibliothèque serial et qui devraient nous permettre d'arriver au même résultat ?
Là on se retrouve avec une programmation complète pour quelqu'un d'averti que je ne peux pas transposer avec quelques modifications?
Si je dois faire aboutir un projet de multiplexage peut-on le faire avec la librairie serial de base? ou faut-il abandonner le projet car irréaliste pour un autodidacte?

J'aurai bien besoin de vos avis, conseils et aide car là je n'arrive pas à voir si on peut bâtir un tel projet avec les fonctions arduino qui permettent à des autodidactes de faire des choses complexes avec des librairies qui cachent un peu la difficulté ou alors il faut se résoudre à toujours laisser cela à des informaticiens bien formés (je ne peux malheureusement pas envisager d'étudier les fondements de l'informatique pendant des années pour effectuer un tel petit projet, je serai obligé de revenir à des fonctions câblées point à point).

Merci de vos réponses

Cordialement

Jean-Claude

Bonjour,

Mon problème est résolu grâce à la bibliothèque easy-transfert :EasyTransfer Arduino Library « The Mind of Bill Porter que je recommande .
Elle est assez difficile à faire reconnaître par l'IDE mais ensuite elle est très efficace et me parait assez robuste après quelques tests réalisé