Retourner à la page principale
Disponible à partir d'août 2025
terence.marchal@gmail.com 06 02 34 64 55
View in English

Introduction

Depuis toujours, j'occupe mon temps libre avec des projets personnels divers et variés. J'ai commencé dès le collège avec des jeux vidéos, et c'est désormais la mécatronique qui m'attire avec des projets mêlant informatique embarqué, IHMs haut-niveau, électronique et mécanique.

Vous trouverez donc ici une liste non-exhaustive des différents projets personnels sur lesquels j'ai eu l'occasion de travailler. Pour les projets les plus anciens, les sources ont parfois été perdues et je n'ai pas toujours pris le temps de prendre des photos ou des vidéos de mes réalisations. Les sources ont parfois été publiées des années plus tard, telles quelles, et ne sont pas forcément représentatives de ma façon de travailler actuelle.

Plotter & logiciel de traitement d'image

2024
  • Java
  • Impression 3D
  • CAO
  • GRBL v1.1
  • Quantification de couleurs
  • Détection de contour
  • Optimisation de chemin

J'ai conçu et fabriqué une machine à commande numérique de dessin capable de charger et décharger différents outils. Elle est ainsi capable de changer de couleur de stylo automatiquement par exemple.

J'ai développé un logiciel de traitement d'image capable de convertir une image raster (.png, .jpg, etc.) en une succession de chemin vectorisés. De nombreux paramètres peuvent être configurés et leur impact visualisé en temps-réel. Ces chemins sont ensuite convertis en instructions G-Code pour piloter la machine.

Différentes transformations sont appliquées à une image avant de pouvoir la dessiner : réduction du nombre de couleur, création d'une table de correspondance avec les encres disponibles et leur intensité, détection des contours, génération des chemins, optimisation des chemins par algorithme génétique, etc.

J'ai également développé une interface graphique afin de pouvoir piloter manuellement la machine, ainsi que streamer et suivre l'avancement des instructions de dessin.

La machine en elle-même est basée sur une architecture CoreXY et a été designée en CAO. Elle est constituée de profilés en aluminium, de pièces en plexiglas découpées au laser et de pièces imprimées en 3D. La transmission de mouvements se fait par des moteurs pas-à-pas, des courroies et des guides linéaires. Elle est pilotée par un Arduino Uno équipé de GRBL v1.1.

The Plotter Project The Plotter Project The Plotter Project The Plotter Project The Plotter Project The Plotter Project The Plotter Project Korean Flowers Frog Chinese Dragon

Application d'apprentissage du Ukulélé

2023
  • Java
  • Swing
  • Fast-Fourier Transform
  • Sound Analysis

Après m'être essayé au Ukulélé, j'ai voulu vérifier la faisabilité technique d'une application d'apprentissage de cet instrument.

En appliquant l'algorithme de Transformée de Fourier Rapide, l'application est capable d'identifier de simples notes, mais aussi des accords complets.

J'ai également développé un outil pour convertir des tablatures au format texte en partition interactives. En faisant défiler ces partitions à l'écran, le but est de guider l'utilisateur et de lui fournir un feedback sur les accords qu'il joue. En comparant le son en provenance du micro et la partition, on peut notamment détecter qu'un doigt mal placé est à l'origine d'une fausse note.

La faisabilité technique de ce projet ayant été validée, la prochaine étape serait de développer une version mobile de cette application, et d'étoffer les interfaces utilisateurs. La génération automatique de partition est également un sujet complexe qui mériterait des investiguations supplémentaires, des problématiques de droit d'auteur se posant.

Ukulele Learning App Ukulele Learning App

Machines & logiciel Pick & Place

2019
  • C
  • Java
  • Arduino
  • Gerber parsing
  • SMD components recognition
  • Autodesk Eagle
  • Solidworks
  • GRBL

Ce projet s'est basé sur une fraiseuse à commande numérique que j'avais déjà conçue et fabriqué. J'ai ensuite ajouté un distributeur de pâte à souder pneumatique ainsi qu'une pompe à vide sur le porte-outil afin de pouvoir placer des composants CMS sur une carte PCB, qui serait ensuite place dans un four à refusion.

J'ai commencé ce projet seul et ai ensuite eu l'occasion de recruter deux étudiants pour m'aider dans le cadre de leur cursus universitaire. J'ai dirigé cette petite équipe mis en place différents processus afin d'améliorer et fiabiliser ma première preuve de concept et la transformer en véritable machine Pick & Place.

Nous avons développé un logiciel Java afin de parser des fichiers de PCB .gerber et permettre à l'utilisateur de configurer les feeders de composants et contrôler la machine Pick & Place.

Nous avons également ajouté deux caméras sur la machine. La première était statique et orientée vers le haut ; tous les composants CMS étaient positionnés au dessus d'elle afin de déterminer leur orientation et leur position exact par rapport à la tête de la pompe à vide. La seconde était montée sur le porte-outil et orientée vers le bas et servait à vérifier que les composants avaient bien été placés comme attendu sur le PCB.

Bien que nous ayons été satisfait des résultats obtenus avec cette machine PnP, nous en sommes arrivés à la conclusion qu'il fallait conçevoir une machine spécifique, plus petite mais plus précise, afin d'améliorer la qualité des placements. La gestion des feeders, afin de pouvoir utiliser des composants CMS packagés en rouleaux, était trop complexe au vu du niveau de précision de notre CNC.

Milling Machine Milling Machine Milling Machine P&P Machine V2 Bottom Vision TSSOP28 Top Vision

Table à LEDs interactive

2017
  • C
  • Arduino
  • Multiplexing

J'ai construit une table basse équipée d'une matrice de 24x40 LEDs bleues et d'une sous-matrice de 12x20 émetteurs/récepteurs infrarouge. Le but était de détecter des objets posés sur la table ainsi que les mouvements de main des utilisateurs afin d'intéragir avec la table.

J'ai développé quelques petits jeu comme un Snake par exemple, mais le faible nombre de LEDs et surtout de transmetteurs IR ne permettaient pas de plus développer le potentiel de la table plus loin. Pour des raisons d'économies, j'ai préférer utiliser des composants go-through soudés à la main plutôt que des PCB peuplés de composants CMS mais malheureusement la table n'a pas survécu à mes déménagements successifs pendant mes années d'études.

LED Table

Blue Sunshine

2015
  • Java
  • Path Finding
  • 3D Sound

J'ai développé un jeu de tir futuriste 2D, en vu du dessus. Il s'agissait à la base d'un projet purement personnel, mais j'ai pu le présenter dans le cadre de ma spécialité Informatique et Sciences du Numérique de mon bac S Sciences de l'Ingénieur. Ce projet m'a valu la note de 20/20, ce qui était une première dans mon lycée en dix ans.

Pour obtenir un style futuriste, j'ai décidé de m'interdire l'utilisation d'images rasterisées, tous les visuels sont donc basés sur des formes géométriques générées en pur code.

J'ai développé des ennemis intelligents, capable de faire des rondes, de se diriger vers la source d'un bruit suspect, de réagir à une alarme liée à une caméra de surveillance, d'appeler des renforts, etc. J'ai implémenté une dizaine d'armes différentes, et l'environnement est destructible. Les ennemis sont capables de s'adapter à ce nouvel environnement, en passant par un trou fait par le joueur dans un mur par exemple. Les ennemis ne sont pas visibles à travers les murs, mais le joueur peut s'aider des sons spacialisés pour détecter leur présence.

Pour les besoin de développement, j'ai également créé un éditeur de niveau complet. Il est possible de créer un niveau en ajoutant des murs, des portes, des caméras de surveillance, des ennemis, des objectifs à atteindre, des motifs décoratifs, etc. Il est également possible de définir des chemins de ronde suivis par les ennemis, et de définir leur comportement en cas de bruit suspect, de demande de renfort, d'alarme déclenchée, etc.

Blue Sunshine Blue Sunshine Blue Sunshine Map Editor Blue Sunshine Map Editor

Mario TI-82

2015
  • TI-Basic
  • Texas Instrument TI-82
  • Corruption detection

J'ai développé un jeu de plateforme type Mario sur une calculatrice TI-82. Le jeu, ainsi qu'un éditeur de niveau complet, ont été entièrement développé sur la calculatrice, qui disposait d'une mémoire et d'une puissance de calcul très limitées. Il fallait plusieurs dizaines de secondes pour changer de niveau, et interrompre ce chargement pouvait corrompre toute la mémoire.

Il fallait plus d'une minute pour faire défiler l'entièreté du code source, qui a été intégralement perdu lorsque les piles sont tombées à cours d'énergie, la calculatrice ne disposant que de mémoire vive...

Water War

2014
  • Java
  • World generation
  • Name generation

Ce jeu a été développé dans le cadre d'une Game Jam privée. Les règles sont basées sur le jeu de société Risk, les pays ayant étés remplacés par des îles et les continents par des atolls.

La forme des îles, leurs noms et leur regroupement en atolls étaient générés entièrement automatiquement. Une IA basique a été développé pour permettre au joueur de jouer à la fois contre d'autres humains mais aussi contre l'ordinateur.

WaterWar WaterWar

The Game Hub

2013
  • Java
  • Data synchronization

Ce projet avait pour but d'être une plateforme similaire à Steam, où l'utilisateur pouvait télécharger et mettre à jour des jeux, gagner des succès et synchroniser ses sauvegardes de partie.

Ce projet n'avait pas vocation à être partagé mais il s'agissait de mon premier gros projet en Java et avait pour but de rendre n'importe quel jeu compatible avec cette plateforme sans développement spécifique. Il était possible de commencer un jeu sur un ordinateur et de continuer la partie sur un autre, ce qui n'était pas très répandu à l'époque.

The Game Hub The Game Hub

ΔForum

2013
  • PHP
  • JS
  • HTML/CSS
  • SQL
  • Apache
  • XAMPP

J'ai fait ce projet afin d'apprendre des langages orientés développement web, comme le PHP et le JavaScript, ainsi que la gestion de base de données SQL.

Ce projet n'a jamais été tendu public mais il permettait de créer et manager un forum en ligne complet. Parmi ses principales fonctionnalités, on retrouvait la création, la modification, le verrouillage, la modération et la suppression de fil de discussion et de messages. Il était également possible d'être notifié par e-mail d'un nouveau sujet posté dans une section spécifique du forum, d'une nouvelle réponse ajoutée à un fil suivi, ou d'un message privé reçu.

Ninja I, II & III

2012
  • GMS
  • Game Maker 8.1

J'ai appris la programmation sur Game Maker 8.1, une suite logicielle de développement de jeu vidéo au collège. Le langage de programmation utilisé, orienté object, était assez similaire au C/C++.

J'ai développé de nombreux jeux vidéos au fil des ans, dont trois versions d'un jeu de plateforme dont le but consistait à monter toujours plus haut en évitant pièges et ennemis.

Ninja I Ninja I