Kévin Juge

Réalisation de projets de développement logiciel

  • Assistance à la maîtrise d'ouvrage
  • Ingénierie informatique et automatisme industriel
  • C/C++, Python, Qt, IEC61131-3

Carte électronique de prototypage

Ce projet fut réalisé en 2014/2015

Objectifs:

  • Rafraîchir mes connaissances en lien avec les cours d'informatique suivis 8 ans plus tôt en IUT
  • Préparer de futurs projets (modélisme à ce moment)

Matériel

  • Circuit d'alimentation avec régulateur (pour pouvoir utiliser une alimentation externe 12V ou une alimentation USB)
  • Un circuit dérivé du programmateur UsbPicProg, comprenant:
    • 1 micro-contrôleur Microchip PIC18F2450 (pour programmer le second)
    • 1 pompe à charge pour générer la tension de programmation à partir du 5V provenant du port USB
  • Le circuit de prototypage
    • Micro-contrôleur Microchip PIC 16F877A
    • Mémoire Microchip 24C16
    • Liaison série RS232 (Maxim MAX232)
    • Buzzer
    • Afficheur LCD 2x16 caractères
    • Drivers ULN2003 pour piloter un moteur pas-à-pas
    • 4 boutons
    • 3 potentiomètres (entrées analogiques)
    • 4 LEDs
    • Pont en H L298 pour piloter un moteur (2 sens, activation et mesure de courant)

En 2017, une seconde version de la carte a vu le jour afin d'améliorer:

  • Utilisation de la liaison série du micro-contrôleur PIC18F2550 afin de l'utiliser comme convertisseur série / USB, ce qui aurait nécessité de modifier son programme par la suite.
  • Intégration d'un support à force d'insertion nulle (ZIF) afin de simplifier le changement de micro-contrôleur (par exemple PIC 18F)
  • Gestion de l'alimentation 12V par transistors (alimentation buzzer et moteurs)

Première version

Electronic board

Seconde version

Electronic board

Logiciel

La programmation pouvait être réalisée avec:

  • Des logiciels Open Source: Code::Blocks et le compilateur Small Device C Compiler (SDCC)
  • L'environnement de développement intégré du fondeur: MPLAB et le compilateur libre CC5X (PIC 16F) ou CC8E (PIC 18F), que nous utilisions en IUT

Le programme du programmateur est fourni par UsbPicProg

Celui développé pour le second micro-contrôleur a permis de tester les différentes fonctions de la carte

Gestion des interruptions

  • Timer (commande du moteur pas-à-pas, LEDs, buzzer, ...)
  • Communication série

L'un des boutons permet de sélectionner un mode, qui s'affiche sur l'affficheur LCD:

  1. Affichage des valeurs des entrées analogiques sur l'afficheur LCD
  2. Gestion d'un moteur à l'aide du hacheur en modulation de largeur d'impulsion (MLI), affichage courant, tension, et sens de rotation
  3. Gestion d'un moteur pas-à-pas, affichage du sens de rotation
  4. Gestion du buzzer, fréquence variable grâce à la MLI
  5. Communication par liaison série

Véhicule auto-guidé

Ce projet débuta durant l'année 2016

Objectifs:

  • Améliorer un véhicule radio-commandé, vers une commande numérique, pour, par la suite, le rendre auto-guidé à l'aide d'une caméra, et y ajouter une interface graphique

Ce projet a été réalisé en plusieurs parties

  1. Conception et réalisation des cartes électroniques du véhicule et de la télécommande
  2. Développement des programmes des micro-contrôleurs en C
  3. Développement des programmes de communication, de traitement d'image et d'interface graphique en C/C++, Qt et OpenCV

Véhicule et télécommande

Matériel

Carte électronique de la télécommande:

  • Alimentation 9V / 5V depuis une pile
  • 2 commandes analogiques par potentiomètre pour la propulsion et la direction
  • Ajout de 4 boutons: 4 roues motrices, klaxon, phares et aito-guidage

Celle-ci est composée de:

  • Micro-contrôleur PIC 16F1508
  • Émetteur radio 433MHz

Carte électronique du véhicule:

  • Alimentation 7,2V / 5V par batterie NiMh 3000mAh
  • Régulation du servomoteur de direction par pont H L293D
  • Klaxon par buzzer
  • Régulation de propulsion par pont H L298: commande des 2 moteurs et mesure de courant
  • Micro-contrôleur PIC 16F886
  • Phares
  • Gestion d'une alimentation externe pour Raspberry
  • Communication I2C avec le Raspberry
  • Récepteur radio 433 MHz

En 2017, une seconde version de la carte a vu le jour pour résoudre quelques problèmes:

  • Remplacement du pont H L298 par 2 ponts H MC33887 sur une carte fille du fait de l'espace disponible, afin d'augmenter le courant des moteurs de 2 à 5A et gestion des déafuts des ponts
  • Amélioration de la gestion de l'alimentation de la carte et externe
  • Séparation des sorties pour les feux (aguche, droit et arrière)

Logiciels

Au début du projet j'utilisais Code::Blocks, le compileur Small Device C Compiler (SDCC) et la carte de programmation UsbPicProg pour la programmation des micro-contrôleurs
Puis j'ai acquis un programmeur / débogueur PicKit3, utilisé avec MPLABX (compatible Linux) afin de simplifier le débogage.

UsbPicProg

UsbPicProg

PicKit3

Pic Kit 3

Fonctionnalités de la télécommande

Envoi d'une trame toutes les 10 ms, contenant:

  • Consigne de propulsion
  • Consigne de direction
  • Position des boutons

Fonctionnalités du véhicule

  • Arrêt du véhicule par watchod timer (en cas de perte de communication)
  • Arrêt des moteurs lorsque la batterie est déchargée
  • Commande par I2C (Raspberry ou interface homme-machine)
  • Commande par liaison série (télécommande)
  • Gestion des défauts des hacheurs pour activer la commande des moteurs
  • Réglage de la position centrale de direction
  • Régulation de la propulsion et direction par régulateur PID (Proportionnel, Intégral, Dérivé). La mesure de position pour la direction nécessiterait un amplificateur ou convertisseur plus précis
  • Activation des 2 hacheurs (4 roues motrices) lorsque le mode est activé ou lorsque le courant du premier moteur est supérieur à un seuil. À l'usage les 2 hacheurs doivent être activé, sinon le couple moteur-transmission non utilisé freine le véhicule
  • Gestion du klaxon
  • Réinitialisation des commandes provenant de la télécommande toutes les 15 ms
  • Mesure du courant des moteurs
  • Mesure de la tension de la batterie
Table de communication I2C (mots de 16 bits)
Émission I2C (état) Réception I2C (commandes)
Référence propulsion Référence propulsion
Référence direction Référence direction
Position direction Réglage direction
Position maximale à gauche Mot de commande
Position maximale à droite
Courant moteur avant
Courant moteur arrière
Tension batterie
Tension nominale batterie
Tension minimale batterie
Mot de commande
Mot d'état

Communication, traitement d'image et interface graphique

Raspberry

Ce programme, dans sa première version, était écrit en C, et permettait de transmettre les données entre le véhicule et un ordinateur distant grâce à l'I2C et le Wifi du Raspberry

Depuis sa création plusieurs améliorations ont été réalisées:

  • Modification du transfert des données dans le programme: utilisation de file des messages à la place de mémoire partagée et mutex, suite à une expérience professionnelle
  • Modification des tâches "serveur":
    1. Séparation données et image: 2 sockets sur 2 threads
    2. Essais de différents protocoles: TCP, UDP, RTP (adaptés aux flux vidéo)
  • Compression de l'image avant transmission

En lien avec la documentation restreinte d'OpenCV en langage C, ce programme a évolué vers du Python puis du C++, plus performant et adapté à la gestion bas niveau (champs de bits).

Première version avec serveurs séparés

Software architecture

Dernière version avec file de messages

Software architecture

Chaque tâche transmet ses messages vers une file principale
Le programme principal re-transmet le message vers le bon destinataire

La tâche de traitement d'image transmet la dernière image vers la mémoire partagée, puis la tâche serveur d'image la transmet à l'ordinateur distant

Raspberry + caméra

Raspberry camera

Micro-contrôleur ESP32

Du fait de la consommation énergétique élevée du Raspberry, je me suis orienté en 2021, vers un micro-contrôleur ESP32 associé à une caméra.
Le module ESP323-CAM est ainsi composé de celui-ci, d'une mémoire externe de 4 MB, d'un connecteur pour caméra et son antenne Wifi
2 caméras étaient proposées et cdelle grand angle convient mieux à cette application

Comme les ressources de ce micro-contrôleur sont limitées, traitement d'image notament, j'ai simplifié le programme afin de transmettre les données entre le véhicule et l'ordinateur distant, ainsi qu'envoyer les images.

L'ESP32 peut être programmé avec l'Environnement de développement intégré (IDE) Arduino ou le framework de développement IoT (IDF) compatible avec VsCode et Eclipse. Étant plus expérimenté en C/C++, j'utilise ce framework avec Eclipse.

Le programme principal s'occupe de l'initialisation du Wifi et des buffers
La tâche I2C communique avec le serveur de données grâce à 2 buffers circulaires
La tâche liée à la caméra reçoit les paramètres de la caméra depuis le serveur d'image grâce à un buffer circulaire et lui renvoie la dernière image (buffer de 3 images lié à la capture)

Architecture avec buffers circulaires

Software architecture

ESP32-CAM

Software architecture

Interface homme-machine

Ce programme est écrit en C++/Qt

  • Interface reprenant les différentes fonctions décrites auparavant
    • Commandes: klaxon, phares, pilotage manuel, pilotage autonome, affiche de l'image, réglage direction, affichage des données sous forme graphique
    • Information d'état des commandes effectives: les commandes sont envoyées au véhicule, puis retournées dans le mot d'état
  • 2 tâches liées à l'émission / réception des données et réception de l'image

L'utilisation de l'ESP32 a introduit des modifications:

  • Ajout d'une tâche liée au traitement d'image avec OpenCV
  • Ajout de la configuration de la caméra (taille d'iamge, filtres)
  • Ajout des images liées au traitement d'image: modification espace de couleur, détection ligne, ligne représentant la direction, ...

Interface avec image issue de la caméra

Human machine interface

Traitement d'image

Le traitement des images est réalisé grâce à la librairie OpenCV et permet au véhicule de suivre une ligne de couleur

L'angle de direction du véhicule est issu de la détection de cette ligne, réalisé comme ci-dessous:

  • Correction de la balance de blancs
  • Modification de l'espace de couleur RGB vers HSV (teinte, saturation, couleur)
  • Détection des bords de la ligne à partir d'une teinte
  • Filtrage du 1/3 bas de l'image, à proximité du véhicule
  • Détection des segments de ligne
  • Suppression des segments horizontaux
  • Calcul de la direction des segments à gauche et à droite
  • Moyenne des directions
  • Calcul de l'angle de direction
  • Affichage d'une barre centrée en bas de l'image pour représenter la consigne de direction

Suite à l'utilisation de l'ESP32, les images intermédiaires peuvent être affichées sur l'interface graphique, ce qui simplifie le déboguage

Difficultés et améliorations

  • Latence sur les commandes du véhicule (propulsion, direction) depuis l'interface graphique
  • Manque de précision pour la position de direction
  • Latence pour le transfert d'image et utilisation importante du processeur du Raspberry: il serait préférable de compresser les images avec son encodeur matériel
  • La détection de ligne est d'autant plus complexe que le véhicule se déplace rapidement. En effet, les différentes étapes: communication, problème de latence, traitement (dont reflets liés à l'éclairage, très consommateur de ressources), envoi des commandes nécessitent du temps

Je pensais intégrer d'autres fonctions plus complexes

  • Guidage grâce au machine learning: détection de panneaux de direction (tourner, faire demi-tour ou lire un texte)
  • Réalisation du plan d'un appartement: le véhicule se déplace seul est établit un plan, ce qui fait apparaître le problème de calcul de distance sans référence

Radiateur

Radiateur

Radiateur

Ancienne carte électronique

Ancienne carte électronique

Ce projet a débuté à l’automne 2021, en lien avec la vétusté d’un radiateur électrique à accumulation (avec 300kg de briques, ce qui permet de stocker 48kWh)

Objectifs:

  • Remédier à l’obsolescence des pièces détachées, dont la carte de régulation de charge
  • Ajouter des fonctionnalités comme pour les thermostats connectés actuels (régulation de la température ambiante, planification horaire, configuration, ainsi que gestion des défauts et affichage des tendances grâce à une interface Web)

Matériel

Réalisation d’une carte électronique pour la régulation électronique de charge

Carte électronique

Circuit d’alimentation

  • Alimentation 230V AC / 9V DC
  • Alimentation 9V DC : commande des relais
  • Alimentation 5V DC : super condensateur, entrées logiques et micro-contrôleur
  • Alimentation 3,3V DC : convertisseurs MAX31865, réglage de charge et LED

Entrées logiques

  • Heures creuses (230V)
  • Relance charge (230V)
  • Thermostat externe (230V)
  • Sécurité ventilateurs (230V)
  • Présence alimentation (3,3V) - Entrée (dans le domaine d’alimentation RTC) pour la mise en veille et réveil du micro-contrôleur.

Entrées analogiques

  • 3 Sondes de température / convertisseur - SPI
    • Sonde noyau – Pt700
    • Sonde extérieure – Pt100
    • Sonde ambiance – Pt100
  • 1 entrée analogique : réglage du niveau de charge

Sorties logiques

  • 3 relais 16A pour les résistances (2kW)
  • 1 relais 16A pour les ventilateurs

Super condensateur

  • Permet de remplacer une batterie et sert à alimenter le micro-contrôleur en cas de coupure électrique (afin de sauvegarder les paramètres et l’horodatage)

Micro-contrôleur

  • ESP32-WROOM-32D sur carte de développement ESP32-DevKitC

Du fait de l’utilisation des convertisseurs de température Max31865, qui ne sont fabriqués qu’en CMS, j’ai choisi de faire fabriquer la carte après un premier essai avec ma machine à graver. Ce qui explique la taille des pistes, des via et autres composants traversants.

En 2023: Réalisation d’une seconde version pour corriger quelques erreurs

  • La carte de développement ESP32-DevKitC-32D est obsolète : remplacement par un Module ESP32-WROOM-32E, ce qui permet de supprimer l’alimentation 5V DC et les régulateurs de tension.
  • Correction d’une inversion entre le signal de présence d’alimentation (entrée non RTC) et la seconde LED (non configurable en sortie)
  • Ajout des résistances de pull-up pour la liaison SPI des convertisseurs des sondes
  • Ajout d’une entrée pour le décodage du signal Pulsadis EDF (informations liées à la tarification)

Logiciel

Le module ESP32 comprend

  • module Wifi 2,4GHz + Bluetooth + Bluetooth LE
  • mémoire flash
  • une antenne Wifi (sur la carte)
  • le micro-contrôleur peut être cadencé jusqu’à 240MHz et comprend 2 cœurs
  • il est muni de FreeRTOS

Le logiciel est réalisé en C++ avec 4 classes principales, comprenant les différentes tâches

Organisation initiale des tâches

Organisation des tâches

Diagramme des classes

Classes

Les classes

Main

Point d’entrée de l’application

Initialise les principales classes (MessageSwitcher, HardwareManagement, WebServer, SchedulingAndRegulation), démarre leurs tâches et appel infiniment la fonction « switchMessage »

Classes principales (contenant les différentes tâches)

Classes principales

Diagramme d'activité du programme principal

Activité programme principal

MessageSwitcher

Classe dédiée aux files de messages

La fonction « switchMessages » permet de router les messages entrants vers les files de messages appropriées (selon l’identifiant du message)

Diagramme d'activité "switchMessages"

Diagramme d'activité \

HardwareManagement

Gestion des interfaces matériel / logiciel

  • 1 Timer (1s) pour déclencher la mesure des valeurs analogiques
  • 1 bus SPI : partagé entre les 3 convertisseurs des sondes de température
  • 5 entrées logiques avec leur gestionnaire d’interruption : qui envoie un message vers un gestionnaire d’événement ou une file de message en cas de changement d’état
  • 1 entrée analogique
  • 7 sorties logiques : LEDs et relais
  • 4 filtres afin d’utiliser une valeur moyenne des mesures analogiques

L’exécution de la tâche permet, successivement

  • Lecture des messages reçus dans la file de messages
  • Mise à jour, si besoin, de l’état des sorties
  • Lecture successive, si autorisé, des mesures analogiques et envoi, si besoin, des nouvelles valeurs dans la file de messages

La mise à jour de l’état des entrées est réalisée par interruption : un message est envoyé dans la file de message lors d’un changement d’état

Un timer permet de déclencher la mesure des valeurs analogiques, en raison de leur faible fréquence (1s).

Classe HardwareManagement

HardwareManagement

Classe Input

Input

Classe Output

Output

Classe AnalogInput

AnalogInput

Classe MAX31865

MAX31865

Classe SPI

SPI

Le code du Max31865 et du SPI est issu du dépôt GitHub suivant:

SchedulingAndRegulation

Gestion des régulateurs (charge et température ambiante), chargement / sauvegarde des paramètres

  • 1 Timer (1s) pour transmettre les tendances au serveur Web

L’exécution de la tâche permet, successivement

  • Lecture des messages reçus dans la file de messages
  • Mise à jour, si besoin, des données liées aux régulateurs, état des entrées, sauvegarde des paramètres et mise en veille, mise à l’heure et mise à jour des paramètres
  • Mise à jour des points de consignes en fonction de la planification horaire
  • Mise à jour des régulateurs
  • Mise à jour de la commande des relais et LEDs

Mise à l’heure

L’horloge RTC est celle du micro-contrôleur, toutefois elle s’arrête en veille profonde. Le réglage de l’heure, et non la date, se fait de manière autonome grâce aux informations heures creuses / heures pleines et l’interface web permet à l’utilisateur de régler l’horodatage.

Dans le lieux où est installé l’appareil, les heures creuses sont déclenchées selon 2 créneaux par jour 15h-17h et 22h-6h

Périodes tarifaires

Périodes tarifaires

Si la période d’heures creuses a durée 2, il est 17h. Sinon il est 6h le jour suivant.

Class SchedulingAndRegulation

SchedulingAndRegulation

Class Regulator

Regulator

Class RoomRegulator

RoomRegulator

Class LoadRegulator

LoadRegulator

Cette page m’a permit d’améliorer l’algorithme de mon régulateur PID:

Cette page m’a permis d’implémenter le régulateur de charge, et d’y ajouter quelques fonctionnalités comme le décalage du point de charge :

Settings

Ils contiennent:

  • 1 planification par défaut, soit 24h configurable par 1/2h
  • 1 planification hebdomadaire (7 jours, configurables par 1/2h)
  • température hors gel
  • température de confort
  • température réduite
  • nombre de jours de congés restants
  • horodatage
  • activation de la sonde de température externe
  • activation de la gestion du ventilateur
  • puissance de relance
  • puissance nominale
  • type d’alimentation (monophasée, triphasée)
  • type d’accumulation (proportionnel, automatique, …)
  • décalage de charge (début, milieu, fin de nuit)

Afin de simplifier le programme, chacune des tâches WebServer et SchedulingAndRegulation instancie la classe Settings, qui permet de charger / sauvegarder les paramètres depuis la mémoire flash. Lorsqu’une modification d’un paramètre a été effectuée depuis l’interface Web, celui-ci est sauvegardé dans la flash et un signal est envoyé à la tâche SchedulingAndRegulation pour lui indiquer qu’une modification a eu lieu. Trois identifiants de messages, correspondants au différents paramètres, sont implémentés : paramètres, consignes et planification.

Classe Settings

Settings

WebServer

Gestion de l’initialisation du WiFi en point d’accès, gestion des connexions et échange de données avec la page Web (dont celles de configuration) grâce à plusieurs gestionnaires des ressources et une librairie Json (cJSON).

Le site web est réalisé en HTML/CSS, et tous les fichiers sont stockés sur le micro-contrôleur du fait de la configuration en point d’accès, ce qui nécessite beaucoup de mémoire (79,5ko).

L’exécution de la tâche permet, successivement :

  • Lecture des messages reçus dans la file de messages
  • Copie, si besoin, des données liées aux tendances dans un buffer tournant
  • Mise à jour des index liés au buffer

Class WebServer

WebServer

Page web (haut)

Haut page web

Page web (bas)

Bas page web

Chauffage solaire

Ce projet a débuté au cours de l'été 2022

Objectifs :

  • Optimiser la récupération d'énergie d'un système solaire thermique
  • Automatiser la vidange et le remplissage du circuit en fonction des conditions climatiques (gel)
  • Lire des données grâce à des cartes déportées, afin de limiter les câbles (tempértaure, irradiation, ...)
  • Dialoguer avec une chaudière pour lire ses valeurs (températures, ...) et éventuellement la piloter
  • Pouvoir intégrer, par la suite, un système de tracking solaire afin d'optimiser l'inclinaison des panneaux
  • Générer des tendances sur une interface Web (températures, puissance récupérée, ...)
  • Anticiper de futures évolutions (entrées / sorties supplémentaires)

Matériel

Cartes électroniques

Cartes électroniques

Carte principale

Circuit d'alimentation

  • Alimentation 230V AC / 12V DC
  • Alimentation 12V DC : contrôle par relais
  • Alimentation 5V DC : supercondensateur, horloge RTC, sorties analogiques et Raspberry Pi Zero W (ou ESP32)
  • Alimentation 3,3V DC : convertisseurs MAX31865, entrées logiques, communication

Entrées logiques

  • Niveau bas du réservoir (230 V)
  • Niveau haut de réservoir (230 V)
  • Reserve (230V)
  • Reserve (230V)
  • Présence d'alimentation (3,3 V) - Pour mettre le nano ordinateur en veille

Entrées analogiques

  • 4 sondes de température / convertisseur - SPI
    • Température aller panneaux – Pt100
    • Température retour panneaux – Pt100
    • Température entrée de l'échangeur – Pt100
    • Température sortie de l'échangeur – Pt100

Sorties logiques

  • 1 relais 16A pour électrovanne de vidange
  • 2 relais 16A en réserve

Sorties analogiques

  • 2 sorties analogiques (vers 10 V) avec MCP4922 / amplificateurs (SPI)
  • Circulateur avec un Triac (230 V / 16 A)

Communication

  • 1 émetteur-récepteur RS485 pour communication par carte externe
  • 1 émetteur-récepteur RS485 pour la communication de la chaudière

Super condensateur

  • Permet de remplacer une pile et sert à alimenter le nano ordinateur en cas de coupure de courant

Horloge RTC

  • DS1337 (I2C)

Nano-ordinateur

  • Raspberry Pi Zero W

Carte déportée

Circuit d'alimentation

  • Alimentation 9V DC
  • Alimentation 3,3 V DC : convertisseurs MAX31865, entrées, communication et microcontrôleur

Entrées analogiques

  • 2 sondes de température / convertisseur - SPI
    • Température aller panneaux – Pt100
    • Température retour panneaux – Pt100
  • Irradition solaire
  • Pression, température, humidité - BME280 (SPI)

Communication

  • 1 émetteur-récepteur RS485 pour la communication avec la carte principale

Microcontrôleur

  • Microchip PIC16LF1508

Aérogénérateur

Ce projet a débuté en 2023

Objectifs:

  • Réaliser un prototype d'aérogénérateur basé sur une aile de kitesurf
  • Tester la viabilité

Matériel

Le système sera constitué de plusieurs cartes électroniques, adaptées aux différentes parties. Et différentes configuration seront testées.

  • Les cartes d'instrumentation, positionnée sur l'aile. Ce qui permet de remonter les informations liées à sa dynamique (gyroscope / accéléromètre).
    Une communication radio est nécessaire du fait de la longueur des lignes, et 2 configurations seront testées : Bluetooth et radio inférieure au GHz
  • La carte de commande, qui récupère, traite les informations et commande l'aile. Cette carte est compatible pour les 2 modes de commaunication radio.
  • Les cartes de puissance qui adaptent les tensions nécessaires aux servomoteurs
  • La carte de commande d'un ventilateur, qui est optionnelle, et permettra de tester le système

Carte d'instrumentation 1 (sur l'aile)

Première option de la carte où le micro-controleur fait l'interface entre les capteurs et l'émetteur radio

Circuit d’alimentation

  • Alimentation par batterie jusqu'à 9V DC
  • Alimentation 3,3V DC : gyroscope, accéléromètre, émetteur radio, micro-contrôleur

Capteurs

  • Accéléromètre IIS2DLPC
  • Gyroscope IAM-20380

Communication

  • Si4060

Micro-contrôleur

  • STM8L101F3P

Carte d'instrumentation 2 (sur l'aile)

Seconde option de la carte où il paraît possible d'utiliser le module BlueNRG-M2SP comme interface avec les capteurs et émetteur, du fait de ses possibilités de programmation.

Circuit d’alimentation

  • Alimentation par batterie jusqu'à 9V DC
  • Alimentation 3,3V DC : gyroscope, accéléromètre, BlueNRG-M2SP

Capteurs

  • Accéléromètre IIS2DLPC
  • Gyroscope IAM-20380

Communication

  • BlueNRG-M2SP

Carte de commande

Circuit d’alimentation

  • Alimentation 12V DC (à partir d'une alimentation déportée du fait de la puissance nécessaire au pilotage de l'aile)
  • Alimentation 3,3V DC : super-condensateur, convertisseur analogique-numérique, récepteur radio, micro-contrôleur
  • Alimentation 5V / 3,3V DC : port USB

Entrées logiques

  • Passage par zéro de la tesnion (sinusoïde 230V)

Entrées analogiques

  • Convertisseur analogoique-numérique (SPI)
    • tension de sortie des 3 hacheurs
    • courant des 3 hacheurs
  • Vitesse du vent (anémomètre)
  • Direction du vent (Girouette)

Sorties analogiques

  • sortie PWM pour régler la tension des 3 hacheurs
  • sortie PWM pour le servomoteur des arrières de gauche
  • sortie PWM pour le servomoteur des avants
  • sortie PWM pour le servomoteur des arrières de droite
  • sortie PWM pour piloter le ventilateur (fonction test)

Communication

  • Si4362
  • STM32WB55
  • Connecteur pour communaiction SPI (si besoin d'évolution)

Micro-contrôleur

  • STM32WB55

Carte de puissance

Ne connaissant pas l'effort de traction nécessaire au pilotage de l'aile, je prévois d'utiliser des servomoteurs de 35kg. Ce qui permet de dimenssionner les hacheurs.

Caractéristiques

  • Alimentation 12V DC à partir d'une alimentation déportée du fait de la puissance nécessaire
  • Sortie jusqu'à 12V DC - 6A
  • Circuit d'amplification pour la commande du transistor (3,3V / 12V)
  • Mesure de la tension et courant de sortie
  • Carte générique pour les 3 hacheurs

Carte de commande d'un ventilateur (test du système)

Circuit de commande d'un ventilateur, afin de simuler le vent et tester le système

Caractéristiques

  • Commande du ventilateur par PWM depuis la carte de commande et Triac (230V AC - 16A)
  • Détection du passage par zéro de la tension sinusoïdale (cahrge inductive) à destination du micro-contrôleur