Skip to content

Interface I2C capteurs ultrasons #5

Description

@azerupi

Il faut définir une interface (protocole / API) pour que la Raspberry Pi et l'Arduino, qui communiquent en I2C, puisse se comprendre.

Cahier des charges

  • Demander la mesure de tout les capteurs en une fois
  • Demander la mesure d'un capteur spécifique
  • Si le capteur demandé n'existe pas, renvoyer une séquence d'erreur que la Raspberry peut comprendre
  • Demander d'énumérer les capteurs qui existent
  • Autres?

Proposition

La Raspberry Pi envoie une instruction sur un byte contentant 2 parties codées sur 4 bits:

  • La commande
  • L'index du capteur (si applicable)

commandes

0001 xxxx        demander la mesure du capteur `xxxx`
0010 0000        demander la mesure de tous les capteurs
0011 0000        demander d'énumérer tous les capteurs
0100 0000        demander le nombre de capteurs présents

L'Arduino renvoie:

  1. Une distance en cm (int 16 bits). On sépare le int en 2 bytes pour l'envoyer par I2C et puis on le reassemble sur la Pi. Si une erreur survient (e.g. le capteur n’existe pas) on renvoie 0.
  2. n-fois 2 bytes (une fois par capteur)
  3. n-fois 1 byte avec l'indice du capteur. On pourrait coder 2 capteurs par byte, mais alors il faut gérer le cas d'un nombre impaire de capteurs.
  4. un byte contenant le nombre n de capteurs présent sur l'Arduino, ceci permet de savoir combien de bytes seront envoyés quand on demande les mesures de tous les capteurs

Ceci n'est qu'une proposition, la discussion est ouverte pour d'autres alternatives.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions