Back to main page
Voir en Français

About

Since forever, I keep myself busy with various personal projects. I started in high school with video games, and it is now mechatronic which appeal to me with projects blending embedded software, high-level HMIs, electronics and mechanics.

You will thus find here a selected list of the personal projects on which I worked. For the oldest projects, the source have sometimes been lost and I didn't always took the time to take picture or videos of my realizations. The sources have sometimes been released years later, as if, and are not necessarily representative of the way I currently work.

The Plotter Project

2024
  • Java
  • FFM 3D Printing
  • CAD
  • GRBL v1.1
  • Color Quantization
  • Outlining & Skeletonization
  • Genetic Path Optimization

I designed and built a CNC drawing machine able to load and unload different tools. It is thus capable of changing of pen color automatically for instance.

I developed an image-processing software able to convert any rasterized picture (.png, .jpg, etc.) into multiple vectorized paths. Various settings can be configured and their effect visualized in real-time. Those paths are then converted into G-Code instructions to drive the plotter.

Various transformations are applied to a picture before it can be drawed: reduction of the number of colors, creation of a corresponding table with the available inks and their intensity, outline detection, paths generation, paths optimization through genetic algorithms, etc.

I also developed a graphical interface to be able to drive manually the machine, as well as stream and monitor the drawing instructions progression.

The machine itself is based on a CoreXY architecture and was designed through CAD. It is made of aluminium profiles, laser-cut plexiglas pieces and 3D-printed pieces. The movement transmission is done through stepper motors, belts and linear guides. It is driven by an Arduino Uno embedded with 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

Ukulele Learning App

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

After having tried to learn the Ukulele, I wanted to check the technical feasability of a learning application for this music instrument.

By applying the Fast-Fourier Transform algorithm, the application is capable of identifying single notes, but also full chords.

I also develeped a tool to convert textual tablatures into live interactive partitions. By scrolling these partitions on the screen, the aim is to guide the user and provide him with feedback on the chords played. By comparing the sound from the microphone and the partition, one can detect that a misplaced finger is the cause of a false note for instance.

The technical feasability of this project having been validated, the next step would be to develop a mobile version of this application, as well as to improve the GUIs. The automatic generation of partition is also a complex subject worthy of further investigations, with author rights concerns.

Ukulele Learning App Ukulele Learning App

Pick & Place Machines

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

This project was based on a CNC milling machine that I had previously designed and built. I then added a pneumatic paste dispenser and a vacuum pump on the moving head to be able to place SMD component on a PCB card, that would then be put in a reflow oven for soldering.

I started this project alone and was then able to enroll two fellow students to work on it as a university project. I managed this small team and put in place various process to improve and fiabilize my first proof-of-concept and upgrade it as a real Pick & Place machine.

We developed a custom Java software to parse PCB Gerber files and let the user configure the components feeders and control the machine.

We also added two cameras on the machine. The first one was static and oriented upwards; all the components were bring up on top of it to check their orientation and their exact position relative to the vacuum pump head. The second one was mounted on the moving head and oriented downwards; it point was to verify that all the components had been placed as expected on the PCB card.

Even though we were satisfied by the results obtained with this PnP machine, we reached the conclusion that a specific machine had to be designed, smaller but more precise, to improve the placement quality. The feeders management, to be able to used wheel-packaged SMD components, was too complex based on our CNC precision level.

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

Interactive LED Table

2017
  • C
  • Arduino
  • Multiplexing

I built a coffee table with a 24x40 blue LEDs matrix and a 12x20 infrared transceiver submatrix. The aim goal was to detect object placed on the table as well as user hands movements to interact with the table.

I developed some small games such as Snake for instance, but the low number of LEDs and especially of IR transceivers didn't allow me to develop further the table potential

For economical reasons, I choosed to hand-solder go-though components instead of buying SMD-populated manufactured PCBs but awfully the table didn't survive my multiple movings during my student years.

LED Table

Blue Sunshine

2015
  • Java
  • Path Finding
  • 3D Sound

I developed a futuristic 2D shooter with a top-down point of view It was initialy a 100% personal project, but I was able to present it as graduting project for my Computer Science speciality in high school. I obtained the highest possible grade, something that had never happened in my high school in ten years.

To achieve a futuristic visual style, I decided to abstain myself from using rasterized pictures, all the visuals are thus based on fully computer-generated geometrical shapes.

I developed smart enemies able to do surveillance rounds, move towards a suspect sound, react to an alarm linked to a surveillance camera, call reinforcements, etc. I implemented a dozen of different weapons, and the environnement is destructible. The enemies are capable of adapting themselves to this new environment, passing through a hole made by the player in a wall for instance. The ennemis are not visible through the walls, but the player can use the spatial sounds to detect their presence.

For development purpose, I also created a full level editor. It is possible to create a level by adding walls, doors, surveillance cameras, ennemis, points of interest, decorative patterns, etc. It is also possible to define surveillance paths followed by the ennemis and to define their behaviour in case of suspect sound, calls for help, triggered alarms, 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

I developed a Mario-like platform game on a TI-82 calculator. The game, as well as a full map editor, were entirely developed on the calculator with very limited computing power and memory available. It took several dozens of seconds to change of game level, and interrupting this loading coult corrupt the whole memory.

It took more than a full minute to scroll the entire source code, which was lost when the battery cell died, as the calculator had only RAM and no ROM...

Water War

2014
  • Java
  • World generation
  • Name generation

This game was developed for a private Game Jam. The rules were based on the Risk board game, the countries being replaced by islands and continents by atolls.

The islands shapes, names and compositions in atolls were all generated automatically. Some basic A.I. was also developed to allow the player to play against other humans but also against the computer.

WaterWar WaterWar

The Game Hub

2013
  • Java
  • Data synchronization

This project was intended to be a Steam-like platform, where the user could download and update games, win achievements and synchronize his games saves.

This project was not intended to be shared, but this was my first major project in Java, and the point was to make any game compatible with this platform without any specific development. It was possible to start a game on one computer and continue the party on an other computer, which was not common at the time.

The Game Hub The Game Hub

ΔForum

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

I made this project as a way to learn website-development oriented languages, such as PHP and JS, and SQL database management.

This project was not released to the public but it was possible to open and manage a complete online forum. The main features included thread creation, edition, locking and deletion as well as message posting, editing, reporting and moderation. One could be notified by email of new replies posted on a followed thread, of a new thread created on a specific forum section or of a private message received.

Ninja I, II & III

2012
  • GMS
  • Game Maker 8.1

I learned programing on Game Maker 8.1, a game-development oriented software suite, in 8th grade. The programming language used, object-oriented, was very similar to C/C++.

I developed several video games, including 3 versions of a platform game where you had to keep going up avoiding various traps and ennemies.

Ninja I Ninja I