Cette réalisation est le portage sur ESP32 T-Display de la visualisation des paramètres du FT-857D développée sur Arduino Nano (voir article). Le but est de disposer d’une plate-forme de la même taille que l’Arduino Nano mais disposant en plus de la liaison série d’un WiFi et d’un Bluetooth intégrés.
Les modifications du logiciel ont porté sur :
– la prise en compte d’un compilateur C++ pour l’ESP32 plus rigoureux,
– le remplacement de l’écran LCD 4×20 par un écran tft 135 x 240 pixels,
– la gestion de la liaison série avec le FT-857D,
– la correction d’un bug dans la déclaration chaine de caractères qui stocke la fréquence (oubli du caractère de fin de chaine 😉 ).
La connexion physique avec le FT-857D a aussi été modifiée pour tenir compte de la tension admissible de 3,3V par l’ESP32.
1 – Langage C++ :
Le compilateur pour ESP32 vérifie les différences constantes / variables lors des déclarations et ne fait pas de conversion implicite. La fonction sprintf « plantait » sur une conversion char* byte. Le type de la fonction getSMeter a donc été changé de char* à String; le code pour Arduino a été rétrofité pour avoir un maximum de compatibilité.
2 – Remplacement de l’écran :
Avec l’écran tft il faut réécrire toute une zone avec la couleur de fond d’écran pour « effacer » complètement l’affichage précédent. Cela été fait par l’emploi de la fonction tft.fillRect(x, y, largeur, hauteur, couleur) de la bibliothèque tft_eSPI. Pour éviter des effacements à chaque mise à jour (environ toutes les 300 / 500ms) qui donnent un effet de clignotement, les valeurs des données précédentes sont stockées et l’écriture des données n’a lieu que si leur valeur a changé.
Le code des fonctions d’affichage contenu dans le programme .ino a donc été fortement modifié et le code pour Arduino n’a pas été rétrofité.
3 – Liaison série :
L’ESP32 a trois UART (0 à 2). L’UART 0 est utilisé pour le système et l’UART 1 est utilisé pour le flashage sur certaines cartes. Seule l’UART 2 est à disposition pour l’application.
Les broches de sortie de l’UART 2 sont par défaut 16 (Rx) et 17 (Tx) mais sur la carte TTGO T-Display la 16 est prise pour le bus SPI. Comme il est possible de réaffecter les broches de sortie sur les 25 à 27 , les broches 26 (Rx) et 27 (Tx) ont été prises.
La bibliothèque SoftwareSerial n’existant pas sur ESP32, la bibliothèque HardwareSerial a été utilisée.
Les modifications suivantes ont été apportées aux fichiers :
– CAT-FT857-ESP32.ino : remplacement de SoftwareSerial par la bibliothèque HardwareSerial (include),
– FT857D-ESP32.h : remplacement de SoftwareSerial par la bibliothèque HardwareSerial (include),
– FT857D-ESP32.cpp :
– remplacement de SoftwareSerial par la bibliothèque HardwareSerial (include),
– définition de l’UART 2 comme port série :
extern HardwareSerial rigCat(2); // UART 3 of ESP32,
– changement de l’initialisation du port série :
// similar to Serial.begin(baud) void FT857D::begin(int baud) { rigCat.begin(baud, SERIAL_8N2, 26, 27); // vitesse - 8 bits - No parity - 2 stop bits - pin Rx pin Tx }
4 – Connexion physique au FT-857D :
La liaison série du FT-857D est à un niveau de TTL de 5V. La tension admissible par l’ESP32 étant de 3,3V max une adaptation par un diviseur de tension à résistance est nécessaire sur l’entrée Rx de l’ESP32.
5 – Code source :
Les différents code source fournis ci-après sont donnés « tel quels »; ils peuvent contenir des défauts. Leur réutilisation éventuelle se fait sous la responsabilité du développeur; tout dommage résultant d’une utilisation est hors de ma responsabilité.
Le zip comprend les fichiers :
– FT-857D-ESP2.h,
– FT-857D-ESP2.cpp,
– CAT-FT857-ESP2.ino.
73 de Philippe F6CZV – https://f6czv.fr