Problemas ESP32 con Puerto Serial

Hola con todos, me llamo Diego y estoy aprendiendo a programar en ESP32, tengo un error que no sé como solucionar, espero me den ideas como poder solucionar, cuento los detalles :

SO : Windows 11
Dorhea ESP32 Cam + Micro USB to Serial Port CH340C 4.75 V - 5.25V

#include <dummy.h>
int led=4;
void setup() {
pinMode(led,OUTPUT);
Serial.begin(9600);
digitalWrite(led,HIGH);
}
void loop() {
  if (Serial.available()>0){
    String opcion=Serial.readString();
    if(opcion=="OFF") { digitalWrite(led,LOW);}
    else  { digitalWrite(led,HIGH);}

  }
}

Básicamente por Terminal Serial , el led prende desde que inicia el programa y solo se apaga si digito OFF , caso contrario se enciende.

Cuando realizo las pruebas con el terminal de Arduino, funciona perfecto el programa
Cuando uso :

  1. Visual Studio con librería serial
  2. Python directamente en el CMD
  3. Putty usando el terminal serial

En los 3 casos no funciona el programa, originando que el esp32 incluso se apague su led, lo cual no sería lógico porque el programa desde que inicia lo prende.

Cuando uso :

python
import serial
ser = serial.Serial("COM11", 9600)
--> En este punto el led se apaga, al generar la conexión
ser.close()
--> Aquí cierro la conexión con el serial y vuelve a encenderse el led

Espero me puedan indicar que puedo hacer porque siento que el esp32 se bloquea/inactiva cuando genero una conexión terminal que no sea del propio IDE de Arduino que en ese caso si funciona muy bien.

Si funciona con el terminal de arduino funciona con cualquier cosa.

Tu problema es de configuración, revisa que sea correcta tanto en python, VS y putty.

Consulta de la configuración, entiendo desde lado del IDE Arduino :
solo configuré los baudios a 9600, en mi dispositivo de terminal está el número del COM

Por el lado de CMD usando Python solo hice esto :

Qué tipo de configuraciones más debería ver?, entiendo que el resto es por default, como el bit de paridad , cantidad de bits,...

El tema es que

if (Serial.available()>0){
    String opcion=Serial.readString();
    if (opcion=="OFF") { 
       digitalWrite(led,LOW);}
    else  { 
       digitalWrite(led,HIGH);
     }
  }

dice que si no recibe algo que sea 'OFF' encienda al led
Coloca una restrición tal que se encienda si recibe un String como 'ON' y te aseguras que lo demás no accionará.
ese algo puede ser un enter

Hola Surbyte, el programa realiza lo que deseo en este momento
En su estado inicial debería estar encendido hasta que no se digite "OFF" y volver a encender digitando cualquier cosa.

void setup() {
pinMode(led,OUTPUT);
Serial.begin(9600);
digitalWrite(led,HIGH);
}

Mi duda parte que en el IDE Arduino funciona perfecto con el ESP32 , pero cuando uso el comando por terminal Python, no responde el ESP32. Incluso el led se apaga cuando inicio la conexión.

Estuve intentando varias configuraciones en el terminal, actualmente cambié los baudios a 115200, al final quedó el mismo resultado en el ESP32.

Probé con un Arduino MEGA 2560 y funciona perfecto :smiley: (con el terminal Arduino y otro terminal como pyserial )
Probé con otro ESP32 CAM ( mismo modelo idéntico y falló :confused: ). Ambos ESP32-CAM funcionan el terminal del IDE Arduino pero como que se bloquea cuando hago otra conexión de terminal.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.