Bonsoir,
ESP32 bonne affaire ? Oui finalement car pour un prix incroyablement ridicule on a une puissance de feu et des possibilités étonnantes ! Je pense en faire des cartes "satellites type V2" et elles y seront infiniment sous-employées.
Mais mais mais... j'ai bien failli jeter l'éponge car ces petites bêtes sont capricieuses et je n'ai pas encore compris ce qu'on doit leur dire pour, par exemple, qu'elles acceptent un download plus de 5 fois sur 100 sans avoir besoin de forcer le boot via le minuscule bouton.
Ça et la note en début du code que je joins...
Peut-être le souci n'est-il pas l'ESP32 mais que le couple avec l'IDE Arduino est mal assorti ? Trimarco parle quelque part de PlatformeIO... à voir.
Le pire a été le bus CAN et quand rien ne marche et que les causes sont multiples... mais enfin ça fonctionne.
Les cartes de la photo postés par Boby&Co vont donc beaucoup m'intéresser... sauf que j'ai maintenant des ESP 38pins, faut d'avoir détecté que les 6pins "flash" ne serviraient à rien !
Alors question à Boby&Co : n'ayant encore jamais édité de fichier Gerber, pour ne pas essuyer de plâtres je serais bien content de profiter du vôtre que je pourrais assez facilement transformer il me semble... mais il n'est pas en PJ comme annoncé ?
Ou, si vous en avez un gros stock, vous demander de me fournir mais dans ce cas je devrais "jeter" mes 38 pins et en commander des 30pins... je n'ai aucune idée de la meilleure solution d'un point de vue économique (à terme je pense que j'en consommerai une dizaine).
En tous cas, cette carte avec le transceiver intégré est parfaite ! (et plus de problème avec l'empattement !)
(Mais pourquoi un convertisseur 5V ? la carte est prévue pour alimenter autre chose ? Et, si je dois approvisionner, quel est ce composant vertical entre le transceiver et le convertisseur ??)
Et à propos encore de cette photo : merci car c'est elle je crois qui m'a donné la solution au problème du bus CAN avec ses deux pins sorties sur RX2 et TX2. Car en brochant sur RX0 et TX0 (deux jours d'obstination !) RIEN ne fonctionne et, même, plus aucun download possible !! (?) (à remarquer que la datasheet espressif est fort sommaire... peut-être pas assez bien cherché ?)
Mais ça marche. Faire obéir la librairie ACAN_ESP32 n'a cependant pas été facile ; on reconnaît en effet le "moule" mais les syntaxes sont sensiblement différentes or tous les exemples fournis sont en loopbak...
Pour éviter peut-être à quelqu'un d'autre de patauger comme je l'ai fait, voici un code sommaire qui tourne. Notez l'avertissement en préambule... vaut mieux le savoir !
/* AVERTISSEMENT (AIMABLE)
* Ce code conduira probablement à un message "ERREUR DE COMPILATION", sauf à y effectuer pour commencer n'importe quelle modif inutile, un espace ici par exemple
* (va comprendre! vrai en tous cas avec "ESP32 Dev Module" + l'IDE Arduino)
*/
#include <ACAN_ESP32.h>
uint32_t lastTime;
const uint16_t TIMER(1000);
uint8_t message = 1;
static const uint32_t FREQUENCE_DU_BUS_CAN = 125ul * 1000ul;
CANMessage messageToCAN; /* MESSAGES EN EMISSION */
CANMessage messageFromCAN ; /* MESSAGES EN RECEPTION */
/* *************************************************************************** */
void setup() {
Serial.begin(115200);
delay(200);
/* parametres CAN */
ACAN_ESP32_Settings settings(FREQUENCE_DU_BUS_CAN);
settings.mRxPin = GPIO_NUM_16 ; // TX2
settings.mTxPin = GPIO_NUM_17 ; // RX2
// settings.mDriverReceiveBufferSize = 4;
// settings.mDriverTransmitBufferSize = 6;
/* demarre CAN */
const uint32_t errorCode = ACAN_ESP32::can.begin(settings) ;
ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::acceptAll () ;
if (errorCode == 0) /* =>*/ { Serial.println("Configuration OK"); }
else /* =>*/ { Serial.print("Error Can: 0x"); Serial.println(errorCode, HEX); }
/* identifiant (standard) des messages émis */
messageToCAN.id = 0b10000;
messageToCAN.len = 1 ;
}
/* *************************** messages CAN réception ************************ */
void fromCAN(const CANMessage & inMessage) {
Serial.print("Reception message : ");
Serial.println(inMessage.data[0]);
}
/* **************************** messages CAN émission ************************ */
void toCAN(const uint8_t MESSAGE) {
messageToCAN.data[0] =MESSAGE;
const bool OK = ACAN_ESP32::can.tryToSend(messageToCAN);
if (OK) { Serial.print(F("Emission message : ")); Serial.println(MESSAGE); }
}
/* *************************************************************************** */
void loop() {
if (ACAN_ESP32::can.receive(messageFromCAN)) /*=>*/ fromCAN(messageFromCAN);
if ((millis() - lastTime) < TIMER) /*=>*/ return; // TIMER ne vise pas à soulager le BUS mais seulement à simuler des événements déclencheurs
toCAN(message);
message++;
lastTime = millis();
}
(merci pour toutes les pistes à propos des breadboards king size)
Cordialement