ESPHOME et UART

Bonjour à tous et :+1: d’avance à ceux qui apporteront de l’eau à mon moulin.

Je bricole actuellement sur un Hoverboard et après avoir modifié le firmware selon les excellents travaux d’Emmanuel FERU, je souhaite piloter la carte mère hackée via une liaison série.

L’objectif est de réaliser un petit robot connecté à EspHome et piloté par Home Assistant.
Un petit délire qui se promènerait dans la maison ou le jardin mais je ne sais pas encore quelles seraient ses taches… :rofl:
Une tondeuse pilotée peut-être…
Bref, pour se faire, il est nécessaire d’envoyer la commande ci-dessous depuis EspHome (ESP32) via UART :

• Début de commande : 0xABCD (unsigned int16)
• Donnée 1 : Plage de -1000 à 1000 (signed int16)
• Donnée 2 : Plage de -1000 à 1000 (signed int16)
• Contrôle de la commande : XOR checksum (unsigned int16)
• Taille de la commande : sizeof

en C++ Arduino, Emmanuel FERU à écrit ça :

#define START_FRAME         0xABCD

typedef struct{
     uint16_t start;
     int16_t  steer;
     int16_t  speed;
     uint16_t checksum;
} SerialCommand;
SerialCommand Command;

// Creation de la commande
Command.start    = (uint16_t)START_FRAME;
Command.steer    = (int16_t)uSteer;
Command.speed    = (int16_t)uSpeed;
Command.checksum = (uint16_t)(Command.start ^ Command.steer ^ 
Command.speed);

 // Ecrit la commande sur le port série
Serial.write((uint8_t *) &Command, sizeof(Command)); 

Code complet ici :

Voici donc mes questions :
Comment transposer ce code Arduino vers EspHome ?
Via un Custum_Component ou peut-on le faire directement en Lambda depuis le YAML ?

Ce projet me semble sympa et on peut s’y mettre à plusieurs.
Toutes les idées sont bonnes à prendre.
A très vite de vous lire…
Bruno

1 « J'aime »