GENIO DIVINOOOOO!!!! Tengo un proyecto dando vuelas hace 1 año: Sensor, camara y FTP. Hace 2 meses estoy con la ESP32 y hoy al fin se como usar el otro nucleo gracias a vos! No daba pie con bola, es mas, tengo un proyecto que baje de la gente de BnBe Club, para modificarlo y adaptarlo al mio. Con esto, arranco desde cero, en el loop trataré de dejar la conexion a FTP, y en el otro, que labure el sensor y la camara...A PROBAR!!!!!
y pensar q con un micro atmega 328 me ha tocado ponerlo a escuchar de todo enviar y bajar sin usar delays para poder seguir ejecutando demas tareas, ,muy util lo q comparte!
Hola Pablo, excelente explicación. Que genial... Se abre un abanico de posibilidades al poder gestionar hilos de procesos en el esp32... Gracias Maestro!
Extraordinario video tutorial, muy instructivo, y estoy contigo de mucho respeto el de la concurrencia de procesos, casi invadiendo las competencias de los sistemas operativos. Bravo!
WOOW esto es súper potente. No sabía que la ESP tenía esta capacidad y se podía dividir las tareas. Se acabó eso de tener un loop que hiciera 1000 funciones JAJAJAJ muchas gracias por la explicación y con miles de ganas de darle caña a la masterclass de IoT!!
Muchas gracias excelente video, Quedo agradecido por la atención: Cuando ejecuto void loop(){ DateTime now = rtc.now(); printDate(now); } Obtengo la fecha y hora correcta: 2021/5/12 (Mie) 22:38:30 Pero cuando ejecuto en el núcleo 0 void loop0(void *parametro){ for (;;) { Serial.println("En nucelo 0 -> " + String(xPortGetCoreID())); DateTime now = rtc.now(); printDate(now); delay(1000); } vTaskDelay(10); } La fecha y hora salen datos errados. 2165/165/165 (Mar) 165:165:85 Quedo agradecido por la orientación.
Buenas noches. excelente las explicaciones, es posible que de pronto realice un video donde nos explique como instalar y configurar el platformio para usarlo con el esp32. De antemano muchas gracias por tomarse el tiempo para realizar estos videos.
Hola caballero, saludos desde Bs. As.!!! Usted no sabe lo maravilloso que es saber que puedo utilizar tareas programando con el IDE de Arduino! Vengo trabajando desde hace un año con ESP_IDF dentro de Eclipse y lamentablemente me es muy dificil utilizarlo, es aprender FreeRTOS y no es tan clara los ejemplos de aplicacion. Mucho mas facil asi, debido a que tambien hay mucha mas informacion con ejemplos del ESP32 en Arduino. Infinitas gracias!
Muy buen aporte, excelente. Ahora yo necesito que una funcion en particular se ejecute en el otro core, es decir mi main loop usando un core y eventualmente se llama a otra funcion y cuando eso ocurre, esta se ejecute en otro core/thread liberandome al main loop para que siga con lo suyo. La funcion claro esta, se ejecuta una sola vez por cada llamada del main loop
Me llamo la atencion el no conflicto de ambas tareas trabajando sobre un mismo modulo de harware el puerto serial en este caso, lo que me da la idea de que los proceso se realizan tambien en secuencuencia y no el paralelo.
Hola Pablo. Estupendo por fin consigo conectar. Me encanta tu curso y tus vídeo-tutoriales, como siempre tan didácticos y explícitos de los que aprender. Te prometo que sigo tus trabajos y ya iré preguntando las dudas que surjan. Lo dicho un placer estar otra vez por aquí.
Un vídeo fantástico, justo cuando he empezado a necesitar estos conocimientos en el trabajo aparece este vídeo tan reciente. Perfectamente explicado!! +like +sub!
Es fantastica esa demostracion... hace un tiempo hice un proyecto con arduido donde ejecutaba diferentes pulsos constantes en sus pines de salida y por su puerto serial, a traves de usb, le daba ordenes para detener o variar dichos pulso. el problema es que durante el proceso de lectura en el puerto serial se detenia para leer, y eso hacia que se perdiera la constancia de los pulsos... indiferentemente de que dentro del programa, simulara la simultaneidad. sentia que leia muy lento, imaginese cuando tenia que enviar alguna retroalimentacion de estatus de los pulsos en ejecucion. era una pesadilla mientras recibe y envia informacion. mis preguntas son, puedo evitar esa problematica si un procesador se encarga de la comunicacion y el otro de los pulsos? que tan rapido es la lectura de serial del esp32 con respecto a la de arduino?
Hola soy principiante y me ha parecido espectacular la velocidad de compilación y grabación al micro esp32. Puede saberse que herramientas software/hardware utilizas? Muchas gracias
acabo de recibir mi esp32 y lo estoy estrenando con tus videos, seguí los programas que realizaste paso a paso y todo funciono hasta la parte de agregar la cuenta para sumar los números, al compilar me arrojo un error, me fui al código que compartiste y lo copie y compile para eliminar posibles errores míos pero el error continua, no se a que se pueda deber pero si estoy muy interesado en la multitarea ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0018,len:4 load:0x3fff001c,len:928 ho 0 tail 12 room 4 load:0x40078000,len:8740 load:0x40080400,len:5800 entry 0x4008069c En núcleo -> 1 Guru Meditation Error: Core 0 panic'ed (Unhandled debug exception) Debug exception reason: Stack canary watchpoint triggered (Task_2) Core 0 register dump: PC : 0x400d8ef8 PS : 0x00060f36 A0 : 0x800d8a04 A1 : 0x3ffb80d0 A2 : 0x00000208 A3 : 0x000001e4 A4 : 0xffffffff A5 : 0x3ffb8480 A6 : 0x3ffb8460 A7 : 0x00000008 A8 : 0x3ffb83e0 A9 : 0x3ffb80c0 A10 : 0x3ffb80e0 A11 : 0x3ff9c510 A12 : 0x000000ff A13 : 0x0000ff00 A14 : 0x00ff0000 A15 : 0xff000000 SAR : 0x00000010 EXCCAUSE: 0x00000001 EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff Backtrace: 0x400d8ef8:0x3ffb80d0 0x400d8a01:0x3ffb83e0 0x400d155d:0x3ffb84a0 0x400d0c7e:0x3ffb84f0 0x4008a0a1:0x3ffb8530 Rebooting… y se repite automáticamente saludos
Wow sos un dios, lei por algun lado que las variables globales ocupan bastante memoria.... podria usar 32 variables globales para las 32 entradas que tendre... o mejor diseño un modo de enviar que numero de sensor hizo un cambio y nada mas eso en solo 2 variables globales 1 el sensor 2 el dato
Me interesa muchísimo! Justo estoy con un proyecto que requiere un loop super estable el cual solo me deja 3000us para imprimir en pantalla pero quiero usar una OLED i2C que me tarda en comunicar 10 veces más del tiempo que tengo. Así usando un núcleo para imprimir datos no me rompe el ritmo del loop principal
Wow que maravilla. Tengo un proyecto en el que programare un juego Ludico y debo estar comunicandome con un tablero con Ws2812b y una app por Bluetooth. ¿Esto me aportaria un grna beneficio?
Pablo, una pregunta: ¿Cómo puedo conocer el consumo de recurso o mejor dicho porcentaje de ocupación de cada uno de los dos core de un esp32? Me interesaría poder tener esa información en el esp32, así saber a que core asignar nuevas tareas. para poder hacer un balance de carga de mis tareas. Muchas gracias.
@Ioticos Muy buen video, estoy aprendiendo mucho con ustedes, muchas gracias. Pregunta: implemente lo recien aprendido en un pequeño proyecto que estoy realizando, en practica quisiera que ( como mensionado en el video) el loop principal se encargue solo de las comunicaciones y el loop 2 ( core 0 ) haga el resto. Me encontre con el problema de que mi pequeño TFT 0.96'' SPI dejo de funcionar en esta modalidad dual core, el display con otros sketch funziona pero con este no muestra nada, aunque si por la serial si se muestran los datos... alguna sujerencia? muchas gracias denuevo
Buen vídeo una consulta Ing. como puedo activar los fuses en el modulo esp32 conel fin de que no se pueda clonar la tarjeta o extraer el archivo .hex. Saludos
muchas gracias en mi caso me daba error con una plca heltec lite ESP32 .. tuve que modicicar el valor de 1000 a tamaño de la pila a un valor más razonable. Un valor de 4096 palabras (que corresponde a 16 KB de memoria de pila), >> xTaskCreatePinnedToCore( loop2, "Task_2", 4096, NULL, 1, &Task2, 0); desde ya mil gracias
Hola, Excelente vídeo, pero me han surgido unos problemas con el uso del doble núcleo, puesto que me esta causando interferencia cuando hago uso del I2C en el núcleo principal mientras hago una lectura de censado en el otro núcleo. Podrías ayudarme con esto.....??
Consulta... El deep sleep, que nucleo activa? Ambos o solo el 1? O el que le asigne? Por ejemplo, mi esp32cam es un ftpserver, funcionando todo el tiempo (loop -> nucleo 1). Y en una tarea que se le asigne (nucleo 0) captura un valor sensado. Pero para no estar todo el tiempo activo, se me ocurre usar el deep sleep y que se despierte al "escuchar" algo. Se entiende? Igual es una duda existencial nada mas. Podria dejarlo escuchando todo el tiempo...
Excelente, si entendí bien, puede ser muy útil en aplicaciones que combinen sensores de distancia ultrasonicos, que requieren mucho tiempo de espera y mientras se pueden estar checando otros sensores, no?
Que gran video! una pregunta, al aplicar este concepto a un código que estoy haciendo me reinicia el micro después de un tiempo y me manda la señal reboting, sabe como puedo arreglar este problema?
Muy bueno, te hago una consulta, lo hice y funciona bien, el unico problema que tengo es que cada 6 segundos me envia una señal por el tx0 lo cual me genera un conflicto porque la estoy usando para otra cosa esa salida, sabes por que puede ser? gracias.
en el ultimo ejemplo no son 3 loops independientes, ya que no tiene 3 nucleos, dos procesos se ejecutan en un nucleo como rtos, pero deja de ser un proceso totalmente independiente, como si lo son loop1 y loop2
Pregunta se qué son dos microcontroladores diferentes, pero tiene una programación muy rebuscada en C en comparación a los PIC, siempre use PIC, quiero comenzar con ESP pero que rebuscado es el C comandos raros estoy viendo que nose que onda!!
Muy bueno ¿Probaron cómo cambia la velocidad de procesamiento? Deberían multiplicarse x 2 (un poco menos) los mflops, para saber que efectivamente son dos procesos en paralelo
Hola Ioticos.. Tengo el interés de usar el 2 núcleo del esp32 para tareas de conexión a wifi y de envío de datos a la nube, sabes si es posible? o si tienes algún código similar para comenzar..
Buenas noches, tengo algunas preguntas con respecto a tu curso, primero me gustaría saber el valor del curso q aparece es mensual o solo, se, paga una vez sueno bobo pero es super relevante, otra pregunta, si yo lo que quiero conseguir es una página privada sin hosting ni servidores externos como, porq tu nos explicas q es usando Amazon o google pero no un servidor personal en casa por ejemplo si lo quiero solo para controlar mi casa espero preguntara bien para q me expliques bien por favor, muchas gracias.
Hola. Excelente video. Terminé viendo esto porque en el curso de Masterclass de IoT usás el segundo CORE. Pero me queda la duda.. .Dos loops sobre un mismo código. Con qué criterio usa un loop u otro? Y al hacer delay no lo bloqueás? Porque veo el delay (2000) no es bloqueante. Saludos!!
Hola. Tengo un problema. Me sale un error de que ninguna funcion Task watchdog got triggered. The following tasks did not reset the watchdog in time: -IDLE0 CPU0. A pesar de que le puse el vTaskDelay(10) al final. La cosa es esta, en cada bucle le estoy haciendo correr como 10E8 operaciones de punto flotante y tarda varios segundos hasta que se completa el loop ¿Será que tengo que poner el vTaskDelay antes? ¿Por qué lo pones después del for(;;){}? Ahí nunca se ejecuta. Igual, lo puse adentro y es lo mismo. Creo que el problema es que demora demasiado tiempo en el loop2 y por eso salta. Te preguntarás para que le hago hacer eso. Es para ver si al hacer andar los 2 nucleos en paralelo se duplican los flops. Ya probé con un nucleo y obtuve 555Mflops para float, y 109Mflops para double.
Ya funcionó. Le bajé a 1E+5 operaciones de punto flotante, y me dio, para variables double, 105Mflops en cada nucleo por separado. Considerando que en monotarea me daba 109Mflops, creo que es más que evidencia de que es procesamiento totalmente en paralelo.
I can see an RF Receive and RF transmit modules! Can they be used to transmit data like Bluetooth without any external additional board? That would be so great
Genial video!! de igual forma, el código tal cual lo compartís, no me funciona. Me da un error por el puerto serial: Guru Meditation Error: Core 0 panic'ed (Unhandled debug exception) Debug exception reason: Stack canary watchpoint triggered (Task_2) Core 0 register dump: Alguna sugerencia? gracias desde ya.
Hola, que buen video! muchas gracias por la información. Aprovecho a hacer una consulta, yo aún nunca use la ESP32. Vengo del ATmega328p (desde Arduino). Mi pregunta es por la memoria no volatil de la ESP32 ¿Tiene memoria EEPROM para usar? ¿Cúal es su capacidad? Busque en el datasheet pero no me quedo claro. Desde ya muchas gracias!
Ayuda!!, sigo tus videos al pie de la letra, son muy buenos. pero me larga este error el ESP32 y se reinicia varias veces.. Rebooting... ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0018,len:4 load:0x3fff001c,len:1044 load:0x40078000,len:8896 load:0x40080400,len:5828 entry 0x400806ac E (10201) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time: E (10201) task_wdt: - IDLE0 (CPU 0) E (10201) task_wdt: Tasks currently running: E (10201) task_wdt: CPU 0: muestreo_audio E (10201) task_wdt: CPU 1: loopTask E (10201) task_wdt: Aborting. abort() was called at PC 0x400d3aaf on core 0 Backtrace: 0x4008b9c8:0x3ffbe170 0x4008bbf5:0x3ffbe190 0x400d3aaf:0x3ffbe1b0 0x40084a55:0x3ffbe1d0 0x400811b7:0x3ffb90d0 0x4008121d:0x3ffb90f0 0x400d0c63:0x3ffb9110 0x4008867d:0x3ffb9140
👨🏻🎓 Aquí el Curso Completo de Internet de las Cosas Masterclass (IoT) 👉🏻con el 95% OFF!!
🔥 Aplicar el Súper Cupón Aquí 👉🏻 cursos.ioticos.org
No te imaginas lo grande que acabas de hacer con este video, a la comunidad es una MARAVILLOSA CONTRIBUCION, MUCHÍSIMAS GRACIAS
Justo lo que necesitaba para no dormir más..
Saludos
Gabriel
GENIO DIVINOOOOO!!!!
Tengo un proyecto dando vuelas hace 1 año: Sensor, camara y FTP. Hace 2 meses estoy con la ESP32 y hoy al fin se como usar el otro nucleo gracias a vos!
No daba pie con bola, es mas, tengo un proyecto que baje de la gente de BnBe Club, para modificarlo y adaptarlo al mio. Con esto, arranco desde cero, en el loop trataré de dejar la conexion a FTP, y en el otro, que labure el sensor y la camara...A PROBAR!!!!!
Excelente pude resolver con esto WEB serve y lectura de sensores.....GRACIAS totales....
Me acabas de hacer muy feliz! que maravilla, muchas gracias por el aporte y ya me considero un IoTico mas!!! abrazo
Que buen resumen de RTOS 👏👏👏
Lo has explicado muy bien, te estoy agradecido
Muy pero muy agradecido. Este vídeo es muy útil. abre las puertas para desarrollos de otro nivel. Gracias . Eres el mejor!
Boa noite Mestre, excelente aula.
Um grande abraço.
muchisimas gracias un gran aporte a la comunidad ESP32
Carnal!!! me agradó tu explicación, limpia sin relleno y muy entusiasta al hacer las cosas, Dios te bendiga en tus trabajos :D
¡Esto está muy loco!
Muchas gracias, servirá justamente para un proyecto de IoT que tengo en mente.
¡Infinitas gracias!
y pensar q con un micro atmega 328 me ha tocado ponerlo a escuchar de todo enviar y bajar sin usar delays para poder seguir ejecutando demas tareas, ,muy util lo q comparte!
wowww. si que mola hahha usar los 2 nucleos. pues el ESP32 ya tienen 4 nucleos. fiu fiu esto se viene grande.
Hola Pablo, excelente explicación. Que genial... Se abre un abanico de posibilidades al poder gestionar hilos de procesos en el esp32... Gracias Maestro!
ioticos impresionante!!! espectacular !!!, siempre quise saber como funcionan 2 procesadores y basta de interrupciones!
Extraordinario video tutorial, muy instructivo, y estoy contigo de mucho respeto el de la concurrencia de procesos, casi invadiendo las competencias de los sistemas operativos. Bravo!
WOOW esto es súper potente. No sabía que la ESP tenía esta capacidad y se podía dividir las tareas. Se acabó eso de tener un loop que hiciera 1000 funciones JAJAJAJ muchas gracias por la explicación y con miles de ganas de darle caña a la masterclass de IoT!!
Muchísimas gracias por el aporte, lo implementare en mis proyectos de facultad!. Cada vez me enamoro más de la ESP32 jajajaj. Saludos!.
Muchas gracias excelente video, Quedo agradecido por la atención: Cuando ejecuto
void loop(){
DateTime now = rtc.now();
printDate(now);
}
Obtengo la fecha y hora correcta: 2021/5/12 (Mie) 22:38:30
Pero cuando ejecuto en el núcleo 0
void loop0(void *parametro){
for (;;) {
Serial.println("En nucelo 0 -> " + String(xPortGetCoreID()));
DateTime now = rtc.now();
printDate(now);
delay(1000);
}
vTaskDelay(10);
}
La fecha y hora salen datos errados. 2165/165/165 (Mar) 165:165:85
Quedo agradecido por la orientación.
Buenisimoo justo tenia que sensar corriente y mandarlas por mqtt y no podia, y no sabia xq, muchas gracias por la info!!
Se inicio el uso de semáforos y flag, hasta donde llegaremos!!!, excelente.
Excelente!! Esto es lo máximo! Con esto las aplicaciones se pierden de vista.
Buenisimooooo el mejor video que e visto sobre ESP32.
Buenas noches. excelente las explicaciones, es posible que de pronto realice un video donde nos explique como instalar y configurar el platformio para usarlo con el esp32.
De antemano muchas gracias por tomarse el tiempo para realizar estos videos.
lo esperamos
Que buen video. Creo que de los más claros que vi. Años de hobby con Arduino.
Hola caballero, saludos desde Bs. As.!!!
Usted no sabe lo maravilloso que es saber que puedo utilizar tareas programando con el IDE de Arduino! Vengo trabajando desde hace un año con ESP_IDF dentro de Eclipse y lamentablemente me es muy dificil utilizarlo, es aprender FreeRTOS y no es tan clara los ejemplos de aplicacion. Mucho mas facil asi, debido a que tambien hay mucha mas informacion con ejemplos del ESP32 en Arduino. Infinitas gracias!
increible. nunca es suficiente informacion.
Che qué bien que explicás!
Muy buen aporte, excelente. Ahora yo necesito que una funcion en particular se ejecute en el otro core, es decir mi main loop usando un core y eventualmente se llama a otra funcion y cuando eso ocurre, esta se ejecute en otro core/thread liberandome al main loop para que siga con lo suyo. La funcion claro esta, se ejecuta una sola vez por cada llamada del main loop
Me llamo la atencion el no conflicto de ambas tareas trabajando sobre un mismo modulo de harware el puerto serial en este caso, lo que me da la idea de que los proceso se realizan tambien en secuencuencia y no el paralelo.
Fue casualidad... En algún momento iba a causar conflicto.
Excelente video. Gracias y saludos!
Hola Pablo. Estupendo por fin consigo conectar. Me encanta tu curso y tus vídeo-tutoriales, como siempre tan didácticos y explícitos de los que aprender. Te prometo que sigo tus trabajos y ya iré preguntando las dudas que surjan. Lo dicho un placer estar otra vez por aquí.
muy interesante...gracias
UUU buenisimo, me salvó.
Es muy interesante aprender sobre esto, no tenia idea que eso exista solo he trabajado con arduino, excelente explicación
¡Soy el subscriptor #60.000! SUPERLIKE...
Un vídeo fantástico, justo cuando he empezado a necesitar estos conocimientos en el trabajo aparece este vídeo tan reciente.
Perfectamente explicado!! +like +sub!
Es fantastica esa demostracion... hace un tiempo hice un proyecto con arduido donde ejecutaba diferentes pulsos constantes en sus pines de salida y por su puerto serial, a traves de usb, le daba ordenes para detener o variar dichos pulso. el problema es que durante el proceso de lectura en el puerto serial se detenia para leer, y eso hacia que se perdiera la constancia de los pulsos... indiferentemente de que dentro del programa, simulara la simultaneidad. sentia que leia muy lento, imaginese cuando tenia que enviar alguna retroalimentacion de estatus de los pulsos en ejecucion. era una pesadilla mientras recibe y envia informacion. mis preguntas son, puedo evitar esa problematica si un procesador se encarga de la comunicacion y el otro de los pulsos? que tan rapido es la lectura de serial del esp32 con respecto a la de arduino?
Excelente tutorial, muchas gracias por tu aporte.
GRACIAS! increible tutorial :D
Gracias por comentar
Que loco !!!! Genial. Gracias por compartirlo.
Hola soy principiante y me ha parecido espectacular la velocidad de compilación y grabación al micro esp32. Puede saberse que herramientas software/hardware utilizas? Muchas gracias
Interesante dato , muy bien explicado lo implementaremos en nuestros proyectos. Saludos desde Colombia
acabo de recibir mi esp32 y lo estoy estrenando con tus videos, seguí los programas que realizaste paso a paso y todo funciono hasta la parte de agregar la cuenta para sumar los números, al compilar me arrojo un error, me fui al código que compartiste y lo copie y compile para eliminar posibles errores míos pero el error continua, no se a que se pueda deber pero si estoy muy interesado en la multitarea
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8740
load:0x40080400,len:5800
entry 0x4008069c
En núcleo -> 1
Guru Meditation Error: Core 0 panic'ed (Unhandled debug exception)
Debug exception reason: Stack canary watchpoint triggered (Task_2)
Core 0 register dump:
PC : 0x400d8ef8 PS : 0x00060f36 A0 : 0x800d8a04 A1 : 0x3ffb80d0
A2 : 0x00000208 A3 : 0x000001e4 A4 : 0xffffffff A5 : 0x3ffb8480
A6 : 0x3ffb8460 A7 : 0x00000008 A8 : 0x3ffb83e0 A9 : 0x3ffb80c0
A10 : 0x3ffb80e0 A11 : 0x3ff9c510 A12 : 0x000000ff A13 : 0x0000ff00
A14 : 0x00ff0000 A15 : 0xff000000 SAR : 0x00000010 EXCCAUSE: 0x00000001
EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff
Backtrace: 0x400d8ef8:0x3ffb80d0 0x400d8a01:0x3ffb83e0 0x400d155d:0x3ffb84a0 0x400d0c7e:0x3ffb84f0 0x4008a0a1:0x3ffb8530
Rebooting…
y se repite automáticamente
saludos
problema resuelto, 10000 de memoria ("batería") para el loop en lugar de 1000
@@hlozano32 Muchas gracias por compartir! tenia el mismo problema pero con tu solución me funciono!
Wow sos un dios, lei por algun lado que las variables globales ocupan bastante memoria.... podria usar 32 variables globales para las 32 entradas que tendre... o mejor diseño un modo de enviar que numero de sensor hizo un cambio y nada mas eso en solo 2 variables globales 1 el sensor 2 el dato
Excelente tutorial, yo todavía sigo fanático de los esp y wemosd1 pero voy a comprar un esp32 para empezar a conocer
Me interesa muchísimo! Justo estoy con un proyecto que requiere un loop super estable el cual solo me deja 3000us para imprimir en pantalla pero quiero usar una OLED i2C que me tarda en comunicar 10 veces más del tiempo que tengo. Así usando un núcleo para imprimir datos no me rompe el ritmo del loop principal
excelente explicación! completamente útil.
Excelente video me servira de mucho si no fuera mucha molestia podrias realizar un video sobre la comunicacion LoRa
Genio explicando, se puede usar bluetooth y wifi con este método? Gracias
Uff pero que fuerte muy buen tutorial esta genial!
Te amo perro😭💞
Hola esto lo explicas en el curso Iot bootcapm? O en que curso?.
Wow que maravilla. Tengo un proyecto en el que programare un juego Ludico y debo estar comunicandome con un tablero con Ws2812b y una app por Bluetooth. ¿Esto me aportaria un grna beneficio?
Pablo, una pregunta:
¿Cómo puedo conocer el consumo de recurso o mejor dicho porcentaje de ocupación de cada uno de los dos core de un esp32?
Me interesaría poder tener esa información en el esp32, así saber a que core asignar nuevas tareas. para poder hacer un balance de carga de mis tareas.
Muchas gracias.
sabes como hacerlo?
Impresionante!! Gracias
Excelente vídeo, felicidades!
Una pregunta... al usar los 2 núcleos, esto consume más batería?, saludos!!
@Ioticos Muy buen video, estoy aprendiendo mucho con ustedes, muchas gracias.
Pregunta: implemente lo recien aprendido en un pequeño proyecto que estoy realizando, en practica quisiera que ( como mensionado en el video) el loop principal se encargue solo de las comunicaciones y el loop 2 ( core 0 ) haga el resto. Me encontre con el problema de que mi pequeño TFT 0.96'' SPI dejo de funcionar en esta modalidad dual core, el display con otros sketch funziona pero con este no muestra nada, aunque si por la serial si se muestran los datos... alguna sujerencia? muchas gracias denuevo
Muy buen material, le felicito!
Excelente explicación me suscribo
Buen vídeo una consulta Ing. como puedo activar los fuses en el modulo esp32 conel fin de que no se pueda clonar la tarjeta o extraer el archivo .hex. Saludos
amigo en que parte exactamente se debe poner el condensador en el sp32 ?
muchas gracias en mi caso me daba error con una plca heltec lite ESP32 .. tuve que modicicar el valor de 1000 a tamaño de la pila a un valor más razonable. Un valor de 4096 palabras (que corresponde a 16 KB de memoria de pila), >>
xTaskCreatePinnedToCore(
loop2,
"Task_2",
4096,
NULL,
1,
&Task2,
0);
desde ya mil gracias
buen video, gracias!
Buenisimo
Es posible usar los dos nucleos al tiempo?
Que excelente demasiado genial
Hola, Excelente vídeo, pero me han surgido unos problemas con el uso del doble núcleo, puesto que me esta causando interferencia cuando hago uso del I2C en el núcleo principal mientras hago una lectura de censado en el otro núcleo. Podrías ayudarme con esto.....??
Hola a que se refiere con el tamaño de la pila ?
Consulta...
El deep sleep, que nucleo activa? Ambos o solo el 1? O el que le asigne?
Por ejemplo, mi esp32cam es un ftpserver, funcionando todo el tiempo (loop -> nucleo 1). Y en una tarea que se le asigne (nucleo 0) captura un valor sensado. Pero para no estar todo el tiempo activo, se me ocurre usar el deep sleep y que se despierte al "escuchar" algo. Se entiende? Igual es una duda existencial nada mas. Podria dejarlo escuchando todo el tiempo...
Excelente, si entendí bien, puede ser muy útil en aplicaciones que combinen sensores de distancia ultrasonicos, que requieren mucho tiempo de espera y mientras se pueden estar checando otros sensores, no?
Que gran video!
una pregunta, al aplicar este concepto a un código que estoy haciendo me reinicia el micro después de un tiempo y me manda la señal reboting, sabe como puedo arreglar este problema?
Muy bueno, te hago una consulta, lo hice y funciona bien, el unico problema que tengo es que cada 6 segundos me envia una señal por el tx0 lo cual me genera un conflicto porque la estoy usando para otra cosa esa salida, sabes por que puede ser? gracias.
Hola has trabajado xmarin con wroom32
increíble
El conocimiento es poder, muchas gracias, donde puedo tener acceso a ese tipo de informacion digamos un poco oculta?
Excelente toma tu like, queria preguntarte si se puede hacer una funcion que retorne una lista y poderla utilizar. Gracias
Una vez tuve q comunicar dos arduino uno que controlaba servomotores y el otro para los sensores 😦 ahora solo lo hago con un equipo… gracias
en el ultimo ejemplo no son 3 loops independientes, ya que no tiene 3 nucleos, dos procesos se ejecutan en un nucleo como rtos, pero deja de ser un proceso totalmente independiente, como si lo son loop1 y loop2
Pregunta se qué son dos microcontroladores diferentes, pero tiene una programación muy rebuscada en C en comparación a los PIC, siempre use PIC, quiero comenzar con ESP pero que rebuscado es el C comandos raros estoy viendo que nose que onda!!
Muy bueno ¿Probaron cómo cambia la velocidad de procesamiento? Deberían multiplicarse x 2 (un poco menos) los mflops, para saber que efectivamente son dos procesos en paralelo
Hola Ioticos..
Tengo el interés de usar el 2 núcleo del esp32 para tareas de conexión a wifi y de envío de datos a la nube, sabes si es posible? o si tienes algún código similar para comenzar..
Buenas noches, tengo algunas preguntas con respecto a tu curso, primero me gustaría saber el valor del curso q aparece es mensual o solo, se, paga una vez sueno bobo pero es super relevante, otra pregunta, si yo lo que quiero conseguir es una página privada sin hosting ni servidores externos como, porq tu nos explicas q es usando Amazon o google pero no un servidor personal en casa por ejemplo si lo quiero solo para controlar mi casa espero preguntara bien para q me expliques bien por favor, muchas gracias.
Hola. Excelente video. Terminé viendo esto porque en el curso de Masterclass de IoT usás el segundo CORE. Pero me queda la duda.. .Dos loops sobre un mismo código. Con qué criterio usa un loop u otro? Y al hacer delay no lo bloqueás? Porque veo el delay (2000) no es bloqueante. Saludos!!
El entorno Arduino si te permite acceder a los procesadores individuales, pero usando el SDK espressif de el fabricante es mejor aún,
Se puede hacer esto mismo o algo similar con el ESP8266??
Muy buena explicación, tambn es mi favorito el esp32. Alguien sabe que IDE se utiliza en este vídeo?
Platformio
Hola. Tengo un problema. Me sale un error de que ninguna funcion Task watchdog got triggered. The following tasks did not reset the watchdog in time: -IDLE0 CPU0. A pesar de que le puse el vTaskDelay(10) al final. La cosa es esta, en cada bucle le estoy haciendo correr como 10E8 operaciones de punto flotante y tarda varios segundos hasta que se completa el loop ¿Será que tengo que poner el vTaskDelay antes? ¿Por qué lo pones después del for(;;){}? Ahí nunca se ejecuta. Igual, lo puse adentro y es lo mismo. Creo que el problema es que demora demasiado tiempo en el loop2 y por eso salta. Te preguntarás para que le hago hacer eso. Es para ver si al hacer andar los 2 nucleos en paralelo se duplican los flops. Ya probé con un nucleo y obtuve 555Mflops para float, y 109Mflops para double.
Ya funcionó. Le bajé a 1E+5 operaciones de punto flotante, y me dio, para variables double, 105Mflops en cada nucleo por separado. Considerando que en monotarea me daba 109Mflops, creo que es más que evidencia de que es procesamiento totalmente en paralelo.
Una pregunta
¿Cuantos "task" puedo poner como máximo en el programa sin que de problema ?
hola buen dia, sabes donde puedo conseguir el frimware de la placa ESP 32 para poder comenzar a programar muchas gracias
Buenos días desde España.
¿Esto lo explicas en el curso de IOT?
Gracias.
I can see an RF Receive and RF transmit modules! Can they be used to transmit data like Bluetooth without any external additional board? That would be so great
I’m taking notes about this for nexts chapters! Thanks!
Excelente video. Falta el video del nucleo ULP. Saludos
Qué cierto lo que dices...! ufff vamos a ver cuántos se prenden al mundo assembler :(
Hola, cargue el programa en un esp32s, y cuando lo ejecuta el monitor serial tira un monton de error
ELF file SHA256: 0000000000000000
13:14:39.672 ->
13:14:39.672 -> Rebooting...
13:14:39.672 -> ets Jun 8 2016 00:22:57
13:14:39.672 ->
13:14:39.672 -> rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
13:14:39.672 -> configsip: 0, SPIWP:0xee
13:14:39.707 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
13:14:39.707 -> mode:DIO, clock div:1
13:14:39.707 -> load:0x3fff0030,len:1184
13:14:39.707 -> load:0x40078000,len:12804
13:14:39.707 -> ho 0 tail 12 room 4
13:14:39.707 -> load:0x40080400,len:3032
13:14:39.707 -> entry 0x400805e4
13:14:39.840 -> Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
13:14:39.840 ->
13:14:39.840 -> Core 1 register dump:
13:14:39.840 -> PC : 0x4008a059 PS : 0x00060133 A0 : 0x80089c7c A1 : 0x3ffb26b0
13:14:39.840 -> A2 : 0x3fa2f00c A3 : 0x3ffb887c A4 : 0x00000004 A5 : 0x00060123
13:14:39.875 -> A6 : 0x00060123 A7 : 0x00000001 A8 : 0xffffffff A9 : 0x00000000
13:14:39.875 -> A10 : 0x3ffb887c A11 : 0x00000001 A12 : 0x00000003 A13 : 0x00000000
13:14:39.875 -> A14 : 0x007bee78 A15 : 0x003fffff SAR : 0x00000003 EXCCAUSE: 0x0000001c
13:14:39.875 -> EXCVADDR: 0x00000007 LBEG : 0x40085b54 LEND : 0x40085b5f LCOUNT : 0xffffffff
13:14:39.875 ->
13:14:39.875 ->
13:14:39.875 -> Backtrace:0x4008a056:0x3ffb26b00x40089c79:0x3ffb26d0 0x40087dfe:0x3ffb26f0 0x40088296:0x3ffb2710 0x400d1f78:0x3ffb2750 0x400d135d:0x3ffb27b0 0x400d1041:0x3ffb27f0 0x400d1922:0x3ffb2820
Cual puede ser el error, gracias
Listo ya lo solucione, aumentè el valor de la pila a 2000 y funcionó.
Genial video!! de igual forma, el código tal cual lo compartís, no me funciona. Me da un error por el puerto serial:
Guru Meditation Error: Core 0 panic'ed (Unhandled debug exception)
Debug exception reason: Stack canary watchpoint triggered (Task_2)
Core 0 register dump:
Alguna sugerencia? gracias desde ya.
Hola, que buen video! muchas gracias por la información. Aprovecho a hacer una consulta, yo aún nunca use la ESP32. Vengo del ATmega328p (desde Arduino). Mi pregunta es por la memoria no volatil de la ESP32 ¿Tiene memoria EEPROM para usar? ¿Cúal es su capacidad? Busque en el datasheet pero no me quedo claro. Desde ya muchas gracias!
Si claro! Y tiene dependiendo del modelo 4 Megas!!!! Además un atmega 328 corre a 16 mhz, la esp vuela a más de 200!
Ayuda!!, sigo tus videos al pie de la letra, son muy buenos. pero me larga este error el ESP32 y se reinicia varias veces..
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
E (10201) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (10201) task_wdt: - IDLE0 (CPU 0)
E (10201) task_wdt: Tasks currently running:
E (10201) task_wdt: CPU 0: muestreo_audio
E (10201) task_wdt: CPU 1: loopTask
E (10201) task_wdt: Aborting.
abort() was called at PC 0x400d3aaf on core 0
Backtrace: 0x4008b9c8:0x3ffbe170 0x4008bbf5:0x3ffbe190 0x400d3aaf:0x3ffbe1b0 0x40084a55:0x3ffbe1d0 0x400811b7:0x3ffb90d0 0x4008121d:0x3ffb90f0 0x400d0c63:0x3ffb9110 0x4008867d:0x3ffb9140