Discussions Générales > Infos et bonnes affaires
ESP32 "bonne affaire"
bobyAndCo:
Les ESP32 sont vraiment de très bons produits pour le prix. Excusez du peu, 240 Mhz pour la plupart des modèles, 4Mo de mémoire flash dont on pourra allouer 1, 2 ou 3 Mo pour un vrai stockage de fichiers pour des applications ou un site internet propre à l’ESP32. PWM sur toutes les broches, WiFi, Bluetooth, 3 x UART, CAN (avec nécessité d’ajouter un MCP2562) et double cœur !!!
Et même si vous ne développez pas en utilisant les deux cœurs, de nombreuses librairies le font pour vous comme les librairies CAN par exemple.
Les broches supplémentaires disponibles sur la version 38 pins par rapport à la 30 ne sont que des broches dont l’utilisation est limitée en usage normal (comme le précise msport). La 30 pins offre donc des services similaires.
C’est donc vraiment une belle petite bête.
Pour ceux qui sont habitué à écrire en C/C++, il y a des possibilités d’écriture qui n’existe pas dans le langage Arduino comme le tout bête mais bien pratique printf : printf("Valeur lue : %d\n", val)
Pour les extensions, moi je me suis fabriqué ma propre petite carte avec un convertisseur 5V (le convertisseur de l'ESP n'est sollicité que pour passer de 5v à 3,3v) et un "vrai" MCP2562 pour le CAN.
GERBER en PJ pour ceux que ça peut intéresser
Dominique:
Bonjour Christophe,
Cette carte m'intéresse et j'ai commandé des ESP32 30 pins.
amitiés
Dominique
bobyAndCo:
@Dominique -> Tu veux que je t'en envoie une ou deux par courrier ?
simontpellier:
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 !
--- Code: ---/* 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();
}
--- Fin du code ---
(merci pour toutes les pistes à propos des breadboards king size)
Cordialement
bobyAndCo:
Désolé pour l'oubli du Gerber, c'est réparé !
C'est vrai que les téléversements sont moins capricieux et plus rapides avec PlatformeIO. Et l'OTA en particulier fonctionne à tous les coup alors que c'est loin d'être le cas avec l'IDE Arduino.
Concernant le CAN, attention à bien prendre en compte que l'utilisation des filtres et des masques est beaucoup, beaucoup moins performante que sur un Arduino par exemple. En particulier avec les trames étendues. La doc accompagnant la biblio de Pierre Molinaro détaille bien les restrictions et l'utilisation des différents filtres et masques.
Il ne faut en effet surtout pas utiliser RX0 et TXO qui sont déjà utilisées par le port USB. Mais toutes les autres pins conviennent avec les restrictions habituelles relatives à certaines broches et dont nous avons déjà parlé. Pour ma part, j'utilise les 22 et 23 qui sont les plus proches du MCP2562.
La carte est alimentée en 5V car le MCP2562 doit être alimenté en 5V : http://ww1.microchip.com/downloads/en/devicedoc/20005167c.pdf
Le "composant" vertical comme tu dit est tout simplement un cavalier pour activer ou non la résistance de 120Ω (terminaison du bus !!!)
Sur le code proposé, pas besoin du timer. D'autant que Pierre Molinaro utilise le second cœur de la carte dans sa biblio.
Ne jette pas tes 38 pins, la version v5 de la carte en PJ est pour les 38 pins alors que la v4 est pour les 30 pins
J'ai également mis le gerber v4 pour 30 pins
v5 :
Navigation
[#] Page suivante
[*] Page précédente
Utiliser la version classique