19. Project Development

This page will showcase the process and development stages towards my final project.



Presentation Slide

  • The slide was created in canva . The render of the model was done in fusion 360. I wanted the look of the slide to have the the aesthetics of retro 8/16 bit game font and styles.
  • Many nice graphic elements were available in the canva library such as the iconography and speech bubbles of games.


  • Presentation Video

  • This is a rough teaser video to act as the placeholder until the final video is done. Again here too, i wanted the retro/arcade game aethic to be present throughout. i am still trying to figure out the structure of the entire video.
  • The video was edited in can . Under the video category in canva there were many motion graphic templates available under the retro game category. I mixed and stitched various elements to create this video. An animation of the cad model was inserted as the intro clip along with the title. I had a video demo of my macropad PCB which was seen at the end.
  • Project planning

    System Integration

    You can visit my system integration page to get an overview of the processes i am going to follow.

    System Integration


    What tasks have been completed, and what tasks remain?

    Overview of Completed Tasks

  • For the Node Module
  • For the Master Module
  • Remaining Tasks

    Spiral 1

    To make the master module and one node module and make them communicate.

    Making the Node Module

    CAD

    I did the CAD modelling of the node and the master modules in Fusion360.I started off by designing the node module . I wanted to keep the dimension of the node to be that of a module that can be held in your hand. I went back and forth with the electronics design to make sure everything fit with each other.
    The parts of this module consists of :
  • The body:The main body will house the entire electronics part. There will be a main PCB that will have the microcontroller and the switches .
  • The Keycaps : the buttons are inspired from the minesweeper tiles . I wanted the physical buttons match the appearance of the digital counterpart
  • The keyplate: to keep the the keycaps and the PCB in place.
  • The electronics placement was alos integrated into the CAD models. I designed the PCB in Kicad and exported as STEP file ,which was then imported into Fusion360. By doing this step it helped me visualize and make the overall dimensions of the PCBs and its relative position to the body.
  • Initially the housing for the connector PCB was rectangular then after many other iterations it was changed to mounting screws as the rectagular housing may hinder the flexible pcb positions
  • PCB Design and Production

    PCB Mockup.

  • I started the electronics production of the project with the node module.
  • I had some doubts regarding the placement of the neopixel pads as they had to be wrapped around the pcb and the solder part sould sit perfectly on the pads.Since the the pcb iam making is quite large , i did not want to waste an entire copperplate incase something goes wrong. So i thought of making a mockup of the PCB on cardboard see if everythng aligns well
  • I kept the pixels in place and found some misalignments.Thet were later corrected in the kicad editor.
  • Keyboard Disassembly

    As I required a lot of switches for my project , it seemed more feesible to buy a mechanical keyboard and take out the keys rather than buying individual switches as that would add more to the cost. After making the purchase I realised that the switches were not swappable , whih meant that each of the switches had to desoldered according to my requirement.

    PCB production

  • I milled out the PCB and moved on to the pick and place machine to place the parts.
  • After milling out the PCB and placing the components , while trying to measure the length of the led strip to be cut, i realised that the switches and the LEDs did not match . There was a misalignment of one row of switches that affects the whole placement.
  • So i had to go back into the kicad editor and then realign all the switches . This time to make sure the measurements were correct I edited the snap to grid number to the measurement i required from the centre of one switch to another.
  • The pad position were corrected as well. I had forgotten to add a capacitor in the previous circuit so i could add that here now.
  • The PCB was filled out again and the neopixel Strip length was checked. After confirming everything was alright i moved on to solder the components on to the PCB.
  • Next the led strips had to be fixed . I first cut the strip to the length of the pad. One led would have to be removed because it won't be visible as it will be on the flip side of the board.
  • Then I stuck kepton tape on the edges of the traces to avoid any interaction between the copper cladding and the wires within the strip.
  • I stuck double sided tape on the outer edges of the switches and stuck the strip on to it. Then I soldered the strip to the PCB.
    This was repeated for all the rows.
  • A connection had to be established between the din dout pads of the led that were removed. A copper wire was soldered to make this connection.
  • After the soldering, i tried to program the PCB to check if everything was working correctly. I uploaded the buttoncycler example code to do a colour change when a switch was pressed. Everything looked good so far:)

  • Making Pogo connectors.

    I had to think of ways to make the pogo connectors as they are quite expensive and to buy as many as i required may not be feasible within the scope of this project. I referred to some videos to make the connectors and went through some design iterations . I made a few mock pieces to test if it would work properly.

    Mockup 1

  • The first idea was to make a PCB tht would have pin header connection from the top of the keypad PCB , on which the Pogo connectors mounted on another smaller PCB will be attached perpendicular it.
  • First to test the concept i tried making a small scale mockup to check the attachments. Two PCBs were made with just the pads for the connections and the slot for attaching them.
  • There were some issues faced while milling the PCB due to its small size and since the PCB is double sided. When the PCB had to be flipped for tracing and cutting the other side , it would fly off because it wouldn't stick properly. I spent some time trying to make the cut ,so i thought of other ways the PCB could be produced efficiently. My instructor suggested to use the milling machine to just cut the PCB and then take it to xtool to engrave it. To keep the PCB in place a cardboard jig had to be made. Even this method did not seem as effective as it looked on paper. The fit was was checked for the two PCBs and some adjustments had to be made
  • Also while making the CAD model for the module , it was noted that the size required for the PCB would be quite large for a double sided PCB (our lab has a limitation on the size for double sided pcbs). So we went back to the board to test another method.
  • Mockup 2

  • This was initially the plan we were supposed to go ahead with ,but after some thinking and updations we made a few alterations to it.
  • Basically the idea is to make the small PCBs to attach the pogo pins and the take connections from this PCB to the PCB with the connection from the keypad PCB via wires. Tecnically its the same concept as before but we can make the central PCB smaller and save space.
  • While making the CAD model i realised a housing had to be given for the pogo pins. The CAD model has to be altered to make space for the housing too.So that was also done parallel to this process.
  • For this mockup I just had to make the small PCBs and make sure it fits with it mock 3d prints made. I had made a careless mistake on the 3d model where the housing had to sit, even though I made it correctly on CAD i exported the wrong version.
  • After reprinting the case the PCB with housing was tested and it was fitting perfectly.
  • Once the fit was checked I moved on to solder the pins on to the PCB along with the housing.
  • The fit was checked again and I also kept another PCB to act as the landing pad for the pins
  • Mockups and Testing

  • Since printing an entire body then checking whether any corrections were required would be time consuming as well as waste of resource if the end product of the prints were rendered unusable. So i was instructed to print each of the parts that required testing separately in small portions so that it becomes easier to correct the mistakes and save material and time.
  • Checking magnetism

  • I checked the wall minimum wall thickness required for the nodes to stick to each other
  • 2 prints were made with 2 slots where one was of 0.2mm thickness and another with 0.5mm thickness to test.
  • I felt that the 0.2mm thick wall was required for the modules to stick firmly.
  • Locking for the Pogo connector PCB slot

  • A locking mechanism had to n=be made to keep the PCBs in place so that when a module is connected it doest push out the PCB from its slot.
  • Parts of the body was made to test out how the overall connections would work.

    Keycap Iterations

  • I used the similar method for casting the buttons as i did during the molding and casting week. The only difference being that the mold was directly 3d printed as a button and the silicon was cast over it.
  • To decide which was the best keycap for my product , the keycaps went through multiple iterations, changing the dimensions, the dip on the top and size of the stem, to reach the final design of the keycap. Each design was fisrt modelled in Fusion360
  • Molding and casting the Keycaps

    I 3d printed the final design and smoothened the layers lines by sanding it throughly with 320,220 and 100 grades of sandpaper.
  • I had to make an adapter to place the keycap on a surface so that the top surfcae can be poured with silicon rubber carefully with the keycap shifting its position.
  • I also made a mold box using acrylic. Acrylic was laser cut and fixed using finger joints. The adapter with the keycap will fit within this box and silicon will be poured.
  • It is then casted with epoxy resin. The finish and colour cme out pretty good. The resin did not reach every surface so i am trying to achieve a proper finish now.

    Flexible PCBs

    To establish the connection between the pogo pins and the connector bottom PCB I made flexible circuit. I wanted the housing to be neat and not tangled up with wires going everywhere. Saheen gave this idea to make use of copper tape and kepton tape to make the traces . It is similar to the flexibile PCBs that is sending mobile phones.

    To make them these :

    First a piece of Kapton tape was stuck on clear acrylic. On top of this a copper tape was  stuck in place.
  • Then using the traces I made in Kicad after measuring the length between the PCBs , it was laser cut using Xtool f1 ultra. The reason we stuck the strip on transparent acrylic was that the  fiber IR laser won't cut through the material. Hence we will be able to peel the residual copper from cutting the traces from the surface easily.
  • Another Kapton tape was stuck on top of the the copper traces so that the copper part gets sandwiched between the layers of Kapton tape.
  • This sandwich of tapes was then peeled from the acrylic and then stuck on some backing paper to be used later when everything will be assembled.
  • Body for module

  • After all the testing for the parts of the body was done i printed the entire body and keyplate . All the parts of the body was assembled. There was a mismatch in dimensioning of the PCB to the body as i did not take into account the thickness of the neopixel strips. So i had to print the body again and this time everything came out right.
  • The keyplate has notches at the bottom so the the head of the mounting screws locks in with the plate .
  • Threaded inserts were inserted to the body for the M3 screws to fix the PCB
  • Connector PCB

  • I had to make a PCB that would sit underneath the module PCB to make connections or the pogo connector PCBs i had made earlier. This PCB would actually as a connection point for the wires to be soldered on . A pinsocket will be given on the side of the PCB that will face the bottom of the body of the module. This is given to make the access to updi programming easier.
  • A mockup of the mounts were made to check if the connections sat correctly on the body.
  • The connection between the the keypad PCB and the connector PCB was good and the UPDI programming slot also came out correctly.
  • Assembly

    I did a dry assemblky with all as all the elements required for the Node module were almost done. Everything was assembeled properly.
  • I lit up the keypad PCB with an example code from the Adafruit Neopixel library to see how the NOde module looked with the lights on. The keycaps diffused the lights really well!
  • Making the Master Module

    CAD model

  • I went on to do the cad modeling of the body of the display mode. I made some mockups of the different design details i wanted to visualize with the keypad modules.
  • The main parts of the body are : a screen, a on /off switch and a control knob.
  • The challenge in this module was to accommodate the different height levels of the components and design the model accordingly.
  • Design of the body

  • I made some mockups of the design of the toplate with cardboard to visulaize how each element will fit in with each other
  • At the end, this was the design i went ahead with as it looked visually balanced with all the elements placed well.
  • PCB Design and production

  • To arrange the components in a way that the heights are properly distributed proved to be a challenge.
  • The display had to be a height so that it could be visible through the acrylic. This will cause trouble to fit the rotary encoder as it's knob is will stay very high from the surface which could not be adjusted . So we decided to cut of the knob to a suitable height. Saheen helped to cut the knob using a dremel rotary tool.
  • Next challenge was to adjust the height at which the xiao ESP32C6 would sit beneth the PCB. A set of Pinheaders had to the soldered on to the microcontroller,which was then fixed on the the board adjusting it's height so as to fit correctly into the slot provided on the 3D print.
  • Laser cutting

  • The display glass was made in 1.8mm clear acrylic and cut to shape keeping the kerf values using the laser cutting machine. I had to redo this step a few times to get the kerf correct. giving a 0.1mm offset seemed to be the best fit for my requirement.
  • A black semi transparent tinted sheet was then stuck on to the acrylic to give it the feel of a display screen.



  • What's working? what's not?

  • The flexible PCBs required some corrections as .I felt that the diy pogo connectors could be improved upon more. Even though the connection worked out well a more effective way could be found.
  • The thickness of the body of the display module was little thicker than the body of the node. This caused a issue with the connections of the pogo connectors. The pins were not touching the landing pad of the PCB. A slight correction would help in that area for the connections to work out better.
  • The magnetic connection between the module may need more strength or the positon of the magnets needed to be changed . Whenever the modules are lifted together quickly the module detatchh and fall apart.
  • The connector PCB had to be remade as the pad positions turned out to be wrong. This was because i got confused when the board was flipped while making the KiCad layout. This has to be resolved.
  • What questions need to be resolved?

  • The biggest concern i have is whether the I2C connections would work properly. As there were issues coming up with the ribbon cables and the pogo connectors makes me concerned with how the programming would go. The programming seems to be quite complicated and as fixing the issues with the connections are quite time consuming , I may face a time crunch during programming.
  • I may not be able to finsh 3 modules and an atomizer on time , so i will have to see how i can make progress in that section
  • How many games can be programmed and could be played properly.
  • What will happen when?

  • I have prepared a schedule to help me track my process and progress. I also made schedules for each week to help in understanding whether tasks had gone past their timeline and to cover up that time by keeping buffers accordingly.
  • Schedule

    What have you learned?

  • Throughout the weeks I got to learn a lot about diverse fields that i had no prior experience in. To incorporate all these learnings and compress it into one project has be challenging and fun at the same time. Documenting and managing time to complete each task was another aspect that was inculcated within the project,
  • Specifically through this project i got to learn differnt ways to accomodate the electronics inside a product and integrate and package it neatly.This will be very helpful as it helps me gain a in depth understanding of how electronics can be integrated beautifully without it being an hassel while designing products.
  • I also got to learn how to make a product modular down to the electronics part. It makes my project easy to replicate once one module is figured out.It also becomes customizable. In general the possibilities are endless with this model of working.
  • Making the pogo connectors was intresting. It made me understand how expensive things could be made with easily accessible tools by working with them creatively.
  • The flexible PCBs were an amazing addition to my project to negate the use of wires within the modules. Thanks to Saheen, I got to explore this concept of using flexible PCBs as the wires making connections between the pogo connector PCB and the connector hub PCB.
  • Even though it took some time, Molding and casting of the Keycaps truly showed the repeatability of using the molds, which we couldnt explore during the assignment week.I was able to acheieve amazing and consistent surface finish for each keycap
  • Overall, the main takeaway was to enjoy the process of learning!






  • Download files

  • BOM for Node module
  • BOM for Master module
  • Node module KiCad and gerber files
  • Master module KiCad and gerber files
  • ArduinoIDE final codes for master and node module
  • Code for led to work with button matrix
  • Fusion360 file for node and display module
  • References

  • Ratio calculator
  • "Salim Benbouziyane Ocreeb MK2".
  • How to Cast Artisan Keycaps with Silicone and Resin by Artisan Alliance.
  • Tic Tac Toe 3x3 reference code
  • Salim Benbouziyane Ocreeb - Pogo pin Shroud