Junta de depuración de propósito especial

Introduccion


Cuando se desarrolla un dispositivo para probar su circuito eléctrico, generalmente se usa una placa de depuración. Nuestros desarrolladores no son una excepción aquí, el beneficio de los aspectos positivos de este enfoque es obvio: los costos son menores que la producción de un prototipo o lote de prueba. Y si aparecen errores en el proceso o aparecen nuevas soluciones para algunas tareas, son mucho más fáciles de aplicar.

Sin embargo, a menudo nos enfrentamos con el hecho de que las depuraciones ofrecidas en el mercado requerían un refinamiento significativo y / o módulos adicionales. Al mismo tiempo, aparecieron restricciones adicionales que dependían de un dispositivo en particular. Si estamos desarrollando una placa de control y un módulo inalámbrico desde cero, entonces el orden relativo está en la placa de pruebas.

Los problemas comienzan cuando se juega un segundo escenario más frecuente y estamos tratando con la modernización de una técnica ya desarrollada. Debido al principal factor limitante, el precio final del producto, el cambio en el circuito eléctrico debe ser mínimo. En la etapa de diseño, muchos han querido mucho a la "granja colectiva".


Fuente

Que hacer


Los tableros de control en los electrodomésticos suelen ser simples y de baja tecnología: su base impresa es de una sola capa, por un lado no tiene metalización y una máscara. La simplicidad de estas placas está determinada por el precio final de los propios dispositivos: cuanto más complicada es la producción de equipos, más caro tendrá que venderse. Está claro que el consumidor masivo no querrá y no pagará en exceso por complicaciones.


Representante típico de la placa de control de electrodomésticos

Durante el trabajo hemos aparecido varios módulos inalámbricos estándar de RM2 a RM10. Estos módulos, basados ​​en la solución SoC, actúan como un controlador central y también le permiten controlar el dispositivo a través del aire.

Esta línea de módulos inalámbricos está diseñada para que pueda instalarse en la placa de control, cambiándola mínimamente. Para garantizar una alta velocidad de desarrollo, había una necesidad urgente de crear una placa de depuración, en la que ya habrá todo lo necesario para los electrodomésticos inteligentes.

Otro argumento para el lanzamiento de la placa de depuración fue la apertura de la plataforma Ready for Sky para desarrolladores externos. Comenzamos a recibir sugerencias y solicitudes por correo electrónico para dar a los desarrolladores independientes o desarrolladores de bricolaje acceso a la plataforma. Una oferta similar llegó incluso en el primer ministro de Khabrov.

Depuración


Entonces lo hicimos: la primera versión del RFS-DEV001. El corazón de la placa de depuración es el módulo RM10. Basado en el chip nRF52832 , que cumple con el estándar Bluetooth 5, es compatible con redes de malla y Bluetooth de baja energía. Además, se coloca un reloj en tiempo real para la depuración, se implementan tres opciones de energía (batería, USB desde una PC, externa desde una fuente de energía). Dos botones, un timbre y un diodo RGB para señalizar y parpadear. Todos los componentes en el tablero se seleccionan de aquellos que ahora se usan en la producción en masa de electrodomésticos.

Además de probar el esquema de control, el desarrollador podrá determinar y optimizar de inmediato el costo de los componentes, lo que finalmente afectará el precio de su dispositivo inteligente.



El tablero será conveniente para las cabinas de bricolaje, entre quienes también hay aquellos para quienes la programación no es un punto fuerte o están comenzando a aprender. Vimos una oportunidad para facilitar su trabajo, por ejemplo, para hacer que la placa sea compatible con Arduino. Está claro que este es un formato amateur y educativo, pero su uso, en primer lugar, no cancela el trabajo profesional con la depuración y, en segundo lugar, mejora en gran medida la comodidad de los especialistas que ingresan a la profesión.

Sería completamente posible distribuir la tarifa entre las universidades y las escuelas técnicas especializadas para la enseñanza de estudiantes junior, contribuyendo así a futuros especialistas.

Lista de complementos de trabajo garantizados




API


Dado que la depuración no será una pieza útil de textolite sin código de programa, vale la pena hablar un poco sobre la API, que está diseñada para permitir que el desarrollador se concentre en la funcionalidad de su dispositivo como parte de la apertura de la plataforma, abstrayéndose de numerosas configuraciones de Bluetooth, etc.

Entonces, la API R4S consiste en:

  • un conjunto de bibliotecas que proporcionan la operación de servicios típicos y específicos, por ejemplo, la biblioteca principal que contiene configuraciones básicas de Bluetooth y bibliotecas enfocadas en la funcionalidad de los dispositivos;
  • ejemplos de dispositivos o funciones implementados en la API;
  • controladores para periféricos conectados a la placa de depuración, consulte la lista anterior.

Puede echar un vistazo a las capacidades API utilizando el ejemplo de creación de efectos de iluminación usando una lámpara LED a través de un cambio suave en el brillo usando curvas Bezier.


Después de cambiar al modo peyring, la bombilla cambiará suavemente el color del brillo

En el archivo principal, deberá determinar de forma independiente la información básica, por ejemplo, información sobre el firmware, declarar la configuración (ubicación del cargador de arranque, búfer para actualizar el firmware, etc.).

/** Firmware information structure */ R4S_FW_INFO_DEF(application, 0x26000) = { .version = { .major = 0, /** Product version (major) */ .minor = 1, /** Product version (minor) */ }, .name = { /** Device name */ .name = "RGB Lightbulb", .len = sizeof("RGB Lightbulb") - 1 /** Without \0 symbol at the end*/ } }; /** The init structure with the device information wich required for ReadyForSky library. */ R4S_CONFIG_DEF(r4s_init_conf) = { .p_fw_info = &application, .production_key = NULL, /** * The production key allows integrating the device into ReadyForSky infrastructure. * Contact support to get the production key for your device. */ .bootloader = { .start_address = 0x7B000, /** Bootloader start address */ .mbr_param_page = 0x7f000, /** MBR param page address */ .fw_upgrade_buf = { /** The firmware upgrade buffer is used for background flashing. * The region size should more than softdevice + bootloader + application size + 4096 */ .p_api = &nrf_fstorage_sd, /** fstorage api */ .start_addr = 0x35000, /** start address of firmware upgrade buffer */ .end_addr = 0x78000, /** end address of firmware upgrade buffer */ .chunk_size = 0, /** default chunk size */ } }, .company_info = { .p_company_name = "Imperium of Mankind", }, .watchdog = { .timeout_ms = 5000, /** If loop or priority will not finish after 5 seconds watchdog will reset microcontroller automatically */ }, .low_power_mode_enable = true, /** Low power ble settings */ } 

El desarrollo del dispositivo es similar al desarrollo de Arduino. Hay una función de configuración para inicializar los módulos principales y el bucle donde tiene lugar el procesamiento. La funcionalidad de la aplicación en sí se divide en módulos, de acuerdo con las diferentes operaciones realizadas.

 /** @brief Application initialisation * @return none */ void app_setup(void) { m_pairing_init(m_led_ctrl_pairing_handler); m_led_ctrl_init(); } /** @brief Application loop * @return true - sleep is not allowed * @return false - All modules have completed operation, the mcu can enter into sleep mode. (the next loop iteration will be after any interrupt) */ bool app_loop(void) { return NRF_LOG_PROCESS(); } 

Después de declarar los recursos en el archivo ("m_resources.c"), por ejemplo, animaciones de bulbos, asignaciones de pines (varios grupos de LED), colores, etc., la biblioteca determinará el resto de los parámetros.

 /** Animation timer definition for m_rgb */ APP_TIMER_DEF(animation_timer_id); /** Leds pin map for m_rgb*/ static const r4s_rgb_ctrl_led_t m_leds_map[LEDS_COUNT] = { { .color = { .red_pin = RED_LEDS_0_PIN, .green_pin = GREEN_LEDS_0_PIN, .blue_pin = BLUE_LEDS_0_PIN, } }, { .color = { .red_pin = RED_LEDS_1_PIN, .green_pin = GREEN_LEDS_1_PIN, .blue_pin = BLUE_LEDS_1_PIN, } }, { .color = { .red_pin = RED_LEDS_2_PIN, .green_pin = GREEN_LEDS_2_PIN, .blue_pin = BLUE_LEDS_2_PIN, } }, }; /** PWM map for m_rgb */ static const r4s_rgb_ctrl_pwm_map_elem_t m_pwm_map[LEDS_COUNT] = { { .color = { .p_pwm_red = &pwm0, .p_pwm_green = &pwm0, .p_pwm_blue = &pwm0, } }, { .color = { .p_pwm_red = &pwm1, .p_pwm_green = &pwm1, .p_pwm_blue = &pwm1, } }, { .color = { .p_pwm_red = &pwm2, .p_pwm_green = &pwm2, .p_pwm_blue = &pwm2, } }, }; /** RGB lamp definition */ R4S_RGB_CTRL_DEF(m_rgb, m_leds_map, m_pwm_map, &animation_timer_id, LEDS_COUNT, 3); 

Después de la vinculación, la aplicación recibe datos que el dispositivo puede hacer, una bombilla en nuestro caso, y muestra la información relevante.



Además, a través de la aplicación, puede controlar los parámetros: intensidad, color, temperatura, etc.


Ahora el código se está resolviendo en la depuración del prototipo, así que deje que la diferencia entre el tablero y las imágenes superiores no le moleste.

Las características adicionales incluyen:

  • Multiconnect: varios teléfonos inteligentes que se conectan simultáneamente al módulo. Esta característica potencialmente causa problemas cuando intenta controlar el dispositivo al mismo tiempo. Intentamos evitar estos problemas, incluso a través de notificaciones en todos los teléfonos inteligentes conectados: cuando un parámetro cambia un teléfono, la información sobre el nuevo valor del parámetro se enviará inmediatamente a los demás;
  • Parpadeo rápido: el tamaño del paquete transmitido por Bluetooth depende de la MTU . Con un aumento en MTU, el proceso de flasheo irá más rápido a medida que aumente el tamaño del paquete;
  • Una lista de errores típicos determinados por la función del microcontrolador. Si se detecta un error, aparece un texto como "No hay suficiente memoria para el dispositivo suave". Para obtener más información, habilite la depuración de SDM ".

Para trabajar con la depuración, se lanzará una aplicación de ingeniería R4S con las mismas capacidades que lo normal, pero es a través de ella que se controla la placa. En principio, a través de una aplicación de ingeniería, puede administrar dispositivos ensamblados en su apartamento, una buena parte para el bricolaje. Esto debería ayudar a los desarrolladores novatos a admitir el dispositivo. En la aplicación principal R4S, dicho dispositivo aparecerá después de la coordinación y el control de calidad de nuestra parte.

También usaremos la depuración en el trabajo diario de la empresa, incluso al capacitar a nuevos empleados. Habrovchane, como crees, despegará? ¿Le interesaría trabajar con tal depuración?

Source: https://habr.com/ru/post/es429822/


All Articles