Placa de depuração para fins especiais

1. Introdução


Ao desenvolver um dispositivo para testar seu circuito elétrico, geralmente é usada uma placa de depuração. Nossos desenvolvedores não são uma exceção aqui, o benefício dos aspectos positivos dessa abordagem é óbvio: os custos são menores que a produção de um protótipo ou lote de teste. E se surgirem erros no processo ou aparecerem novas soluções para algumas tarefas, elas serão muito mais fáceis de aplicar.

No entanto, muitas vezes nos deparamos com o fato de que as depurações oferecidas no mercado exigiam refinamentos significativos e / ou módulos adicionais. Ao mesmo tempo, surgiram restrições adicionais que dependiam de um dispositivo específico. Se estamos desenvolvendo uma placa de controle e um módulo sem fio a partir do zero, a ordem relativa está na placa de ensaio.

Os problemas começam quando um segundo e mais frequente cenário é apresentado, e estamos lidando com a modernização de uma técnica já desenvolvida. Devido ao principal fator limitante - o preço final do produto - a alteração no circuito elétrico deve ser mínima. No estágio do layout, muitos adoraram a "fazenda coletiva".


Fonte

O que fazer


Os painéis de controle em eletrodomésticos geralmente são simples e de baixa tecnologia - sua base impressa é de camada única, de um lado não possui metalização nem máscara. A simplicidade dessas placas é determinada pelo preço final dos próprios dispositivos - quanto mais complicada a produção do equipamento, mais caro ele terá que ser vendido. É claro que o consumidor de massa não deseja e não paga a mais por complicações.


Representante típico da placa de controle de eletrodomésticos

Durante o trabalho, apareceram vários módulos sem fio padrão do RM2 ao RM10. Esses módulos, baseados na solução SoC, atuam como um controlador central e também permitem controlar o dispositivo pelo ar.

Esta linha de módulos sem fio foi projetada para que possa ser instalada no painel de controle, alterando-o minimamente. Para garantir uma alta velocidade de desenvolvimento, havia uma necessidade urgente de criar uma placa de depuração, na qual já houvesse tudo o que é necessário para eletrodomésticos inteligentes.

Outro argumento para o lançamento da placa de depuração foi a abertura da plataforma Ready for Sky para desenvolvedores de terceiros. Começamos a receber sugestões e solicitações por e-mail para dar aos desenvolvedores independentes ou desenvolvedores de DIY acesso à plataforma. Uma oferta semelhante ocorreu mesmo no primeiro-ministro de Khabrov.

Depuração


Então fizemos - a primeira versão do RFS-DEV001. O coração da placa de depuração é o módulo RM10. Baseado no chip nRF52832 , em conformidade com o padrão Bluetooth 5, ele suporta redes mesh e Bluetooth Low Energy. Além disso, um relógio em tempo real é colocado na depuração, três opções de energia são implementadas (bateria, USB de um PC, externo de uma fonte de energia). Dois botões, uma campainha e um diodo RGB para sinalizar e piscar. Todos os componentes no quadro são selecionados dentre os que são usados ​​na produção em massa de eletrodomésticos.

Além de testar o esquema de controle, o desenvolvedor poderá determinar e otimizar imediatamente o custo dos componentes, o que afetará o preço do seu dispositivo inteligente.



O quadro será conveniente para estandes de bricolage, entre os quais também aqueles para os quais a programação não é um ponto forte ou eles estão apenas começando a aprender. Vimos uma oportunidade de facilitar o trabalho deles, por exemplo, para tornar o quadro compatível com o Arduino. É claro que este é um formato amador e educacional, mas seu uso, em primeiro lugar, não cancela o trabalho profissional com depuração e, em segundo lugar, aumenta muito a conveniência de especialistas ingressarem na profissão.

Seria inteiramente possível distribuir a taxa entre universidades e escolas técnicas especializadas para o ensino de estudantes juniores, contribuindo assim para futuros especialistas.

Lista de plug-ins de trabalho garantidos




API


Como a depuração não será uma peça de texto útil sem o código do programa, vale a pena falar um pouco sobre a API, projetada para permitir que o desenvolvedor se concentre na funcionalidade do dispositivo como parte da abertura da plataforma, abstraindo-se de várias configurações de Bluetooth etc.

Portanto, a API R4S consiste em:

  • um conjunto de bibliotecas que fornecem a operação de serviços típicos e específicos, por exemplo, a biblioteca principal que contém configurações e bibliotecas básicas de Bluetooth focadas na funcionalidade dos dispositivos;
  • exemplos de dispositivos ou funções implementados na API;
  • drivers para periféricos conectados à placa de depuração, consulte a lista acima.

Você pode dar uma olhada nos recursos da API usando o exemplo de criação de efeitos de iluminação usando uma lâmpada LED através de uma mudança suave no brilho usando as curvas de Bezier.


Tendo mudado para o modo peyring, a lâmpada muda suavemente a cor do brilho

No arquivo principal, você precisará determinar independentemente as informações básicas, por exemplo, informações sobre o firmware, declarar as configurações (local do carregador de inicialização, buffer para atualizar o 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 */ } 

O desenvolvimento do dispositivo é semelhante ao desenvolvimento para o Arduino. Existe uma função de configuração para inicializar os módulos principais e o loop onde o processamento ocorre. A funcionalidade do aplicativo em si é dividida em módulos - de acordo com as diferentes operações 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(); } 

Depois que os recursos são declarados no arquivo (“m_resources.c”) - por exemplo, animações de bulbo, atribuições de pinos (vários grupos de LEDs), cores etc., a biblioteca determinará o restante dos 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); 

Após a ligação, o aplicativo recebe dados que o dispositivo pode fazer, uma lâmpada no nosso caso, e exibe as informações relevantes.



Além disso, através do aplicativo, você pode controlar os parâmetros - intensidade, cor, temperatura, etc.


Agora, o código está sendo elaborado na depuração do protótipo; portanto, a diferença entre a placa e as imagens superiores não o incomoda.

Recursos adicionais incluem:

  • Multiconect - vários smartphones que são conectados simultaneamente ao módulo. Esse recurso potencialmente causa problemas quando você tenta controlar o dispositivo ao mesmo tempo. Tentamos evitar esses problemas, inclusive por meio de notificações em todos os smartphones conectados - quando um parâmetro é alterado por um telefone, as informações sobre o novo valor do parâmetro são enviadas imediatamente para os outros;
  • Piscando rápido - o tamanho do pacote transmitido via Bluetooth depende da MTU . Com o aumento da MTU, o processo de piscar será mais rápido à medida que o tamanho do pacote aumentar;
  • Uma lista de erros típicos determinados pela função do microcontrolador. Se um erro for detectado, um texto como “Memória insuficiente para o dispositivo de software. Para mais informações, habilite a depuração sdm. "

Para trabalhar com a depuração, um aplicativo de engenharia R4S será lançado com os mesmos recursos que o normal, mas é através dele que a placa é controlada. Em princípio, por meio de um aplicativo de engenharia, você pode gerenciar dispositivos montados em seu apartamento - uma boa peça para fazer bricolage. Isso deve ajudar desenvolvedores iniciantes a oferecer suporte ao dispositivo. Na aplicação principal do R4S, esse dispositivo aparecerá após a coordenação e o controle de qualidade de nossa parte.

Também usaremos a depuração no trabalho diário da empresa, inclusive ao treinar novos funcionários. Habrovchane, como você pensa, vai decolar? Você estaria interessado em trabalhar com essa depuração?

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


All Articles