Dans le cadre d'un projet effectué pour l'université, je souhaite réaliser un lecteur de code barre relié à un ESP32. J'ai donc besoin de pouvoir lire les données retournées par le lecteur. Pour cela je souhaiterai le câbler en liaison série sur mon ESP (branché sur des pins, en l’occurrence 16 et 17), j'observe bien mon signal à l'aide d'un oscilloscope lorsque je me câble sur ces pins.
Lors de la lecture, j'utilise la bibliothèque SoftwareSerial, mais malheureusement, lors de la compilation (en utilisant le programme d'exemple) j'ai une erreur permanente : fatal error: avr/interrupt.h: No such file or directory qui vient du dossier SofwareSerial.cpp
Je ne sais pas comment le résoudre, auriez-vous une solution pour résoudre ce problème ? Ou auriez vous un autre moyen de récupérer mes données ?
Votre ESP n’est pas un processeur AVR, il faut utiliser dans l’absolu une autre librairie Software Serial pour ESP (le lien c’est la première sur laquelle je suis tombé) mais dans votre cas pourquoi passer par Software Serial alors que vous pouvez utiliser un second port série matériel sur votre ESP ?
@J-M-L Le lien de votre librairie est le même que celle que j'utilise malheureusement. Je ne comprends pas ce que vous entendez par utiliser un deuxième port série ?
@kamill effectivement, je n'avais pas pensé à l'UART je vais chercher afin de voir si une solution fonctionne pour mon cas.
AlexisDut: @J-M-L Le lien de votre librairie est le même que celle que j'utilise malheureusement. Je ne comprends pas ce que vous entendez par utiliser un deuxième port série ?
Le fait que votre erreur soit fatal error: [color=red][b]avr[/b][/color]/interrupt.h... me fait penser que non...le linker / compilateur prend celle pour les arduinos standard on dirait
AlexisDut: @J-M-L Je ne comprends pas ce que vous entendez par utiliser un deuxième port série ?
La même chose que ce que vous comprenez sur le post de Kamill
C'est la liaison qu'on appelle par habitude la "liaison série". Elle utilise le protocole de transmission de la RS232. Attention seulement le protocole de transmission et absolument pas les niveaux électriques.
Selon la tension d'alimentation du microcontrôleur l'UART enverra des signaux d'amplitude 5V ou 3,3V.
Au début il y avait deux modes de transport des données :
Sur un seul fil = liaison série. Les bits étaient envoyés les uns derrière les autres selon un certain protocole.
Sur N fils en parallèle = liaison parallèle. Les bits étaient tous envoyés en même temps.
Les liaisons parallèles ont complètement disparues, elles ne supportaient pas des fréquences élevées --> si les bits étaient envoyés en même temps il était impossible de garantir qu'ils arriveraient en même temps.
Actuellement toutes les liaisons émettent les bits en série sur un seul fil de donnée : UART , USB, I2C, SPI, CAN, etc
AlexisDut:
Ce que je ne comprends pas car je l'ai dans les librairies mais aussi dans le hardware (aussi dans un dossier lib).
vous avez mis #include [color=green][b]<[/b][/color]SoftwareSerial.h[color=green][b]>[/b][/color] ou #include [b][color=red]"[/color][/b]SoftwareSerial.h[color=red][b]"[/b][/color] dans le code ?
Mais bon - la bonne solution c'est de passer avec un autre port Série matériel - c'est quel ESP32 exactement que vous avez ?
Oui j'ai essayé comme ça, le problème est que mes signaux disparaissent lorsque je scanne avec mon lecteur (avec cette ligne là : Serial2.begin(115200,SERIAL_8N1, 16, 17);).
Mes signaux disparaissent aussi dans ce cas. lorsque j'enleve cette ligne : lecteurSerie.begin(9600, SERIAL_8N1, 16, 17); // mettre le bon débit en BAUD
mes signaux ne sautent plus, je suppose donc que le problème vient d'ici.
Ils disparaissent de l'osciloscope me permettant d'observer l'évolution. C'est du 5V il me semble.
Pour ce qui est du croisement, je n'ai que 2 fils (données + et données -) car c'est une sortie USB que je branche sur les pins 16 et 17.
votre ESP ne supporte que le 3.3V il me semble... à vérifier si vos pins fonctionnent encore... (mettez une LED en OUTPUT (pin ---- R220Ω ---- LED --- GND) avec une résistance et vérifiez que vous pouvez l'allumer et l'éteindre et mettez un bouton en INPUT_PULLUP (pin --- bouton --- GND) et vérifiez que le digitalRead() fonctionne
Pour ce qui est du croisement, je n'ai que 2 fils (données + et données -) car c'est une sortie USB que je branche sur les pins 16 et 17.
D+ et D- !!! si je comprend bien il s'agit d'une tentative de connection directe de signaux USB à un ESP32.... sans espoir....
Pour cela je souhaiterai le câbler en liaison série sur mon ESP (branché sur des pins, en l'occurrence 16 et 17),
Cette phase a créé l'équivoque.
l'ESP32 sait faire beaucoup de choses , mais pas la gestion directe de signaux USB.
l'ESP32 seul ne peut être ni hôte ni device USB. (Un jour peut être quelqu'un saura bricoler quelque chose en 'bit banging' come cela a été fait pour le µC AVR)
Eviter d'envoyer des signaux 5V à un ESP32, il n'est pas conçu pour ça.....
Certains ESP32 peuvent survivre .....plus ou moins longtemps ......le fabricant a dégagé sa responsabilité via la notice technique de la puce.
Si le lecteur de code barre de ne fournit ses infos que par une sortie USB il doit être raccordé à un hôte USB doté du bon driver (double condition)