project idea:
The project draws inspiration from the Lixie clock, but instead of numbers, it will display Islamic art patterns, particularly those derived from the Imam al-Shafi’i area and its architectural features. The system will utilize interactive parallax acrylic sheets, which create a layered, 3D effect. Through dynamic lighting and motion, the intricate patterns of the mosque’s architecture will be brought to life. These patterns will shift and move, much like a stop-motion animation (not exactly, but I mean that is like a frame-by-frame animation or layer-by-layer), and it will make the project come alive.
The primary inspiration for this project comes from the architectural and artistic beauty of the Imam al-Shafi'i district, as well as the rich traditions of Islamic art and geometric patterns. These designs are renowned for their intricate symmetry, which will be showcased in a modern, interactive way. The idea was also influenced by the intersection of heritage preservation and technological innovation
My passion for this project stems from my deep connection to heritage and cultural studies, particularly the rich yet often overlooked history of Cairo. The Imam al-Shafi’i area holds immense historical and spiritual value but is frequently dismissed as just an informal settlement or neglected space. This neglect, coupled with urban expansion decisions, has put the site’s cultural treasures at risk of destruction.
Through this project, I aim to spotlight the significance of the Imam al-Shafi’i area and its Islamic art and architecture. I believe storytelling and interactive experiences can bridge the gap between the past and present, fostering appreciation and responsibility for preserving these narratives. The loss of such sites reflects a troubling trend of erasing cultural heritage in the name of modernization. My goal is to raise awareness about this area’s importance and inspire efforts to protect and celebrate its history before it’s too late.
I completed this phase before starting my final project to experiment with acrylic sheets since it was my first time working with them. My goal was to understand the engraving process, test different laser cutting parameters compared to plywood, and observe how light interacts with the engraved lines. I also explored various approaches to determine which designs would be most effective for my final project and to minimize potential issues in the future. Throughout this process, I faced many challenges, which I will discuss later.
first approach
working on fusion:
First, I created a new component to represent a single acrylic sheet with dimensions of 50×40mm. Then, I added a 30×3mm joint to ensure it fit into the wooden base. I also drew a hexagon with a 12mm diameter in the center of the rectangle and extruded the sketch by 3mm to match the actual thickness of my acrylic sheet. After finalizing this design, I duplicated the component to create five more, resulting in a total of six acrylic rectangular pieces.then added an acrylic appearance.
I had an issue adjusting the hexagon shape on the sketch because I had copied the component, and any modification to one affected all the others; they were somehow linked. I wasn’t sure how to fix this, so to save time, I exported one sketch as a DXF file and opened it in Adobe Illustrator to make the necessary adjustments. I reduced the size of each piece by 20%.
I encountered another issue during fabrication: the engraved line needed a slight offset of at least 0.1 mm, but I was unsure which value would work best. To experiment, I engraved one piece with a 0.1mm offset and another with a 0.2mm offset. To apply the offset in Illustrator, I selected the path, then went to Object > Path > Offset Path.
Next, I removed the subtracted line in the middle between the rectangle and the joint section to prevent it from being cut by the laser cutter. Then, I exported the file as a DXF, ensuring I used the same parameters as shown in the reference image: a scale of 1, units set to millimeters, and 10 units, so that the file was exported at the correct size.
I nested everything in RDWorks and set the parameters to suit a 3mm acrylic sheet. In this configuration, black indicates a cut operation with a speed of 30 and a power of 50, while red indicates a scan with a speed of 300 and a power of 25. After testing many settings, I found these to be the best for my project.
After fabrication, I ended up with six pieces. The left one is engraved with a 0.1mm offset, while both worked well with the lighting. Ultimately, the final appearance will depend on the size and how I want the lines to be illuminated, ensuring that the engraved lines don't disrupt the light effect.
Note: The deeper the engraving, the less effect the light will have on the sheet.
For the plywood phase, I exported each face as a DXF file using a 0.1mm kerf. Then, I nested them together in RDWorks with cutting parameters set to a speed of 40 and a power of 45.
After assembling all the pieces, I applied blu-tack to the sides because the acrylic ended up being too wide. I made several mistakes during the design and fabrication process. First, when designing the cut area, instead of using the intended 3mm, I accidentally added an extra 0.3mm. Second, when exporting the 3D face from Fusion to a DXF file, the kerf was set too high, which I overlooked. Lastly, I didn't check the laser nozzle's distance from the wood; it was slightly too high, causing it to remove more material than expected.
Another problem I encountered was that without inserting cardboard pieces, the ambient light was affecting the other sheets. To solve this, I placed a piece of cardboard between each LED, ensuring that only the acrylic sheet directly above is illuminated. I plan to include this adjustment in the final project.
I downloaded the necessary electronic components from the Grabcad library to visualize the project structure. These components included a
DC Barrel Jack Adapter, power plug, SMPs power supply, Arduino Uno R3, Neopixel LED matrix, mini breadboard.
Materials:
plywood 3mm
acrylic sheets 3mm
pla plastic filliment
software:
Fusion 360
Adobe Illustrator
designing the wooden base structure for the project
designing the domes
designing acrylic sheets
tools:
m3 screws and nuts
hand drill
Metal sanding blades
hack saw
software:
ultimaker cura
RDworks
Malky ML1930 (laser cutter)
Ender-3 3D Printer
prusa mk3 printer
I have two 8×8 WS2812B RGB LED matrices wired together, with each one displaying eight different sequences of acrylic sheets placed above them. This setup provides three operational modes: ordinary, Bluetooth-controlled, and music visualizer. A 5V/5A power supply powers the setup and includes an on/off switch to activate the circuit in ordinary mode. Additionally, there are two slide switches.
Bluetooth Mode Switch:
When turned on, the Bluetooth module is activated, allowing me to control the LED lights via a mobile phone. This also disables both the ordinary mode and the music visualizer mode.
Music Visualizer Mode Switch:
When turned on, the microphone sensor is activated, enabling the LEDs to respond to sound, effectively turning the project into a music visualizer. This disables both the Bluetooth mode and the ordinary mode. When turned off, the project automatically reverts to ordinary mode.
electronic components:
DC Barrel Jack Adapter
power plug.
SMPs power supply
Arduino Uno R3
2 Neopixel LED matrix 8*8
breadboard.
jumper wires
Switch on/off
slider switch
10k potentionmeter
relay module
I attempted to create a simulation diagram for my electronic circuit, including two 8×8 LED matrices connected. The VCC of both matrices is linked to each other and their GND connections. The input and output connections are also properly wired.
To power the circuit, I used an external 5V/5A power supply. I connected the power supply’s VCC and GND to the breadboard’s power rails and then linked the breadboard’s 5V and GND to the Arduino’s 5V and GND pins. I didn’t use the VIN pin because the input voltage is already 5V, and the VIN pin typically requires 7–12V.
For Bluetooth control, I connected a relay module to the Bluetooth module to manage it efficiently. Here’s how I wired the relay:
The relay’s control pin (IN) is connected to digital pin 7 on the Arduino.
The relay’s VCC is connected to Arduino’s 5V.
The relay’s GND is connected to the Arduino’s.
The relay’s NO (Normally Open) pin is connected to the Arduino’s 5V pin.
The Bluetooth module’s VCC is connected to the COM pin of the relay.
The Bluetooth module’s GND is connected to Arduino’s GND.
Additionally, I connected three 1KΩ resistors to the Bluetooth module.
For brightness control, I added a 10kΩ potentiometer connected to analog pin A1 on the Arduino.
For simulation purposes, I replaced a microphone sensor with an IR sensor. The DO (digital output) pin of the IR sensor is connected to analog pin A0.
The circuit also includes three switches:
A main ON/OFF switch is connected to pin 4.
A switch to control Bluetooth power is connected to pin 2.
A switch to control the microphone (or IR sensor in the simulation) is connected to pin 3.
Selecting the appropriate power supply is crucial for ensuring the stable operation of electronic projects, especially those involving high-power components like WS2812 RGB LEDs, along with a Bluetooth module, a sound sensor, and an Arduino Uno R3. That's why I chose the SMPS 5V/5A power supply for the project.
Why? WS2812 LEDs require 5V of power. Each LED consumes 60 mA at full brightness (white color). The total number of LEDs in the matrix are 8 × 16 = 128 LEDs, so the maximum current draw will be 128 × 0.06A = 7.68A. ALSO Bluetooth Module Operating Voltage: 3.3V Current Consumption: 30-50mA AND Sound Sensor Operating Voltage: 3.3V-5V Current Consumption: 10-20mA
While the total estimated power consumption could reach around 7A at full brightness, I won’t be using full brightness simultaneously. With brightness levels adjusted to 50–70%, the actual power draw will be around 4–5A, making the 5V/5A SMPS a suitable choice.
First, I heard about something called LED Utility. This is an Excel workbook designed to generate text code for Arduino sketches. That code will map a selected LED according to its RGB values, map it according to any variables added, map dynamic 'xy' positions of RGB selected LEDs, or map dynamic 'xy' positions and any LEDs assigned variables. You can check this link to learn more about it. or this different method. I found it easier because I am using an 8*16 matrix
Also, I recommend this video tutorial playlist; it helped me understand how (ws2812b) works and how "fast. led" coding functions work through that article
I also used these codes and modified them to suit my project the LED sequences from this link and the music visualizer concept from that link
Code description
libraries: 'FastLED.h' used to control the WS2812B LED strips/matrices. It provides functions for setting colors, brightness, and animations.
'SoftwareSerial.h' is used for serial communication (though not explicitly used in this code; it’s included for potential Bluetooth communication).
Definitions : LED_PIN: The pin connected to the LED matrix data input.
NUM_LEDS: Total number of LEDs (128 for two 8x8 matrices stacked vertically).
MATRIX_WIDTH and MATRIX_HEIGHT: dimensions of the LED matrix (the most important thing because I am working reversely)
BRIGHTNESS: Default brightness level for the LEDs.
UPDATES_PER_SECOND: Controls the refresh rate of the LED animations.
LED_TYPE and COLOR_ORDER: Define the type of LEDs and their color order (GRB for WS2812).
Switch Definitions: B_SWITCH: Toggles Bluetooth mode.
M_SWITCH: Toggles Music Visualizer mode
ON_SWITCH: Main power switch for the entire circuit.
RELAY_PIN: Controls the relay for the Bluetooth module.
MIC_PIN: Analog pin connected to the sound sensor/microphone.
POT_PIN: Analog pin connected to the potentiometer for brightness control.
Global Variables:
k: Controls the position in the color wheel for animations.
decay: controls how quickly the LED columns fade after an audio spike.
react: Number of columns lit based on the audio input.
leds[]: Array storing the color data for each LED.
hue: Used for color animations in ordinary mode.
brightness: Current brightness level of the LEDs.
isCircuitOn: Tracks whether the circuit is powered on or off.
micEnabled: Tracks whether the microphone is enabled for the music visualizer.
CRGB leds[NUM_LEDS] is an Array to store LED color data
Setup Function:
pinMode: Configures the pins as inputs or outputs.
FastLED.addLeds: This initializes the LED strip/matrix.
FastLED.set Brightness: Sets the initial brightness of the LEDs.
Serial. begin: Starts serial communication for Bluetooth.
Main Loop:
Brightness Control: Reads the potentiometer and adjusts the LED brightness.
Main Switch: Turns the circuit on or off.
Bluetooth Mode: Toggles Bluetooth mode and handles Bluetooth commands.
Music Visualizer Mode: Toggles the music visualizer and processes audio input.
Ordinary Mode: Runs a default LED animation.
Functions:
runOrdinaryMode(): Displays a simple color animation across the LED matrix.
runMusicVisualizer(): Processes audio input from the microphone and lights up columns of LEDs based on the audio level.
verticalRainbow(): Applies a rainbow effect to the lit columns based on the audio input
snakePattern(bool reverse): Displays a "snake" pattern that moves forward or backward across the matrix.
rainbowWave(): Displays a rainbow wave animation across the matrix.
Scroll(int pos): Generates a color based on a virtual color wheel.
first fixing the arduino with screws, nails and nuts
assemble the power supply with nails inside the wooden base and pass the wire through the project back wall hole
Assemble the neopixel component housing
assemple dome enclosure part
I wanted to use slider switches to switch between modes. I asked Abdelrahman if there was a toggle switch available, but they forgot to bring one. So, I decided to use the slider switch from the kit instead. However, I faced a challenge figuring out how to secure it in place. Abdelrahman then suggested using a slider switch with a PCB since it has a screw hole, allowing me to fix it onto the wood securely
There was an issue with the wood we received in the lab; it was supposed to be 3 mm thick, but in reality, some pieces measured 3.7 mm or even 4 mm. The same problem occurred with the acrylic; not all sheets were exactly 3 mm as expected. Since my design was based on precise 3mm fitting holes, I had to adjust everything manually. In the end, sandpaper and the saw became my best friends in fixing this issue!
The living hinges in my project didn’t work at all at first because I had designed them incorrectly. Asmaa and Eman, the specialists in the lab, suggested that I check one of the lab’s living hinge samples and adjust my design accordingly. However, the sample they provided was meant for larger designs, which didn’t fit my project. Later, I found a smaller design that used living hinges and tried to scale it down and replicate it until I finally got it to work properly.
At first, when I tried to print my brackets, it went completely wrong. I double-checked everything, but there didn’t seem to be any issues with my design. Eman then pointed out that the problem was with the PLA filament itself. So, I reprinted it using a different filament.
Before reprinting, I tried fixing it manually. I used sandpaper and other tools to smooth it out. I even attempted to use a blower to apply heat, hoping it would help soften and reshape the part. Unfortunately, it ended up melting down instead!
I didn’t want to use crocodile jumpers for the on/off switch, so Abdulrahman brought me a copper terminal and attached it to the switch pins. I wasn’t sure how to cut the power supply wire to pass it through the hole. He suggested removing the nails, threading the wire through the hole, then repositioning it and securing it back with the nails.
While designing and fabricating, I made a few mistakes in the wooden dome Design Issue I didn’t notice that there was a gap between the ribs and the hexagonal base in the design phase. However, when I assembled all the pieces, the structure held together well and fit perfectly.
and a Fabrication Issues I didn’t adjust the wood thickness properly, knowing it wasn’t exactly 3 mm. I should have increased the machine’s power slightly.
I also didn’t secure the wood properly in the machine because it was slightly curved, which led to imperfect laser cuts. As a result, I had to manually refine the pieces using a cutter blade.
I would work more on the music visualizer mode to fit it perfectly. I heard about a component called Sparkfun Spectrum Shield, which would be perfect in the future because it allows splitting the audio signal into 7 separate channels (bass, mids, treb). This is important for the music visualizer to respond only to bass.
I would work more on the enclosure for my project design to be more structured and inspired via the concept
Integrate sound or historical narratives. Adding an audio component with historical context or ambient sound inspired by the mosque’s atmosphere could elevate the experience.