Général ESP32

  • Auteur de la discussion vibram
  • Date de début
V

vibram

Compagnon
Bonjour à tous,

On m'avait (fortement bien) conseillé sur ce forum d'utiliser un STM32 au lieu d'un arduino car celui ci a des performances bien plus élevées. C'est vrai que lorsqu'on commence à jouer avec un codeur par exemple, les différences ne sont pas negligeables.

Le problème principal du STM32 est sa difficulté d'accès pour un débutant comme moi. J'arrive à faire des bricoles mais je me suis heurté aux joies des écrans type TFT 5" et compagnie, c'est pas le néant mais pas loin pour les débutants (attention je ne dis pas que c'est impossible).

Sur le forum Arduino, on m'a conseillé de regarder du coté des ESP32. Moi je connaissais de nom pour le Wifi, mais à premiere vue il y a aussi des board "tout en un", qui se programment avec la facilité d'un arduino et qui auraient des performances élevées. Sur le lien ci dessous on a un processeur à 240Mhz.

https://projetsdiy.fr/quelle-carte-...ets-connectes/#Nouveaux_modeles_ESP32_en_2018
A premiere vue il y aurait des librairires pour le TFT, en plus de gérer le BT, WiFi etc...

Est-ce que certains d'entre vous utilisent ces board ? avez-vous des conseils ?

Merci et bonne journée
 
S

soulsurfer

Nouveau
Bonjour,

Je code pas mal avec des esp32, et en effet les performances sont très sympathiques ! De plus rien ne t’empêche de faire du code arduino sur un esp32. Personnellement, je fais du c++ dessus mais sans passer par la surcouche arduino. Je te conseille de jeter un coup d’œil au github de Neil Kolban, une référence sur l'esp32. https://github.com/nkolban. De plus il publie un livre/pdf sur le sujet ici : https://leanpub.com/kolban-ESP32.

Et tu peux trouver des devkits (un esp32 pré-cablé avec une interface usb/série pour le programmer et les entrées/sorties accessibles.
Comme ici :ESP32 devkit

Ou encore celui-ci (ok c'est un peu en conflit avec ce que tu veux faire, vu qu'il intègre déjà un petit écran oled) : ESP-32-oled module

Bonne journée à toi aussi !
 
V

vibram

Compagnon
Merci @soulsurfer
j'ai effectivement commandé un esp32 pré cablé.

Peux tu me confirmer ou non que la surcouche arduino limite les capacités notamment en vitesse? 8comme tout ajout de librairie en fait...)
J'ai vu qu'on pouvait accéder directement aux GPIO également, ce qui est pas mal pour un codeur et pour le reste, utiliser la surcouche arduino.
A voir...


edit: en revanche y'a vraiment peu de pin disponibles ... c'est vraiment fait pour interfacer du wifi ou du B :wink:
 
C

cr-_-

Compagnon
Bonjour,
je ne sais pas si tu connais platformIO mais il permet une certaine couche d'abstraction. Pour les librairies elles sont souvent bien plus performante que ce que l'on peut coder, sur arduino la librairie la librairie IO est une catastrophe si on a besoin de vitesse (elle est faite pour la simplicité), dans ce cas une librairie comme fastIO, dio2, ...

Suivant le projet j'utilise soit des stm32 soit des esp (8266 ou 32), arduino plus rarement (c'est plutôt pour tester vite fait un truc)
 
S

soulsurfer

Nouveau
Bas on va dire que comme toute librairie suivant comment elle est optimisée tu va perdre ou pas en vitesse :wink: Après et c'est aussi là le gros intérêt de l'esp32 c'est double coeur et du coup tu peux faire tourner de la tache critique sur un cœur dédié pendant que l'autre s'occupe du reste . Après pour les IO j'ai tendance à utiliser les bus genre I2C pour multiplier le nombre de choses que je pilote
 
V

vibram

Compagnon
OK merci encore !Accepterais tu de partager tes projets pour que je vois a quoi ca ressemble notamment avec l'I2C?
 
T

tronix

Compagnon
Bonsoir,

beaucoup de problèmes de performance résultent d'une programmation calamiteuse. Un double coeur ne changera rien si on fait n'importe quoi.
Il faut en particulier éviter toutes les temporisations bloquantes, où le processeur ne fait rien d'autre qu'attendre, un signal I2C, One-Wire, le résultat d'une conversion... Sans OS, il faut appeler les différentes tâches cycliquement, faire en sorte que chacune rende la main assez vite, même si elle n'est pas terminée, quitte à se continuer après. Quelques interruptions pour les besoins de timings précis, et si possible utiliser le DMA pour certains périphériques. Donc, pour résumer, bannir toutes les appels à des fonctions "delay()". Et dont usent et abusent les librairies simples.
Il ne faut bien sûr pas se priver de prendre des composants performants, la différence de prix est souvent faible, mais cela ne dispense pas de coder proprement.
La gestion d'un port I2C, d'un UART, d'un bus spi ne demande que quelques dizaines de lignes de code, que quelques centaines d'instructions. Avec un processeur tournant entre 10 et 100MHz, cela ne représente que quelques microsecondes. Largement de quoi faire des tas d'autres choses. Mais si un transfert I2C de 100 bits à 100kHz se fait en bloquant le processeur, on le bloque pendant 1ms, soit 0.1% du temps disponible. Que le processeur tourne à 1 ou 100MHz ne changera alors rien. Si on fait des dizaines d'accès par seconde, plus quelques autres bricoles, le processeur est très vite à genou...
 
Dernière édition:
V

vibram

Compagnon
Salut Tronix, jai appris à coder sans trop utiliser de delay et même a manipuler un peu les bits grâce à usinage. Mais malgré tout il me manque pas mal de bases théoriques, je fais plutôt de l adaptation de codes que je trouve ça et la, c'est pourquoi je demande souvent des exemples, c'est pour comprendre et m'en inspirer
 
T

tronix

Compagnon
C'est une approche logique et respectable, surtout en amateur. Beaucoup de choses sont devenues plus faciles qu'avant, tant mieux. Mais pour certaines, il n'y a pas de miracle, il faut du temps et de l'expérience, avec ou sans librairies (mais pas avec celles d'Arduino).
 
S

simon74

Compagnon
Est-ce-que le ESP32 Arduino Core est plus performant / mature / supporté que celle pour le STM32?
 
K

Kamusta

Apprenti
Bonjour,

J'ai un kit de développement ESP8266 de ce type : esp8266 je n'ajoute rien de particulier avec l'ide de l'Arduino et les programmes sont chargés dedans sans problème.
Bien sûr l'ide et Avrdude derrière sont incapable de savoir qu'il y a 2x32 Mbits de mémoire dedans. Donc si il m'arrivait d'avoir besoin de plus de 32Mbits je devrai faire autrement, mais ça n'a jamais été le cas pour l'instant.
Je ne suis donc pas certain que l'ide d'Arduino rajoute quoi que ce soit selon les kits.

A mon sens le problème que l'on va rencontrer est plus avec les sensors Arduino qui sont tous ou presque en 5V. Et là cela pose un soucis car tout ces kits sont sur la base de l'esp qui lui ne prend que du 3V3 et ils sont donc plus souvent utilisés avec des Raspberry ou clones.

Cordialement
 
C

cr-_-

Compagnon
Bonjour,
L'esp8266 est tolérant au 5v sur ses entrées, il me semble
 
K

Kamusta

Apprenti
Bonjour,
L'esp8266 est tolérant au 5v sur ses entrées, il me semble

Bonjour,

Aussi loin que je sache non c'est du 3V3, cf. datasheet page 7, "Hardware-operating voltage" et à beaucoup d'autres endroit sur les différentes alim.
Je parle de l'ESP, pas des cartes Node MCU ou Wemos qui sont des cartes qui embarquent un ESP et qui en effet ont un port USB que l'on branche sur le PC, en 5V. Mais il y a un régulateur 3V3 derrière, les GPIO eux restent en 3V3.

Cela n'empêche peut-être pas d'avoir certaines cartes de développement, où des régulateurs plus puissants sont intégrés, qui leur permettent d'être tolérant au 5V pour les GPIO. C'est du même cru que certaines Teensy.
Mais je n'en ai pas et je ne suis pas attiré. Je me dis que de bosser en 3V3 c'est jouable, et au moins on est sûr de rien cramer. Sur l'Arduino c'est différent le µC lui-même est en 5V.

Minute récré pour une bonne journée : Il y a aussi des gens sur le tube qui câblent SDA/SCL depuis un ESP01 en 5V direct sur la carte Arduino, à grand renfort de résistances "chutrices" :lol:, moi je ne m'y risquerai pas :wink:. Mais là dessus y en a qui ont aussi inventé des génératrices avec un ventilateur de PC dans le salon :lol::lol::lol:

Un post très détaillé sur les ESP, et en plus c'est en français.

Bonne journée.
 
K

Kamusta

Apprenti
C'est la même chose pour l'Arduino, parfois l'électronique encaisse beaucoup plus que l'on pense, mais cela reste une utilisation pas en regard des données constructeur.
Cela dit, même Expressif confirmerait que son matériel est hyper protégé, mouais.
2 choses m'interpellent : 1- Il reste un paquet d'éléments contradictoires sur la discussion. 2 - A la vue des "sources", l'officiel pourrait très bien être un troll, ça c'est déjà vu...

Je préfère rester dans les limites données constructeur, et ils n'ont toujours pas changé le datasheet, je viens de vérifier. Nous sommes sur un forum accessible à tous, je ne vois pas l'intérêt de proposer du scrabreux, hors des limites constructeur. Après cela n'engage que moi, donc si quelqu'un veut les faire tourner en 5v, libre à lui.

Cordialement
 
Dernière édition:
J

jpbbricole

Compagnon
Bonjour

Je ne sait pas si ça a un rapport, étant débutant dans les trucs32 mais la carte STM32 Blue Pills a des ports 3.3v. et 5v.
1539357870738.png


Cordialement
jpbbricole
 
C

coredump

Compagnon
L'esp8266 est officieusement tolérant 5v sur la plupart des pins digitales.
Idem pour certains stm32 ou chips freescale/nxp: uniquement les IO digitales.
En pratique il vaut mieux tout passer en 3.3v et garder les shields 5v pour de l'arduino original.
 
K

Kamusta

Apprenti
Bonjour JPBB et coredump,

Je plussoie, c'est du même cru, le document que tu joins annonce des pins 5V tolérant, pour autant le datasheet constructeur n'en parle pas, max 3,6V pour la plupart.

Ce que je disais c'est que de respecter les données constructeur vont éviter, à coup sûr, des déboires en plus.
Après je l'ai dit cela n'engage que moi.

Cordialement
 
C

cr-_-

Compagnon
Pour le coup le datasheet du stm32 en parle (FT dans la colonne io structure, dans la description des pinout)
Mais effectivement celui de l'esp non, enfin plus maintenant. J'avais fait un montage en me basant sur une ancienne version du datasheet qui en parlait et qui fonctionne toujours.

Je soupçonne expressif d'avoir trouvé un problème dans leur gestion de la tolérance 5v et d'avoir viré ca du datasheet

De manière générale la tolérance au 5v est quelque chose d'intéressant pas trop pour les bidouilleurs pour qui ajouter un adaptateur de niveaux n'est pas excessif mais quand tu produits des systèmes contraints où la moindre consommation ou coût entre en jeu ça fait économiser de manière importante

En tout cas on est certe sur un forum public mais ca n'empêche pas les lecteurs d'avoir du recul :)
 

Sujets similaires

W
Réponses
122
Affichages
9 089
Philippe85
Philippe85
G
Réponses
88
Affichages
11 483
gaston83
G
Dudulle
Général langage MMBASIC
Réponses
8
Affichages
802
Dudulle
Dudulle
W
Réponses
261
Affichages
17 866
midodiy
midodiy
osiver
Réponses
14
Affichages
35 580
osiver
osiver
K
Réponses
18
Affichages
5 878
kikivalsky
K
L
Réponses
8
Affichages
1 151
lion10
lion10
J
Réponses
265
Affichages
14 269
FLCV71
F
2
Réponses
27
Affichages
1 189
jean-jacques
J
L
Réponses
35
Affichages
6 682
freddy007
F
O
Réponses
9
Affichages
4 569
OMalley56
O
B
Réponses
19
Affichages
2 001
boumboauto
B
Haut