Catégories
parts solar water heater

LibreSolar / Firmware Controller: pilote pour les contrôleurs de charge Libre Solar MPPT / PWM

construire un badge

Ce référentiel contient le firmware de divers contrôleurs de charge solaire libre basés sur Zephyr RTOS.

Le style de codage est décrit ici.

Attention: Ce firmware est en développement actif. Alors que nous essayons de ne pas interrompre les fonctions qui fonctionnaient auparavant, toutes les commandes ne sont pas entièrement testées sur chaque carte avant de la brancher sur la carte mère. Pour les versions stables et testées, pensez à utiliser la dernière version.

Périphériques compatibles

Le logiciel est configuré pour prendre en charge divers PCB de contrôleur de charge avec STM32F072, STM32L072 basse consommation ou les derniers MCM STM32G431:

Création et clignotement du firmware

Ce référentiel contient des sous-modules git, vous devez donc le cloner (télécharger) en appelant:

git clone --recursive https://github.com/LibreSolar/charge-controller-firmware

Malheureusement, le bouton vert « Cloner ou Télécharger » de GitHub n’inclut pas les sous-modules. Si vous avez cloné un référentiel et souhaitez extraire des sous-modules, exécutez-le git submodule update --init --recursive.

PlatformIO

Il est suggéré d’utiliser Visual Studio Code et PlatformIO pour le développement de micrologiciels, car cela simplifie considérablement la compilation et le chargement de code:

  1. Installez Visual Studio Code et PlatformIO pour créer le micrologiciel.

  2. Ajustez la configuration dans zephyr/prj.conf si nécessaire.

  3. Sélectionnez le bon panneau dans platformio.ini en supprimant les commentaires avant le nom du forum sous [platformio] ou créer un fichier custom.ini avec vos paramètres personnels.

  4. Connectez la carte via le programmateur. Voir le site Web de Libre Solar pour plus d’instructions sur les projets.

  5. Appuyez sur la touche de transfert dans le coin inférieur gauche du code VS.

Environnement Zephyr natif

Vous pouvez également utiliser le système de construction Zephyr directement pour une configuration avancée en utilisant menuconfig ou si vous avez besoin de fonctionnalités récemment ajoutées.

Le point d’entrée CMake est en zephyr sous-dossier, vous devez donc exécuter west dans ce répertoire.

Sélection initiale des panneaux (voir les sous-dossiers exacts des panneaux):

    west build -b 

Un flash avec un coureur spécifique, par exemple. J-Link:

    west flash -r jlink

Configuration utilisateur à l’aide de menuconfig:

    west build -t menuconfig

Rapport d’utilisation de la mémoire (RAM et flash):

    west build -t rom_report
    west build -t ram_report

Dépannage

Erreurs du MCU STM32L072 avec OpenOCD

Les paramètres OpenOCD standard n’exécutent parfois pas le micrologiciel sur ce MCU utilisé dans le contrôleur de charge MPPT 1210 HUS et PWM.

Essayez l’une des méthodes suivantes:

  1. Modifiez les paramètres OpenOCD en adapter_khz 500 en ligne 70 en ~/.platformio/packages/tool-openocd/scripts/target/stm32l0.cfg.

  2. Utilisez d’autres outils ou correctifs de débogage tels que STM32CubeProgrammer ou Segger J-Link.

Échecs de connexion

Si le clignotement ne fonctionne pas comme ceci dans PlatformIO:

Error: init mode failed (unable to connect to the target)
in procedure 'program'
** OpenOCD init failed **
shutdown command invoked

ou avec ST-Link:

$ st-flash write .pio/build/mppt-1210-hus-v0.4/firmware.bin 0x08000000
st-flash 1.5.1
2019-06-21T18:13:03 INFO common.c: Loading device parameters....
2019-06-21T18:13:03 WARN common.c: unknown chip id! 0x5fa0004

vérifier la connexion entre le programmateur (par exemple la carte ST-Link Nucleo) et le contrôleur de charge.

Prise en charge du chargeur de démarrage (STM32L072 uniquement)

Le fichier de script de classeur personnalisé STM32L072XZ.ld.link_script.ld doit être mis à jour avant de générer le logiciel binaire d’application. Pour chaque application, vous devez mettre à jour l’adresse de démarrage flash et la taille de code maximale dans ce fichier. Actuellement, les emplacements 0x08001000 et 0x08018000 sont utilisés pour les applications 1 et 2.

Documentation API

La documentation créée automatiquement par Doxygen se trouve ici.

Test de conformité

Nous utilisons Travis CI pour effectuer plusieurs vérifications pour chaque demande de validation ou de retrait. Pour qu’ils puissent s’échapper
les mêmes tests localement (recommandés avant chaque demande de retrait) utilisent un script check.sh ou check.bat:

bash check.sh       # Linux
cmd check.bat       # Windows

Tests uniques

Vous avez besoin d’un compte PlatformIO Plus pour exécuter des unités de test. Exécutez les tests avec la commande suivante:

platformio test -e unit-test-native

Analyse de code statique

PlatformIO intègre cppcheck et clangtidy. La commande suivante est un exemple pour exécuter des vérifications du MPPT 1210 HUS sur un contrôleur de charge:

platformio check -e mppt-1210-hus-v0.7

Documentation supplémentaire sur le firmware (dossier de documents)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.