Carte de débogage à usage spécial

Présentation


Lors du développement d'un appareil pour tester son circuit électrique, une carte de débogage est généralement utilisée. Nos développeurs ne font pas exception ici, le bénéfice des aspects positifs de cette approche est évident: les coûts sont inférieurs à la production d'un prototype ou d'un lot de test. Et si des erreurs apparaissent dans le processus ou si de nouvelles solutions apparaissent pour certaines tâches, elles sont beaucoup plus faciles à appliquer.

Cependant, bien souvent, nous étions confrontés au fait que les débogages proposés sur le marché nécessitaient un raffinement important et / ou des modules supplémentaires. En même temps, des restrictions supplémentaires sont apparues en fonction d'un appareil particulier. Si nous développons une carte de contrôle et un module sans fil à partir de zéro, alors l'ordre relatif est sur la planche à pain.

Les problèmes commencent lorsqu'un deuxième scénario, plus fréquent, se déroule, et nous avons affaire à la modernisation d'une technique déjà développée. En raison du principal facteur limitant - le prix final du produit - la modification du circuit électrique doit être minime. Au stade de l'aménagement, de nombreuses «fermes collectives» bien-aimées doivent être créées.


Source

Que faire


Les tableaux de commande des appareils électroménagers sont généralement simples et peu technologiques - leur base imprimée est monocouche, d'un côté, elle n'a pas de métallisation et de masque. La simplicité de ces cartes est déterminée par le prix final des appareils eux-mêmes - plus la production d'équipement est compliquée, plus elle devra être chère. Il est clair que le consommateur de masse ne voudra pas et ne paiera pas trop cher pour des complications.


Représentant typique du tableau de commande des appareils ménagers

Au cours du travail, nous avons fait apparaître plusieurs modules sans fil standard de RM2 à RM10. Ces modules, basés sur la solution SoC, agissent comme un contrôleur central et vous permettent également de contrôler l'appareil dans les airs.

Cette gamme de modules sans fil est conçue de manière à pouvoir être installée sur la carte de commande, en la modifiant au minimum. Pour assurer une vitesse de développement élevée, il était urgent de fabriquer une carte de débogage, dans laquelle il y aurait déjà tout ce qui est nécessaire pour les appareils ménagers intelligents.

Un autre argument en faveur de la publication du tableau de débogage a été l'ouverture de la plate-forme Ready for Sky pour les développeurs tiers. Nous avons commencé à recevoir des suggestions et des demandes par e-mail pour permettre aux développeurs indépendants ou aux développeurs DIY d'accéder à la plateforme. Une offre similaire est venue même dans le PM de Khabrov.

Débogage


Nous l'avons donc fait - la première version du RFS-DEV001. Le cœur de la carte de débogage est le module RM10. Basé sur la puce nRF52832 , conforme à la norme Bluetooth 5, il prend en charge les réseaux maillés et Bluetooth Low Energy. En outre, une horloge en temps réel est placée sur le débogage, trois options d'alimentation sont implémentées (batterie, USB à partir d'un PC, externe à partir d'une source d'alimentation). Deux boutons, un buzzer et une diode RGB pour signaler et clignoter. Tous les composants de la carte sont sélectionnés parmi ceux qui sont maintenant utilisés dans la production de masse d'appareils électroménagers.

En plus de tester le schéma de contrôle, le développeur sera en mesure de déterminer et d'optimiser immédiatement le coût des composants, ce qui affectera finalement le prix de son appareil intelligent.



Le tableau sera pratique pour les kiosques de bricolage, parmi lesquels il y a aussi ceux pour qui la programmation n'est pas un point fort ou qui commencent tout juste à apprendre. Nous avons vu une opportunité de faciliter leur travail, par exemple, pour rendre la carte Arduino compatible. Il est clair qu'il s'agit d'un format amateur et éducatif, mais son utilisation, d'une part, n'annule pas le travail professionnel avec le débogage, et d'autre part, améliore considérablement la commodité des spécialistes entrant dans la profession.

Il serait tout à fait possible de répartir la redevance entre les universités et les écoles techniques spécialisées pour l'enseignement des étudiants juniors, contribuant ainsi aux futurs spécialistes.

Liste des plug-ins de travail garantis




API


Étant donné que le débogage ne sera pas un élément utile de textolite sans code de programme, il vaut la peine de parler un peu de l'API, qui est conçue pour permettre au développeur de se concentrer sur les fonctionnalités de son appareil dans le cadre de l'ouverture de la plateforme, en faisant abstraction de nombreux paramètres Bluetooth, etc.

Ainsi, l'API R4S se compose de:

  • un ensemble de bibliothèques qui fournissent le fonctionnement de services typiques et spécifiques, par exemple, la bibliothèque principale contenant les paramètres Bluetooth de base et les bibliothèques axées sur la fonctionnalité des appareils;
  • des exemples d'appareils ou de fonctions implémentés sur l'API;
  • pilotes pour les périphériques connectés à la carte de débogage, voir la liste ci-dessus.

Vous pouvez jeter un coup d'œil aux capacités de l'API en utilisant l'exemple de la création d'effets d'éclairage à l'aide d'une lampe LED grâce à un changement en douceur de la luminosité à l'aide des courbes de Bézier.


Après avoir basculé en mode peyring, l'ampoule changera en douceur la couleur de la lueur

Dans le fichier principal, vous devrez déterminer indépendamment les informations de base, par exemple, les informations sur le firmware, déclarer les paramètres (emplacement du chargeur de démarrage, tampon pour la mise à jour du 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 */ } 

Le développement de l'appareil est similaire au développement d'Arduino. Il y a une fonction de configuration pour initialiser les modules principaux et boucle où le traitement a lieu. La fonctionnalité de l'application elle-même est divisée en modules - en fonction des différentes opérations effectuées.

 /** @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(); } 

Une fois les ressources déclarées dans le fichier («m_resources.c») - par exemple, les animations d'ampoule, les affectations de broches (plusieurs groupes de LED), les couleurs, etc., la bibliothèque déterminera elle-même le reste des paramètres.

 /** 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); 

Après le collage, l'application reçoit des données que l'appareil peut faire, une ampoule dans notre cas, et affiche les informations pertinentes.



De plus, grâce à l'application, vous pouvez contrôler les paramètres - intensité, couleur, température, etc.


Maintenant, le code est en cours d'élaboration sur le débogage du prototype, alors laissez la différence entre la carte et les images supérieures ne vous dérange pas.

Les fonctionnalités supplémentaires incluent:

  • Multiconnect - plusieurs smartphones connectés simultanément au module. Cette fonctionnalité peut potentiellement provoquer des problèmes lorsque vous essayez de contrôler l'appareil en même temps. Nous avons essayé de prévenir ces problèmes, y compris par le biais de notifications sur tous les smartphones connectés - si un paramètre change avec un téléphone, les informations sur la nouvelle valeur du paramètre seront immédiatement envoyées au reste;
  • Clignotement rapide - la taille du paquet transmis via Bluetooth dépend du MTU . Avec une augmentation de MTU, le processus de clignotement ira plus vite à mesure que la taille du paquet augmentera;
  • Une liste des erreurs typiques déterminées par la fonction du microcontrôleur. Si une erreur est détectée, un texte comme «Pas assez de mémoire pour le périphérique logiciel. Pour plus d'informations, activez le débogage sdm. ".

Pour travailler avec le débogage, une application d'ingénierie R4S sera publiée avec les mêmes capacités que la normale, mais c'est à travers elle que la carte est contrôlée. En principe, grâce à une application d'ingénierie, vous pouvez gérer les appareils assemblés dans votre appartement - une belle pièce pour le bricolage. Cela devrait aider les développeurs novices à prendre en charge l'appareil. Dans l'application principale R4S, un tel appareil apparaîtra après coordination et contrôle qualité de notre part.

Nous utiliserons également le débogage dans le travail quotidien de l'entreprise, y compris lors de la formation de nouveaux employés. Habrovchane, comme vous le pensez, va décoller? Seriez-vous intéressé à travailler avec un tel débogage?

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


All Articles