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".
FonteO 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ésticosDurante 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 brilhoNo 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.).
R4S_FW_INFO_DEF(application, 0x26000) = { .version = { .major = 0, .minor = 1, }, .name = { .name = "RGB Lightbulb", .len = sizeof("RGB Lightbulb") - 1 } }; R4S_CONFIG_DEF(r4s_init_conf) = { .p_fw_info = &application, .production_key = NULL, .bootloader = { .start_address = 0x7B000, .mbr_param_page = 0x7f000, .fw_upgrade_buf = { .p_api = &nrf_fstorage_sd, .start_addr = 0x35000, .end_addr = 0x78000, .chunk_size = 0, } }, .company_info = { .p_company_name = "Imperium of Mankind", }, .watchdog = { .timeout_ms = 5000, }, .low_power_mode_enable = true, }
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.
void app_setup(void) { m_pairing_init(m_led_ctrl_pairing_handler); m_led_ctrl_init(); } 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.
APP_TIMER_DEF(animation_timer_id); 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, } }, }; 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, } }, }; 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?