Skip to content
Snippets Groups Projects
Commit 87628220 authored by abivarma.kandiah's avatar abivarma.kandiah
Browse files

Finished ESP32 Docs

parent d5a69c6f
No related branches found
No related tags found
No related merge requests found
...@@ -50,3 +50,76 @@ Problèmes possibles : ...@@ -50,3 +50,76 @@ Problèmes possibles :
- Interface USB-UART qui fonctionne mal. - Interface USB-UART qui fonctionne mal.
## Pinout important de l'ESP32 ## Pinout important de l'ESP32
- IO16 : UART2 Rx
- IO17 : UART2 Tx
## Communication MQTT
Une des principale tâche de l'ESP32 est la communication MQTT avec le broker.
### Connexion WIFI
L'ESP32 va tout d'abord se connecter à un routeur WIFI spécifié dans le code :
```c
const char *ssid = "uni-ete2"; // WiFi name
const char *password = "uni-ete2-esp32"; // WiFi password
```
Le programme n'avancera pas si la connexion WIFI ne se fait pas.
### Connexion MQTT
Une connexion MQTT va ensuite être établi entre le serveur et l'ESP32.
Après que une connexion entre l'ESP32 et le broker MQTT est établi, L'ESP32 va pouvoir se subscribe au topics souhaités.
### Echanges MQTT
L'ESP32 lors de son execution, va communiquer sur un topic et 3 de ses sub-topics.
Il y a le topic **Cluster(0-n)**, qui est un topic unique dédié pour chaque ESP32.
Ensuite il y a ses différents sub-topics :
- **Cluster(0-n)/size** qui va permettre à l'ESP de publish la taille du cluster de matrices pour le broker MQTT.
- **Cluster(0-n)/text** qui va permettre au serveur de publish un texte souhaité pour que l'ESP puisse mettre en place l'affichage du texte.
- **Cluster(0-n)/image** qui va permettre au serveur de publish une image de la taille du cluster pour que l'ESP puisse mettre en place l'affichage de l'image.
Au début l'ESP32 va tout d'abord envoyer un petit message de salut au serveur, puis il va se subscribe au sub-topics **/text** et **/image**.
```C
// Publish and subscribe
client.publish(topic_send, "Hi, I'm ESP32 ^^");
client.subscribe(topic_img);
client.subscribe(topic_txt);
```
Pendant l'execution du programme, lorsque le serveur va faire des publish d'image ou de texte, l'ESP32 va récéptionner ses requêtes et pouvoir gérer l'affichage. Il va aussi pouvoir communiquer la taille du cluster de matrix au serveur.
## Communication UART
L'autre tâche de l'ESP32 est de communiquer en UART avec le cluster de matrices.
### Format message
Afin de permettre à l'ESP32 de communiquer avec l'HEPIALIGHT en UART, les messages doivent être formaté d'une certaine manière sinon l'HEPIALIGHT va ignorer le message.
Format du message :
```
Header : [0x77]
Len : [0x01-0xFF]
Data[0] : [0x00-0xFF]
Data[n] : [0x00-0xFF]
Crc : [0x00-0xFF] = Data[0] ^ Data[1] ^ Data[n] ^ Len
Footer : [0xAA]
```
### Commandes UART
L'ESP32 va pouvoir répondre à deux commandes UART en provenance de l'Hepialight:
- La commande "ESP" qui va permettre à l'Hepialight de vérifier la présence de l'ESP, il retournera une réponse "OK".
- La commande "MATSIZE" qui va permettre à l'Hepialight d'informer l'ESP32 de sa taille de cluster.
### Affichage Image
Lorsque l'ESP32 va devoir faire l'affichage d'une image, l'image va être séparé, afin d'envoyer chaque partie de l'image au différents matrices du cluster.
### Affichage Texte
Pour l'affichage du texte, l'ESP32 va envoyer le message à la matrice la plus en bas à droite afin de faire le défilement sur toute la longueur.
\ No newline at end of file
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
#define MATRIX_SIZE 10 // 10x10 #define MATRIX_SIZE 10 // 10x10
#define IMG_DATA_SIZE MATRIX_SIZE * MATRIX_SIZE * 3 //DATA SIZE FOR ONE MATRIX = RGB * MATRIX_SIZE #define IMG_DATA_SIZE MATRIX_SIZE * MATRIX_SIZE * 3 //DATA SIZE FOR ONE MATRIX = RGB * MATRIX_SIZE
#define BUFFER_SIZE 128 #define BUFFER_SIZE 128
#define CLUSTER "cluster1" #define CLUSTER "cluster2"
// WiFi // WiFi
const char *ssid = "uni-ete2"; // Enter your WiFi name const char *ssid = "uni-ete2"; // WiFi name
const char *password = "uni-ete2-esp32"; // Enter WiFi password const char *password = "uni-ete2-esp32"; // WiFi password
// MQTT Broker // MQTT Broker
const char *mqtt_broker = "192.168.1.102"; const char *mqtt_broker = "192.168.1.102";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment