Arduino en MBed

Pedro Molina
Pedro Molina

A veces parece que Arduino está en todas partes. Sin embargo, con una nueva saturación de procesadores de IoT, debería ser una gran tarea mantener el kernel de Arduino en todos. Escribiendo en el blog de Arduino, [Martino Facchin], El desarrollador principal de software de Arduino, habla sobre el problema al que se enfrentaron al dar soporte a dos nuevas placas nórdicas.

Las placas Nano 33 BLE y Nano 33 BLE Sense se basan en una CPU Nordic ARM Cortex M4. La respuesta obvia, por supuesto, es transportar el kernel de Arduino desde cero. Sin embargo, el equipo no quería dedicar tiempo a unas pocas tablas. Consideraron usar las bibliotecas nórdicas para interactuar con el hardware, pero dado que se trata de una fuente cerrada, en realidad no coincidía con la sensibilidad de Arduino. Sin embargo, al final adoptaron un tercer enfoque, que podría ser un desarrollo muy interesante: portaron el kernel de Arduino al sistema operativo Mbed. Incluso hay un ejemplo de una carga de croquis en Mbed disponible en [Jan Jongboom].

Por un lado, esto tiene dos ventajas principales: en teoría, Arduino ahora puede ejecutarse en todo lo que admita Mbed, lo cual es suficiente. En segundo lugar, aunque el sistema mantiene la simplicidad de Arduino, todo el sistema Mbed está disponible para los desarrolladores de Arduino y viceversa.

Por otro lado, podría argumentar que si tiene Mbed, realmente no necesita un Arduino. Aunque se trata de la simplicidad de Arduino, en realidad es un programa C ++ con dos funciones predefinidas y un IDE que crea su código sin tanta ayuda explícita como cabría esperar. Sin embargo, la amplia variedad de código que admite Arduino debería ser de interés, ya que simplemente podría usarlo desde el programa Arduino o Mbed sin mucho esfuerzo.

Esto podría popularizar algunos de nuestros proyectos favoritos de Mbed labs. Si quieres ver nuestro proyecto en Mbed, puedes transformarlo en un generador de señales.

Gracias [halherta] por la propina.

  • Luis dice:

    Deben pasar el tiempo haciéndolo correctamente. Nadie usará mbed para programar esto. Necesitan apostar más fuerte por el futuro

    • Jan Ciger (@ janoc200) dice:

      No diría “no”, pero combinaría dos marcos enormes solo para obtener, por ejemplo, Un sensor que habla a través de BLE a un teléfono / computadora es una locura. Estos SoC tienen muchos relámpagos, pero no ESO.

      Ah, y se pone mejor, si realmente desea usar BLE (o ANT), que es probablemente LA razón por la que elegiría estos chips (sus otros periféricos son bastante primitivos, en comparación con, por ejemplo, los chips STM32, NXP o Atmel / Microchip ARM) , entonces BLE no es compatible y necesita usar un proyecto ArduinoBLE (no se necesita mBed). Lo que, sorprendentemente, requiere que inicie el soft-blob de código cerrado de Nordic que realmente implementa la pila de radio y su propio RTOS (me pregunto cómo funcionará eso con mBed OS …).

      Entonces, lo que ganamos aquí además de desperdiciar muchos rayos (el dispositivo suave también se come una parte importante). El único caso en el que realmente no necesita el ejecutor de software es si desea utilizar su propio protocolo de radio o algo como ShockBurst (lo mismo que los populares chips nRF24L01 +).

      Peor aún, ArduinoBLE no es bueno en absoluto porque no funciona con las últimas versiones de los desarrolladores de software, por lo que muchas cosas no funcionarán correctamente. Intenté usar esto para un proyecto usando el SoR nRF52832 (la misma familia, solo una versión ligeramente “más pequeña” del nRF52840 – sin USB y algunas otras diferencias). El sistema de compilación se basa en una URL cableada donde descargar los binarios del software y Nordic los movió, por lo que las cosas fallan justo afuera de la puerta. Después de arreglar eso (muchas búsquedas e investigaciones en el rastreador de problemas de Github), descubrirás que necesitas una versión de software muy específica, ya que ArduinoBLE usa una versión anterior de la API nórdica. Una vez que finalmente enciendas eso, descubrirás que ahora tienes mucha debilidad cuando las cosas rompen lazos, se niegan a atar / emparejar, cuelgan, etc. gracias al obsoleto dispositivo de plástico. Sí …

      Honestamente, es mejor que uses el último SDK oficial, que es genial y tiene muchos ejemplos y documentos detallados. Solo espere una curva de aprendizaje STEEP, especialmente si nunca ha usado BLE antes (mejor lea algo antes, las cosas serán mucho menos aterradoras). No es tan principiante como Arduino, pero en realidad funciona y le permite construir cualquier cosa que se pueda usar con estos SoC; son excelentes para programas que funcionan con baterías debido al consumo de energía extremadamente bajo. Incluso con la radio encendida y la transmisión / publicidad, el chip solo necesita unos 10 mA de corriente. Y cuando lo duermes en el uA de un solo dígito …

      • Maave dice:

        Un buen resumen del razonamiento detrás de esta elección. Jugué con el nrf51822 y módulos similares para un tablero de juego Bluetooth. No es para principiantes. Tuve muchos dolores de cabeza con el compilador y el SDK. Mbed es la salida más fácil.

        Pero creo que estoy de acuerdo con el artículo: Mbed es bastante fácil para mí (desarrollador). No necesito que me pongan la placa Arduino. Quizás un principiante total preferiría el marco Arduino. Si Arduino y Mbed se integran bien, entonces esta podría ser una capa compatible muy buena para que Arduino admita más chips.

        • Jan Ciger (@ janoc200) dice:

          ¿MBed realmente funciona con estos chips sin el dispositivo de software propietario si desea compatibilidad con BLE? Soy un poco escéptico al respecto, ya que Nordio brinda soporte mBed pero no soy un usuario de mBed (tengo demasiados errores con el soporte de hw irregular y documentación mínima / inexistente a mi gusto).

          Porque si no, entonces el argumento espiritual de código abierto que hicieron sale por la ventana.

          Es más como un problema de los NIH: en lugar de ayudar al proyecto ArduinoBLE, que está tratando de admitir estos SoC, construyeron otra bifurcación / núcleo Arduino.

          • Maave dice:

            Todavía usa Softdevice

          • Jan Jongboom dice:

            Mbed OS envía su propia pila BLE (Cordio) y ya no depende de Softdevice para chips nórdicos.

          • Maave dice:

            @ Jan Jongboom
            ¡Estoy corregido! Cordio se ve hermosa.

      • John S. dice:

        > Honestamente, es mejor que use el último SDK oficial, que es excelente y tiene muchos ejemplos y documentos detallados. Solo espere una curva de aprendizaje STEEP, especialmente si nunca ha usado BLE antes (mejor lea algo antes, las cosas serán mucho menos aterradoras).

        Leí una publicación de blog recientemente que trataba sobre los conceptos básicos de BLE y también los conceptos básicos del uso de SDR nRF5 de Nordic para publicar el estado de un botón. Me pareció bastante fácil de seguir, por lo que también podría ser una buena introducción para otros:

        https://interrupt.memfault.com/blog/bluetooth-low-energy-a-primer

      • Dario Pennisi dice:

        Hola,
        probablemente necesite echar un vistazo más de cerca a lo que hacemos … La biblioteca Arduino BLE usa HCI para interactuar con el controlador de host subyacente en cualquier dispositivo BLE y en nuestras nanoplacas, esta es una interfaz con la pila Cordio de código abierto, no un dispositivo software .
        el Arduino BLE puede ser infame como usted dice, o puede que no lo sea, según nuestros socios, quienes lo probaron con varios chips diferentes (no solo nórdicos), en varios conjuntos de software y aprovechan el soporte recientemente lanzado para central.

  • Miguel dice:

    Arduino tiene que tomar su IDE obsoleto de los 80 y obtener los tiempos. ¡¡¡Es una broma total !!!

    • Hermano dice:

      Pero la increíble simplicidad es la verdadera tracción. Pon a un no desarrollador frente a un IDE con muchos botones, paneles, talleres y preferencias y se vuelve abrumador. Arduino IDE es casi perfecto para trabajos de pasatiempo de nivel de entrada. Hay algunas cosas que me gustaría que se le agreguen, pero tampoco quiero quitarle la experiencia de la edición de texto burdo que muestra de dónde venimos.

    • hacha dice:

      Si estás hablando de tiempo, tienes que pagar por platform.io

    • Jan Ciger (@ janoc200) dice:

      Puede usar VS Code o PlatformIO (que es casi lo mismo) para Arduino. Nadie te está obligando a usar el IDE primitivo (intencionalmente) si ya lo has crecido demasiado.

      El IDE básico existe por una razón: si le da un código VS a, p. Ej. Ingeniero mecánico o músico, estarán completamente jodidos. Con este sencillo editor, cualquiera puede copiar y pegar un “boceto” y hacer clic en el botón “Cargar”. Y funciona.

      Arduino no tiene como objetivo competir por un IDE adecuado ni nada parecido a Keil, así que deja de vencerlo.

  • algún chico dice:

    Sí, otra capa de código para que ARM funcione tan rápido como PIC12 …

    • norte dice:

      El código C ++ no tiene “capas”, los enlaces modernos son realmente buenos solo para incluir el código necesario, y se ha trabajado lo suficiente para reducir el costo de C ++ en los microcontroladores. Si no usa cosas, no está en su ejecutable. Tan sencillo. Por ejemplo, Andy Brown ejecuta programas C ++ en pequeños dispositivos STM32M0 sin pérdida de rendimiento y casi sin C ++ – arriba. Ah, y por cierto, ¿cómo va gcc en PIC? ¿Cómo obtengo un compilador que admita -Os?

      • Jan Ciger (@ janoc200) dice:

        Perdiste su objetivo. No se trata de C ++ sino de Arduino + mBed. Arduino es poco conocido por su código rápido, algunos de los problemas centrales de los que dependen muchas bibliotecas (como digitalWrite () para E / S) son increíblemente inflados y lentos debido a lo ineficiente que está escrito.

        E incluso para C ++, lo que escribe es cierto si el código está escrito en un estilo moderno, utilizando muchas plantillas, expresiones constantes y funciones similares. Incluso el mejor compilador de C ++ del mundo no puede hacer mucho con código escrito como Arduino.

        mBed no es mucho mejor: dependen en gran medida de las bibliotecas HAL agotadas para la abstracción de dispositivos y son universalmente aterradoras. Por lo general, es C-escrito en C ++, macros preprocesadas en abundancia, capas y capas de resúmenes de semi-tiza. El STM32 HAL es conocido por esto. Es así porque el código base es antiguo y tiene que compilarse incluso con compiladores antiguos no estándar de varios proveedores de herramientas patentadas y no solo con el GCC / Clang más nuevo.

        Y luego está el tamaño del código …

        • txf dice:

          > STM32 HAL
          Es tan impresionante que han logrado hacer que sus controladores de gama baja sean más comprensibles que sus resúmenes de HAL de alta gama. Su HAL debe sacarse y dispararse.

        • Dario Pennisi dice:

          Lo que creo que puede estar perdiendo es que si, por un lado, siempre puede crear su código en un ensamblador, simplemente adaptando cada instrucción para aprovechar cada ciclo de reloj disponible, la mayoría de las veces hoy en día esto no es un rendimiento útil.
          con software en capas de alto nivel, se puede aumentar el tamaño del código y la velocidad, pero la facilidad de uso, la modularidad, la reutilización se acelera y hace posible tener una plataforma como Arduino, que proporciona acceso instantáneo a toneladas de diferentes periféricos, sensores, actuadores para los que tiene controladores, código de muestra, programas terminados, etc.
          todo el propósito de la abstracción es configurar una arquitectura de software que sea fácilmente transportable a varias plataformas diferentes con un esfuerzo mínimo y esto, por supuesto, hace que el código sea un poco más complejo de lo que podría ser si solo tuviera como objetivo una placa / chip.
          La introducción de mbed es un paso importante para Arduino, ya que no solo brinda la capacidad de realizar una transición rápida a nuevas plataformas, sino que también ayuda a reducir el consumo de energía e introducir una verdadera multitarea, que en un futuro cercano ayudará a eliminar las complejas máquinas de estado necesarias en la actualidad. para operaciones paralelas. .

  • Bunsen dice:

    “… combinar dos marcos enormes solo para hacer, por ejemplo, un sensor que habla a través de BLE con un teléfono / computadora es una locura”

    Entonces, la mayor parte de la programación se realiza cuando el silicio es más barato que el tiempo del desarrollador (mire Slack, cuyo marco ancho se encuentra en GB de RAM para que puedan incrustar emoji en su cliente IRC). Ese es el tipo de objetivo del mercado de Arduino: personas que comprarán una placa de $ 30 para hacer parpadear algunos LED, porque usar un chip de $ 0.50 para hacer parpadear esos LED es difícil y requiere mucho tiempo.

    Si está asumiendo un proyecto de producción en masa en el que pagará el costo del silicio un millón de veces, o simplemente está disfrutando aprendiendo las habilidades para usar su hardware de manera efectiva, entonces ya está mirando más allá de Arduino.

    • Bunsen dice:

      ¿Hay alguna razón por la que La-Tecnologia separa las respuestas de los padres, o simplemente tira d20 y rompe el flujo de la conversación en 1?

    • Jan Ciger (@ janoc200) dice:

      Eso es cierto, pero la cuestión es que hay un kernel Arduino para la serie SoC nRF5x:
      https://github.com/sandeepmistry/arduino-nRF5

      Y no necesita mBed. Sin embargo, necesita el dispositivo de plástico nórdico para BLE, así como su configuración.

      Por lo tanto, duplicar el esfuerzo, con la única “ventaja” de un tamaño de código enorme que reducirá significativamente los rayos utilizables en estos chips.

  • saleta tinker dice:

    ¿Por qué todos los comentarios negativos sobre la hinchazón? Las bibliotecas de proveedores de microcontroladores ya están bastante infladas. También lo son las bibliotecas Mbed, que generalmente operan además de las bibliotecas de ventas. Y también las bibliotecas de Arduino.

    NewsFlash: Todo está inflado actualmente. Tiempo de comercialización de documentos agregados y API bien diseñadas en todo momento. Y esto no solo ocurre en el campo integrado sino en todas partes.

    Entonces, ¿qué son unos 10 KB más de hinchazón? Especialmente cuando la ventaja es que puede usar las API de Mbed y Arduino en el mismo programa / programa.

Deja una respuesta

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