Communication PC Arduino

Bonjour à tous !

Je débute dans la programmation Arduino et j'ai une question concernant la communication série entre un PC et une carte Arduino UNO.

Le projet est relativement simple : connecter divers capteurs, faire des relevés et les enregistrer dans une base de données.

Pour l'instant, j'ai fait un programme Java qui récupère les valeurs envoyées sur le port série pour les enregistrer dans une base de données locale.

Tout fonctionne, cependant je me pose une question sur la méthode de communication. Actuellement, l'Arduino envoie ses valeurs à intervalle fixe en 'autonome'.

J'en ai parlé avec un professeur qui m'a conseillé plutôt une communication maître-esclave suggérant que le PC doit être à l'origine de l'envoi d'information depuis l'Arduino.

Que pensez-vous de ces deux méthodes ? Laquelle privilégier ?

Merci d'avance !

Bonjour,

Comme dans beaucoup de cas, il n’y a pas de meilleure solution absolue, tout dépend ce que tu veux faire.
La première chose que je ferais à ta place, c’est demander à ton professeur pourquoi ? Pourquoi une communication maître-esclave plutôt que la méthode que tu utilises.

Merci pour ta réponse.

Quand je lui ai demandé, il m'a dit que c'était le schéma qu'il avait le plus souvent rencontré et que celui-ci permettrait une meilleure mesure du delta temps entre deux relevés pour une fréquence plus fiable. J'ai un peu du mal a y croire surtout que j'ai implémenté avec une librairie l'heure sur l'Arduino et donc je peux avoir la date exacte du relevé des mesures.

Il m'a aussi indiqué qu'on pourrait éviter d'avoir des 'loupés' de lecture sur le port série et ainsi éviter la perte de données.

Au vu de mon besoin, quelle serait la méthode la plus fiable ?

Merci !

chateaur:
Quand je lui ai demandé, il m'a dit que c'était le schéma qu'il avait le plus souvent rencontré et que celui-ci permettrait une meilleure mesure du delta temps entre deux relevés pour une fréquence plus fiable. J'ai un peu du mal a y croire surtout que j'ai implémenté avec une librairie l'heure sur l'Arduino et donc je peux avoir la date exacte du relevé des mesures.

Je suis d'accord avec toi. Il me semble que c'est l'Arduino qui doit fournir la base de temps.

chateaur:
Il m'a aussi indiqué qu'on pourrait éviter d'avoir des 'loupés' de lecture sur le port série et ainsi éviter la perte de données.

C'est vrai dans un cas comme dans l'autre. Personnellement, j'envoie toujours un CRC en plus de mes données:

  • J'envoie toujours des données en entier, pas des flottants
  • Je rajoute à la liste de mes envois la somme de toutes les données
  • Côté réception, je regarde si la dernière valeur (la somme envoyée) correspond à la somme des données reçues

Bref, je ne vois pas l'intérêt d'un envoi déclenché côté PC.

3Sigma,

Ok je vais essayer de voir ça plus en détails avec lui mais bon tu m'as déjà bien éclairé sur le sujet :slight_smile:

L'idée du CRC me séduit bien, je vais l'implémenter je pense !

Merci pour les infos