Grbl importado al ESP32

Si está construyendo un CNC o un láser, existe una gran posibilidad de que use Grbl para moverse. También es una apuesta bastante segura que terminará con alguna variante del Arduino en un controlador de motor. Es barato, fácil de configurar y usar, y efectivamente el estándar de la "industria" para las máquinas de bricolaje, por lo que no hay escasez de información. ¿Qué no amar?

Bueno, en realidad bastantes cosas. Cómo [bdring] explica, Grbl lleva la capacidad de Arduino al límite; convirtiéndolo en una especie de callejón sin salida para el desarrollo futuro. Además, el Arduino debe estar conectado a la computadora host a través de USB para funcionar, una idea bastante curiosa para muchos en 2018. Estas fueron solo algunas de las razones por las que decidió llevar Grbl a la placa ESP32.

En términos de precio el Arduino y el ESP32 son casi iguales, pero el ESP tiene la ventaja de ser muchos más potente que el semental italiano de 8 bits. Tiene mucho más flash y RAM, y quizás lo más importante, incluye Wi-Fi y Bluetooth al instante. Aún no se ha colocado en una placa para contener los controladores del motor como el Arduino, pero más allá de eso [bdring] Creo que el ESP32 está lo más cerca posible de la plataforma Grbl perfecta.

[bdring] informa que llevar el código al ESP32 no fue terrible, pero tampoco fue exactamente un paseo por el parque. La mayor parte del código pasó sin demasiados problemas, pero cuando se trata de partes que necesitan una sincronización precisa, las cosas se complicaron. El ESP32 utiliza un sistema operativo en tiempo real (RTOS), que no está muy emocionado de renunciar al hardware. Desactivar RTOS era una opción, pero eso sería Bluetooth y Wi-Fi nucleares, por lo que obviamente no es una solución ideal. Finalmente, descubrió cómo interrumpir más o menos bien el juego con RTOS, pero menciona que aún queda trabajo por hacer antes de que esté listo para lanzar la firma al público.

Si ha estado navegando en La-Tecnologia durante un tiempo, es posible que recuerde [bdring]. Tiene una verdadera habilidad para mover cosas, y recientemente ha creado algunas asombrosas pequeñas máquinas CNC que definitivamente han llamado nuestra atención.

  • Robert Mateja dice:

    Un desarrollador de GRBL declaró recientemente que su puerto ARM está cerca.

    • Jimf dice:

      He estado ejecutando la versión Arm lpc1768 / 1769 durante aproximadamente un año. Grbl-Lpc funciona con el Smoothieboard y es compatible. Conduce mi láser de CO2.

      • Ø dice:

        Esto me recuerda, ¿hay algún esfuerzo para llevar / escribir un firmware de impresora 3D para el ESP32?
        Finalmente, según el software, un controlador de impresora 3D funciona de manera bastante similar a un controlador CNC.

        • Barton Dring dice:

          Es probable que el ESP32 no tenga suficiente E / S para la impresión 3D con las funciones generalmente deseadas, como una tarjeta SD y una pantalla.

          • Ø dice:

            Ojalá cualquier velocidad baja o media pudiera manejarse mediante registros de turnos.
            Y técnicamente, una pantalla podría omitirse favorablemente para la máquina que aloja la página web con la misma información que encontraría en la pantalla.

          • Lukilukeskywalker dice:

            Como alguien dijo, se puede hacer con registros en mayúsculas. Creé un trazador con el esp12 (esp8266) y casi todo estaba conectado a través de cambios en el registro. Tenía una pantalla, control de servicio y se podía controlar a través de wifi. El número de PIN no fue el problema. El esp32 tiene más pinout que el esp12, y tiene un núcleo dual que resolvería algunos problemas que tuve con el esp12

        • cnlohr dice:

          No necesita ningún cambio de registro, también el I2S en modo paralelo síncrono de 16 bits le permitiría generar salidas directamente sin lógica adicional. Sería un mejor rendimiento en todos los ámbitos con un control de pines de hasta 25 ns. No estoy seguro de por qué nadie lo arruinó.

      • rubypanther dice:

        Smoothieboard ya es una bifurcación GRBL también para personas que pueden tolerar C ++.

    • fonz dice:

      La migración de GRBL a ARM es fácil, la nueva versión de GRBL suena mucho más que un puerto con muchas características mejoradas y abstracción de hardware para facilitar la migración a otros procesadores.

  • SimonJ dice:

    ¡Qué bueno ver eso!

    En general, si alguien está interesado, comencé a llevar Marlin al ESP32 y ahora está en el repositorio principal 2.0.x, todavía faltan algunas cosas, pero es lo suficientemente bueno para imprimir. También diseñé una placa para ejecutar esto, todo es de código abierto aquí https://github.com/simon-jouet/ESP32Controller

  • Miguel dice:

    Mucha gente le da a FreeRTOS una mala reputación como este tipo porque no se toman el tiempo para aprender a codificar correctamente RTOS.

    • rubypanther dice:

      Incluso TI usa FreeRTOS para su ecosistema de controladores. Me gusta correr sin él siempre que puedo, porque el sistema operativo previene cuando no lo necesitas, pero cuando lo necesitas, FreeRTOS suele ser el correcto.

      El problema no es ni siquiera saber cómo codificar RTOS "correctamente"; el problema está en su concepto de la aplicación. WIFI es sensible al tiempo. El ESP32 tiene recursos muy limitados. El desarrollador no escribe sus propios controladores wifi. Por lo tanto, si usa wifi, no tiene un programa en tiempo real. Puedes reducir los casos en los que te muerde con muchos juegos, por supuesto.

      Personalmente, no me importa ejecutar dos circuitos integrados, uno para el wifi y la GUI, y otro para el control de la máquina. Y luego, debido a que el control de la máquina solo hace una cosa, ni siquiera necesita un sistema operativo. Pero si realmente lo quisiera con el mismo chip, probablemente apagaría el wifi mientras se ejecutan los comandos y luego lo restablecería. Los botones de inicio / parada reales deben ser botones de dispositivo de todos modos por seguridad.

      • stefan_z dice:

        ¡ESTA!
        Intente generar una señal limpia de 2 MHz en cualquier pin ESP32 - ahora pruebe a 8 MHz o más - a la velocidad del ESP32. Solo facciones, pero a diferencia del Arduino, lo pasarás mal ...

    • Vlad dice:

      Estoy de acuerdo contigo Mike. Los RTOS son increíbles y puede evitar que lo interrumpan y puede acceder a temporizadores e interrupciones de hardware

  • naviatán dice:

    ¿Cómo se compararía esto con Klipper? Klipper usa un host Arm para hacer el trabajo pesado y controla el Arduino solo para la E / S.

  • Fred dice:

    Mi solución fue usar esp32 y arduino. El esp se usa para cargar y administrar el archivo gcode. El arduino acciona directamente los controladores del motor. Entonces, esp tomará el gcode, descifrará una gran parte de él y creará un gran búfer de movimientos que se comunicará con el arduino con unos pocos pines. El arduino ejecutará los comandos según el tiempo que se le asigne. También se comunica a través de un búfer de movimientos que ha completado, por lo que el esp32 puede mostrar dónde está el CNC. Los búferes dobles significan que no es necesario sincronizar los dos para que funcionen. Simplemente "hablan" cuando tienen la oportunidad.

    • mvadu dice:

      Fred, ¿está abierto? Me gusta este enfoque porque dejará que las soluciones sean lo mejor de sus propios mundos y dejará margen para futuras expansiones de forma independiente.

  • Ren dice:

    "Eventualmente descubrió cómo interrumpir más o menos bien la reproducción con RTOS, pero menciona que aún queda trabajo por hacer antes de que esté listo para lanzar el firmware al público".

    ¿Por qué no ponerlo en git y abrirlo para que otros ayuden?

    • Jon Raymond dice:

      https://github.com/bdring/Grbl_Esp32

  • Peso dice:

    ¿Semental italiano? Jajaja

    https://bunnydud.files.wordpress.com/2013/09/disco-stu-jacket.jpg

    Hey: Disco Stu no hace publicidad.

  • Miguel dice:

    Prefiero tener el puerto GRBL a ARM en su lugar. El sp es agradable y agradablemente barato, pero en última instancia, los procesadores ARM tienen muchos más gruñidos y posiblemente podrían interrumpir el mercado comercial de CNC. Teniendo en cuenta que hay muchos tipos diferentes de controladores con diferentes subconjuntos de comandos (el código G es estándar, pero cada fabricante lo extiende con su propio subconjunto de comandos especiales), tener un controlador de código abierto podría conducir a una unificación de la codificación G comandos especiales. Esto sería sorprendente y reduciría el número total de postes necesarios y el lado de soporte de la ecuación, agregando así una eficiencia adicional en la fabricación de cualquier producto que requiera mecanizado CNC.

    • Barton Dring dice:

      Tienes que mirar mi puerto PSoC5. Esto es ARM y las funciones FPGA similares son perfectas para CNC.

      PSoC 5 Port Of the Grbl 1.1 CNC Controller

    • mac012345 dice:

      "Tener un controlador de código abierto"

      ¿Te refieres a un linuxCNC / EMC2 / Machinekit que está mal, 18 años?
      No habrá unificación, los pasatiempos grbl son una pequeña parte de una base CNC instalada.

      • fonz dice:

        y afaik GRBL generalmente hará las cosas como lo hace linuxcnc

      • Miguel dice:

        "No habrá unificación"

        oye, ¿puedes decirme los números de la lotería de la próxima semana? oh no puedes Pensé que podría predecir el futuro con su declaración de certeza de que no habrá unificación ... puede que no haya unificación, porque los fabricantes de controladores están agregando su salsa secreta para mejorar sus controladores, pero todo lo que se necesita es una solución de código abierto. para dar igual igualdad. o mejor rendimiento para que los fabricantes de CNC comiencen a usarlo. Un controlador de código abierto basado en brazo tendría el potencial de crear un escenario para cualquier asociación que tenga ventajas efectivas en todo el proceso de fabricación comercial de CNC. Pero bueno, tal vez sea solo un idealista que intenta encontrar una solución que beneficie a mucha gente y resuelva muchos dolores de cabeza. Tal vez debería haber dicho que esto tiene abierto el controlador DERECHO, pero no esperaba que nadie fuera tan pedante con mi comentario.

        Después de todo, si la gente nunca intentara mejorar o refinar procesos / productos, no tendríamos el mundo que tenemos hoy o la mitad de los chips que tenemos hoy, el 486 estaría bien, ¿verdad?

        • Louloulou dice:

          Recuerdo que me compré mi chip V20 y pensé, vaya, la mierda 8086.

    • bosque eterno dice:

      Si el Arduino puede hacerlo, el ESP probablemente pueda hacerlo siempre que calculen el tiempo. ARM es excelente, pero aparte del problema de una sola fuente, el ESP tiene muchas más opciones solo por sus núcleos duales, WiFi, Bluetooth, etc.

    • Phil el Seattle dice:

      Entonces realmente tienes que comprobar grblHAL. https://github.com/terjeio/grblHAL. Algunas opciones: BSTM32F1xx a iMXRT1062.

  • Mate dice:

    Usar I2S sería una mejor opción para el ESP32. Felizmente hará 2 canales a 32 bits y 192 khz a través del puerto I2S. Tome eso hasta un cambio de registro de 32 bits y puede conducir 16 pasos a 384 kHz y sin fluctuaciones si mantiene los búferes llenos. Hice algo similar usando el ESP32 para conducir un I2S DAC para hacer movimiento para curvas láser. El ESP no suda sin asentarse en absoluto.

    Proyecto similar sobre el 8266 aquí -
    https://github.com/lhartmann/esp8266_reprap

  • murciélago dice:

    enchufarlo en USB? mi mini profesional funciona con un adaptador serial HC-06 bluetooth ttl - envío cosas con UGSPlatform desde la antena macbook sin ningún problema.

  • Louloulou dice:

    No entiendo por qué es un problema difícil. El ESP 32 tiene dos CPU independientes, diseñadas con una tarea en tiempo real del usuario en mente desde su inicio. ¿No podría simplemente poner todo su código en tiempo real en una de las CPU y dejar que la otra haga el wifi?

    Hace años, antes de que el ESP brillara en cualquier ojo, construí un controlador de movimiento trapezoidal con una reacción de codificación PID para manejar un BLDC trifásico completamente en hardware, en FPGA. Lamentablemente lo hice por dinero y no se me permite abrirlo sin el permiso de la empresa para la que lo hice. Si hay algún interés, podría renovar un proyecto y publicarlo ... Pero con las CPU potentes y baratas de hoy en día, probablemente ya no sea una forma sensata de hacerlo.

Isabella Ortiz
Isabella Ortiz

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *