Go Down

Topic: Lecture signal sur une pin (Read 751 times) previous topic - next topic

AlexisDut

Bonjour,

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 ?

Merci d'avance de votre aide.

J-M-L

#1
Feb 11, 2019, 10:06 am Last Edit: Feb 11, 2019, 10:09 am by J-M-L
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 ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

kamill

#2
Feb 11, 2019, 10:08 am Last Edit: Feb 11, 2019, 10:10 am by kamill
Bonjour,

Pourquoi utiliser SoftwareSerial alors que le ESP32 a 3 UARTs?
Pour voir comment les utiliser chercher esp32 serial sur google.

Si ton lecteur de code barre sort en RS232, il te faut un adaptateur RS232 -> niveau logique 3.3V

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 ?

@kamill effectivement, je n'avais pas pensé à l'UART je vais chercher afin de voir si une solution fonctionne pour mon cas.

J-M-L

#4
Feb 11, 2019, 10:20 am Last Edit: Feb 11, 2019, 10:23 am by J-M-L
@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: avr/interrupt.h... me fait penser que non...le linker / compilateur prend celle pour les arduinos standard on dirait

@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 :)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

AlexisDut

Ce que je ne comprends pas car je l'ai dans les librairies mais aussi dans le hardware (aussi dans un dossier lib).

Je vais donc continuer mes recherches dans ce cas pour l'UART.

68tjs

UART = Universal Asynchronous Receiver Transmitter

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

J-M-L

#7
Feb 11, 2019, 11:10 am Last Edit: Feb 11, 2019, 11:15 am by J-M-L
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 <SoftwareSerial.h> ou #include "SoftwareSerial.h" 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 ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

AlexisDut

#8
Feb 11, 2019, 11:28 am Last Edit: Feb 11, 2019, 11:29 am by AlexisDut
C'est un #include<SoftwareSerial>  que j'utilise dans mon code. J'ai l'ESP WROOM-32

J-M-L

#9
Feb 11, 2019, 11:36 am Last Edit: Feb 11, 2019, 11:43 am by J-M-L
est-ce que vous avez 2 pins nommées Rx et Tx sur la carte ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

AlexisDut

#10
Feb 11, 2019, 11:40 am Last Edit: Feb 11, 2019, 11:43 am by AlexisDut
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);).

J'ai des pins TXD et RXD sur mon ESP.

J-M-L

#11
Feb 11, 2019, 11:45 am Last Edit: Feb 11, 2019, 11:51 am by J-M-L
si vous essayez ce code, ça dit quoi:

Code: [Select]
#include <HardwareSerial.h>

HardwareSerial lecteurSerie(1);

void setup() {
  Serial.begin(115200);
  lecteurSerie.begin(9600, SERIAL_8N1, 16, 17); // mettre le bon débit en BAUD
}

void loop() {
  while (lecteurSerie.available() > 0) {
    int c = lecteurSerie.read();
    if (c != -1) Serial.write((char) c);
  }
}
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

AlexisDut

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.

J-M-L

Vous voulez dire quoi par "Mes signaux disparaissent" ? ils disparaissent d'où ?

c'est bien du 3.3V que vous balancez ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

kamill

Les signaux rx et tx sont bien croisés?

Go Up