Spezielles Debug Board

    Einleitung


    Bei der Entwicklung eines Geräts zum Testen seiner elektrischen Schaltung wird normalerweise eine Debug-Platine verwendet. Unsere Entwickler machen hier keine Ausnahme, denn die positiven Aspekte dieses Ansatzes liegen auf der Hand: Die Kosten liegen unter der Produktion eines Prototyps oder einer Testcharge. Wenn im Prozess Fehler auftreten oder für einige Aufgaben neue Lösungen auftauchen, sind sie viel einfacher anzuwenden.

    Häufig sind wir jedoch auf die Tatsache gestoßen, dass die auf dem Markt angebotenen Debugs erhebliche Verfeinerungen und / oder zusätzliche Module erforderten. Gleichzeitig hingen weitere Einschränkungen vom jeweiligen Gerät ab. Wenn wir eine Steuerkarte und ein drahtloses Kommunikationsmodul von Grund auf entwickeln, gibt es eine relative Reihenfolge auf der Steckplatine.

    Probleme beginnen, wenn das zweite und häufigere Szenario ausgespielt wird und wir uns mit der Modernisierung einer bereits entwickelten Technik beschäftigen. Aufgrund des hauptsächlichen limitierenden Faktors - des Endpreises des Produkts - sollte die Änderung des Stromkreises minimal sein. Auf der Bühne des Layouts ist es notwendig, von vielen geliebten „Kollektivbetrieben“ zu schaffen. Quelle von




    Was zu tun ist?


    Steuerplatinen in Haushaltsgeräten sind in der Regel einfach und wenig technologisch - ihre Druckbasis ist einlagig, wobei eine der Seiten keine Metallisierung und keine Maske aufweist. Die Einfachheit dieser Platinen wird durch den Endpreis der Geräte selbst bestimmt - je schwieriger die Herstellung von Geräten ist, desto teurer muss sie verkauft werden. Es ist klar, dass der Massenverbraucher für Komplikationen nicht will und nicht zu viel bezahlen wird.


    Ein typischer Vertreter der Steuerplatine eines Haushaltsgeräts:

    Während unserer Arbeit hatten wir mehrere Standard-Funkmodule von RM2 bis RM10. Diese auf der SoC-Lösung basierenden Module dienen als zentrale Steuerung und ermöglichen es Ihnen, das Gerät auch per Luft zu steuern.

    Diese Reihe von Funkmodulen kann auf der Steuerplatine installiert werden und muss nur minimal geändert werden. Um eine hohe Entwicklungsgeschwindigkeit sicherzustellen, war es dringend notwendig, eine Debugging-Platine zu erstellen, in der bereits alles vorhanden ist, was für intelligente Haushaltsgeräte erforderlich ist.

    Ein weiteres Argument für die Veröffentlichung des Debugboards war die Eröffnung der Ready for Sky-Plattform für Entwickler von Drittanbietern. Wir erhielten Angebote und Anfragen per E-Mail, um unabhängigen Entwicklern oder Heimwerker-Entwicklern Zugriff auf die Plattform zu geben. Ein ähnlicher Vorschlag kam sogar in Habrovskaya PM.

    Debuggen


    Also haben wir es geschafft - die erste Version von RFS-DEV001. Das Herzstück des Debugboards war das RM10-Modul. Basierend auf dem nRF52832- Chip , der dem Bluetooth-5-Standard entspricht, werden Mesh-Netzwerke und Bluetooth Low Energy unterstützt. Beim Debugging wird auch eine Echtzeituhr platziert, wobei drei Stromversorgungsoptionen implementiert sind (Akku, USB vom PC, extern von der Stromquelle). Zwei Tasten, ein Summer und eine RGB-Diode zum Piepsen und Blinken. Alle Bauteile auf der Platine werden aus denjenigen ausgewählt, die jetzt in der Massenproduktion von Haushaltsgeräten verwendet werden.

    Neben der Erarbeitung des Steuerungsschemas kann der Entwickler die Kosten für Komponenten sofort ermitteln und optimieren, was sich letztendlich auf den Preis seines intelligenten Geräts auswirkt.



    Die Gebühr ist günstig für Heimwerker, unter denen sich diejenigen befinden, die keine Programmierkenntnisse haben oder gerade erst lernen. Wir sahen die Gelegenheit, ihre Arbeit zu erleichtern, zum Beispiel, um das Arduino-kompatible Board herzustellen. Es ist klar, dass dies ein Amateur- und Bildungsformat ist, aber seine Verwendung schließt die professionelle Arbeit mit dem Debugging nicht aus und erhöht andererseits den Komfort für Fachleute, die in den Beruf einsteigen.

    Es wäre durchaus möglich, die Gebühren an Universitäten und Fachhochschulen für den Studienunterricht zu verteilen, um so einen Beitrag zu zukünftigen Fachkräften zu leisten.

    Liste der garantiert funktionierenden Plugins




    API


    Da das Debuggen ohne Softwarecode zu einem wenig genutzten PCB wird, lohnt es sich, ein wenig über die API zu sprechen, mit der sich der Entwickler auf die Funktionalität seines Geräts konzentrieren kann, abgesehen von den zahlreichen Bluetooth-Einstellungen usw.

    Die R4S-API besteht also aus:

    • eine Reihe von Bibliotheken, die typische und spezifische Dienste bereitstellen, z. B. die Hauptbibliothek mit den grundlegenden Bluetooth-Einstellungen und Bibliotheken, deren Schwerpunkt auf der Funktionalität von Geräten liegt;
    • Beispiele für auf der API implementierte Geräte oder Funktionen;
    • Treiber für Peripheriegeräte, die an die Debug-Karte angeschlossen sind, siehe obige Liste.

    Sie können die Möglichkeiten der API am Beispiel der Erzeugung von Lichteffekten unter Verwendung einer LED-Lampe durch eine sanfte Änderung der Helligkeit unter Verwendung von Bézier-Kurven etwas berücksichtigen.


    Im Peyring-Modus ändert das Licht die Farbe des Glühens.

    In der Hauptdatei müssen Sie die Basisinformationen selbst bestimmen, z. B. Informationen zur Firmware, die Einstellungen (Speicherort des Bootloaders, Puffer für das Firmware-Update usw.).

    /** 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 */
    }
    

    Die Entwicklung des Geräts ähnelt der Entwicklung unter dem Arduino. Es gibt eine Setup-Funktion zum Initialisieren der Hauptmodule und der Schleife, in der die Verarbeitung stattfindet. Die Anwendungsfunktionalität selbst ist nach verschiedenen durchgeführten Operationen in Module unterteilt.

    /** @brief Application initialisation
     * @return none
     */voidapp_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();
    }
    

    Nachdem die Ressourcen in der Datei („m_resources.c“) deklariert sind (z. B. Animationen der Glühbirne, Pinbelegungen (mehrere LED-Gruppen), Farben usw.), bestimmt die Bibliothek die verbleibenden Parameter.

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

    Nach dem Bonden erhält die Anwendung die Daten, die das Gerät ausführen kann, in unserem Fall eine Glühlampe, und zeigt die relevanten Informationen an.



    Über die Anwendung können Sie außerdem die Parameter - Intensität, Farbe, Temperatur usw. steuern.


    Jetzt wird der Code an einem Debugging-Prototyp erarbeitet, sodass der Unterschied zwischen der Platine und den oberen Bildern Sie nicht stört.

    Zusätzliche Funktionen umfassen:

    • Multiconne - mehrere Smartphones, die gleichzeitig mit dem Modul verbunden sind. Möglicherweise verursacht diese Funktion Probleme beim gleichzeitigen Steuern des Geräts. Wir haben versucht, diesen Problemen vorzubeugen, auch durch Benachrichtigungen auf allen verbundenen Smartphones. Wenn ein Parameter von einem Telefon geändert wird, werden Informationen über den neuen Wert des Parameters sofort an den Rest gesendet.
    • Schnelles Blinken - Die Größe des über Bluetooth übertragenen Pakets hängt von der MTU ab . Wenn die MTU ansteigt, wird der Flashing-Prozess mit zunehmender Paketgröße schneller.
    • Die Liste der typischen Fehler wird durch die Funktion des Mikrocontrollers bestimmt. Wenn ein Fehler entdeckt wird, erscheint ein Text wie „Nicht genügend Speicher für Softdevice. Für weitere Informationen aktivieren Sie sdm debug. ”.

    Um mit dem Debugging arbeiten zu können, wird die Engineering-Anwendung R4S mit den gleichen Funktionen wie die üblichen veröffentlicht, jedoch wird das Board dadurch verwaltet. Grundsätzlich können Sie über die Engineering-Anwendung die zusammengebauten Geräte in Ihrer Wohnung verwalten - ein schönes Stück für den Heimwerker. Dies sollte bei der Geräteunterstützung für Anfänger helfen. In der Hauptanwendung R4S erscheint ein solches Gerät nach Koordination und Qualitätskontrolle von unserer Seite.

    Wir werden das Debugging auch in der täglichen Arbeit des Unternehmens einsetzen, einschließlich der Schulung neuer Mitarbeiter. Habrovchane, wie Sie denken, abheben? Möchten Sie mit einem solchen Debugging arbeiten?

    Jetzt auch beliebt: