Tests logiciels

Pré-requis

Pour cette étape, il vous faudra :

  • Un ordinateur (PC ou équivalent) avec un port USB libre. Cet ordinateur peut fonctionner sous Windows, MacOS ou Linux.

  • Un programmateur USB vers UART (par exemple, un programmateur FTDI).

  • Un câble USB approprié pour connecter le programmateur à l’ordinateur de programmation.

  • Un câble d’alimentation électrique pour le routeur.

Carte USB vers UART

Un programmateur USB vers UART est nécessaire pour télécharger le croquis (programme) sur le processeur.
Ce programmateur est également utilisé pour surveiller les messages de débogage envoyés par le processeur.
Selon le système d’exploitation (Windows, MacOS ou Linux) de l’ordinateur de programmation, il peut être nécessaire d’installer un pilote pour le programmateur.
Les pilotes pour le programmateur FTDI sont disponibles sur le site Web du fabricant.
Les pilotes disponibles sur le site FTDI devraient convenir à la plupart des cas d’utilisation.
Il conviendra de choisir les pilotes de type VCP (Virtual COM Port).

Logiciel de programmation

Pour programmer l’Arduino, vous aurez besoin d’un logiciel de programmation.

Le logiciel le plus convivial et le plus simple pour accomplir cette tâche est l’Arduino IDE.
Il est facile à installer et à utiliser, et il est spécialement conçu pour programmer des cartes Arduino.
Cependant, vous pouvez également utiliser Visual Studio Code avec l’extension PlatformIO.
Cette combinaison offre un environnement de développement plus avancé et de nombreuses fonctionnalités supplémentaires pour les utilisateurs expérimentés.

Assurez-vous d’installer l’un de ces logiciels avant de continuer avec la programmation de votre carte.

L’Arduino IDE peut être téléchargé à partir du site Arduino.
Pour Windows, veillez à choisir la version Windows et non Windows App.
Si vous êtes totalement débutant dans le domaine de l’Arduino, nous vous recommandons de consulter le tutoriel Découverte de l’Arduino par exemple.
Il y en a beaucoup d’autres disponibles sur Internet.

Mise en place

Remarque

La carte FTDI dispose d’un commutateur ou d’un cavalier pour choisir entre 3,3 V et 5 V. Assurez-vous que le cavalier est correctement positionné pour la tension de fonctionnement de la carte-mère.

Un programmateur USB vers UART doit être connecté au connecteur FTDI du PCB comme indiqué ci-dessous.
L’autre extrémité du programmateur doit être connectée à l’ordinateur de programmation (PC ou équivalent) via un câble USB approprié.

La broche à une extrémité du connecteur à 6 voies du programmateur sera étiquetée Gnd. Cette broche doit correspondre au marquage 0 V sur le PCB.

Ici, nous utilisons le programmateur FTDI. Notez qu’il doit être monté dans le sens inverse.
La broche Gnd doit toujours être la plus proche du bord de la carte.
Pour éviter de tordre le connecteur du programmateur, vous pouvez fabriquer un simple câble d’extension comme indiqué ici.
Seules quatre des lignes sont réellement utilisées (données Tx & Rx, masse et réinitialisation).
Aucune des lignes d’alimentation électrique n’est utilisée par cette carte.

Le fil noir est destiné à la connexion GND (ou 0 V).

Note

La carte FTDI ne peut pas alimenter la carte-mère.

Le routeur doit toujours être alimenté par sa propre source d’alimentation.

Installation du Firmware

Étapes communes à toutes les versions : Installation des Logiciels

Étape 1 : Téléchargement du Firmware

  1. Ouvrir le navigateur : https://github.com/FredM67/PVRouter-3-phase

  2. Cliquer sur le bouton vert « Code »« Download ZIP »

  3. Enregistrer le fichier PVRouter-3-phase-main.zip

  4. Extraire le contenu dans un dossier de votre choix (exemple : Documents/Arduino/)

  5. Le firmware se trouve dans : PVRouter-3-phase-main/Mk2_3phase_RFdatalog_temp/

Structure du Firmware

Après extraction, vous devriez avoir :

Mk2_3phase_RFdatalog_temp/
├── Mk2_3phase_RFdatalog_temp.ino  (fichier principal)
├── config.h                     (configuration utilisateur)
├── calibration.h                (paramètres d’étalonnage)
├── dualtarif.h
├── processing.cpp
├── temperature.cpp
├── utils_temp.h
└── ... (autres fichiers)

Important

Seuls deux fichiers doivent être modifiés par l’utilisateur :

  • config.h — Configuration générale (pins, type d’affichage, sorties)

  • calibration.h — Paramètres d’étalonnage (à remplir après l’étalonnage)

Étape 2 : Configuration du Firmware

Ouverture du Projet

  1. Lancer Arduino IDE

  2. Menu : Fichier → Ouvrir

  3. Naviguer vers le dossier du firmware

  4. Ouvrir le fichier Mk2_3phase_RFdatalog_temp.ino

  5. Arduino IDE ouvre plusieurs onglets (c’est normal)

Note

Les autres fichiers (.cpp, .h) s’affichent automatiquement dans des onglets séparés.

Configuration dans config.h

Cliquer sur l’onglet `config.h` pour le modifier.

Version du PCB

Selon la version de votre PCB :

// Ancienne version de PCB (avant 2023)
inline constexpr bool OLD_PCB{ true };

// Nouvelle version de PCB (2023+)
inline constexpr bool OLD_PCB{ false };

Astuce

Si vous avez reçu votre kit après 2 023, mettez false.

Format de Sortie Série

Pour débuter, laisser le mode lisible par un humain :

inline constexpr SerialOutputType SERIAL_OUTPUT_TYPE = SerialOutputType::HumanReadable;

Options disponibles :

  • HumanReadable : Affichage facile à lire (recommandé pour débuter)

  • IoT : Format compact pour IoT

  • JSON : Format JSON pour intégration domotique

Configuration des Sorties Triac

Définir le nombre de sorties et leurs broches :

// Exemple : 2 sorties triac
inline constexpr uint8_t NO_OF_DUMPLOADS{ 2 };

inline constexpr IoPinMapping physicalPin_dump_load[NO_OF_DUMPLOADS]{
  { 5, DivertorConfig(NORMAL) },    // Sortie 1 sur broche D5
  { 4, DivertorConfig(NORMAL) },    // Sortie 2 sur broche D4
};
Ordre de Démarrage

Définir la priorité des charges :

inline constexpr uint8_t dumpLoad_startup_sequence[NO_OF_DUMPLOADS]{ 0, 1 };

Signification : Démarrer d’abord la sortie 0, puis la sortie 1.

Sondes de Température (Optionnel)

Si vous utilisez des sondes DS18B20, décommenter la ligne :

#define TEMP_ENABLED

Et configurer les adresses des sondes :

inline constexpr DeviceAddress sensor_list[3]
{
  { 0x28, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x01 },  // Sonde 1
  { 0x28, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x02 },  // Sonde 2
  { 0x28, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x03 },  // Sonde 3
};

Note

Les adresses des sondes seront trouvées lors du premier lancement (voir Moniteur Série).

Configuration dans calibration.h

Ce fichier contient les paramètres d’étalonnage.

Avertissement

Ne modifiez PAS ce fichier maintenant — les valeurs seront déterminées lors de l’étalonnage (voir chapitre Étalonnage ou Étalonnage).

Les paramètres par défaut permettent de tester le routeur.

Étape 3 : Connexion et Programmation

Préparation

Note

L’adaptateur FTDI ne peut PAS alimenter le routeur seul !

Le routeur doit être alimenté par sa propre alimentation triphasée.

Connexion du Routeur

Le PCB dispose d’un connecteur 6 broches pour l’adaptateur FTDI. Si votre adaptateur a un connecteur compatible, branchez-le directement — c’est la méthode la plus simple.

Si vous utilisez des fils individuels, suivez les instructions ci-dessous.

  1. ⚠️ Couper l’alimentation secteur du routeur (disjoncteur)

  2. Brancher l’adaptateur FTDI sur le routeur :

    Broche FTDI

    Broche PCB

    Couleur câble (FTDI)

    GND

    0 V (ou GND)

    Noir

    TX (Transmit)

    RX (Receive)

    Vert ou Orange

    RX (Receive)

    TX (Transmit)

    Blanc ou Jaune

    VCC

    NE PAS CONNECTER

    Rouge (laisser libre)

Danger

⚠️ Câblage manuel uniquement : NE PAS connecter le fil VCC (rouge) de l’adaptateur FTDI au routeur !

Cela peut endommager l’adaptateur FTDI ou le routeur.

  1. Vérifier le cavalier ou switch de l’adaptateur FTDI :

    • Position 3.3 V si routeur en 3.3 V

    • Position 5 V si routeur en 5 V

  2. Connecter l’adaptateur FTDI à l’ordinateur (port USB)

  3. Mettre le routeur sous tension (réenclencher le disjoncteur)

Configuration Arduino IDE

  1. Menu : Outils → Type de carte → Arduino AVR Boards → Arduino Uno

  2. Menu : Outils → Port → COMx (Windows) ou /dev/tty.usbserial-xxx (Mac/Linux)

    • Choisir le port correspondant à l’adaptateur FTDI

    • Si plusieurs ports : essayer chacun jusqu’à ce que ça fonctionne

  3. Menu : Outils → Programmateur → AVRISP mkII (ou laisser par défaut)

Compilation et Téléversement

Checklist avant téléversement

  • [ ] Modifications sauvegardées dans config.h

  • [ ] Routeur alimenté (230 V)

  • [ ] Adaptateur FTDI connecté (USB + PCB)

  • [ ] Bon port COM sélectionné

  • [ ] Type de carte = Arduino Uno

  1. Cliquer sur le bouton « Vérifier » (✓) pour compiler

    • Attendre la compilation (1-2 minutes la première fois)

    • Vérifier qu’il n’y a aucune erreur

  2. Si la compilation réussit, cliquer sur « Téléverser » (→)

    • La LED TX sur l’adaptateur FTDI clignote

    • La LED RX sur le routeur clignote

    • Attendre le message « Téléversement terminé »

Astuce

Si la compilation échoue avec des erreurs sur std::array ou constexpr, c’est que le fichier platform.txt n’a pas été correctement modifié (voir Configuration Arduino IDE pour C++17).

Résolution des Problèmes

Erreur : avrdude: stk500_recv(): programmer is not responding

Causes possibles :

  1. Mauvais port COM sélectionné → Essayer un autre port

  2. Routeur non alimenté → Vérifier l’alimentation 230 V

  3. Câblage FTDI incorrect → Vérifier TX ↔ RX inversés

  4. ATmega328 mal inséré → Vérifier l’orientation et l’insertion complète

Erreur : error: ’constexpr’ does not name a type

Le fichier platform.txt n’a pas été modifié correctement.

Solution : Reprendre Configuration Arduino IDE pour C++17.

Port COM n’apparaît pas
  1. Vérifier que les pilotes FTDI sont installés (Installation Pilotes FTDI)

  2. Débrancher/rebrancher l’adaptateur FTDI

  3. Redémarrer l’ordinateur

Étape 4 : Vérification du Fonctionnement

Ouverture du Moniteur Série

  1. Menu : Outils → Moniteur série

  2. Configurer en bas à droite :

    • Vitesse (baud rate) : 9600

    • Fin de ligne : Retour chariot et Nouvelle ligne (NL & CR)

Messages Attendus

Si tout fonctionne, vous devriez voir des messages s’afficher :

Mk2PVRouter v3.x
Initialisation...
CT1: 0 W
CT2: 0 W  (si triphasé)
CT3: 0 W  (si triphasé)
Grid: 230 V
Load 1: OFF
Load 2: OFF

Note

Les valeurs exactes dépendent de votre installation et de l’étalonnage.

Si Aucun Message n’Apparaît

  1. Vérifier que le bon baud rate est sélectionné (9600 bauds)

  2. Vérifier le câblage FTDI (TX ↔ RX)

  3. Vérifier que le routeur est alimenté

  4. Vérifier l’oscillateur 16 MHz et les condensateurs C6/C7

Adresses des Sondes de Température

Si vous avez activé TEMP_ENABLED, le moniteur série affichera les adresses détectées :

Temperature sensor 0 address: 28 AA BB CC DD EE FF 01
Temperature sensor 1 address: 28 AA BB CC DD EE FF 02

Copier ces adresses dans config.h (section sondes de température).

Prochaines Étapes

✅ Le firmware est maintenant installé et fonctionnel !

Prochaines étapes :

  1. Étalonnage : Voir chapitre Étalonnage ou Étalonnage

    L’étalonnage est OBLIGATOIRE pour que le routeur fonctionne correctement.

  2. Installation finale : Connexion au réseau électrique (faire appel à un électricien qualifié)

  3. Configuration avancée : Relais, sondes de température, double tarif, etc.

Danger

Ne pas connecter le routeur au réseau électrique domestique avant d’avoir :

  • [ ] Vérifié toutes les soudures (pas de pont, pas de soudure froide)

  • [ ] Lu le chapitre de sécurité

  • [ ] Fait appel à un électricien qualifié (fortement recommandé)

Important

FONCTIONNALITÉ : L’étalonnage doit être effectué après l’installation électrique pour que le routeur mesure correctement et fonctionne de manière optimale. Le routeur peut être connecté sans étalonnage (pas de danger), mais ne fonctionnera pas correctement.

Test de la partie mesures

Note

À partir de maintenant, une alimentation triphasée devra être fournie à la carte-mère.

Chaque transformateur a deux sorties : l’une pour l’alimentation CC, l’autre pour le capteur de tension CA qui devrait déjà fonctionner. Cela peut être vérifié en exécutant un programme (croquis) qui affiche les mesures analogiques prises par le processeur Atmel (IC1).

Le programme, qui se trouve également sur la page Téléchargements, est : RawSamplesTool_6chan.ino

Après avoir téléchargé ce croquis sur le processeur via l’Arduino IDE, la fenêtre série (icône en forme de loupe) doit être ouverte. Après avoir terminé chaque exécution, le programme peut être redémarré à partir du clavier en saisissant le caractère « g », suivi de Entrée.

Le programme RawSamplesTool_6chan affiche les échantillons des trois tensions alternatives et de courant pour un ou plusieurs cycles secteur complets. Si un courant important est mesuré ainsi que la tension, les résultats affichés sembleront plus intéressants.

Voici quelques résultats capturés lors de la mesure du courant consommé par une charge de 3 kW avec le CT branché sur CT2. Lorsque le CT a été déplacé vers le port CT1, la sortie résultante semblait presque identique, mais avec les caractères « 1 » et « 2 » inversés.

RSResults_V_and_I2.txt

Si aucun signal n’est disponible sur les ports CT1-CT3, les formes d’onde de ces canaux seront toutes deux des lignes droites. Seuls les signaux de tension afficheront un aspect sinusoïdal. Pour vérifier le fonctionnement des ports CT1-CT3 pendant que le PCB est testé sur le banc, un câblage adapté sera nécessaire.