Giftly is a robotic butterfly-inspired messenger bot designed to deliver small gifts or messages in a creative, playful, and heartwarming way. Instead of flying, Giftly moves on wheels like a car while flapping its decorative wings. It also has a gift box compartment that can open remotely to surprise the receiver.
The robot combines art, technology, and emotion turning simple robotics into a magical experience.
I wanted to create a robot that does more than just move. Many robots look mechanical and serious, but Giftly is about making people happy, spreading joy, and creating surprise moments. I was inspired by:
🦋 Butterflies, which symbolize beauty, freedom, and transformation.
🎁 Gifts, which spread happiness and connection between people.
So I combined both ideas into a Messenger Bot that can deliver little surprises in a colorful butterfly design.
Gift-delivery robots
joyful and colourful robots with wings
Remote-controlled toys with compartments
Software Used:
Fusion 360
Cura – I used it to prepare the bracket design for 3D printing (slicing and converting it to G-code).
Machines Used:
Laser Cutter
3D printing
Material used :
Wood (MDF or Plywood)
3mm thick Plywood sheet
PLA Filament – Used to 3D print the bracket.
RDWorks
3mm thick Plywood sheet
The physical parts/chassis of Giftly were designed in Autodesk Fusion 360.
I used Fusion 360 to design the physical parts and chassis of the smart car. The process included:
Sketching the Base
I started by sketching a rectangle (base platform) with the dimensions required for mounting motors , the Arduino board , driver , and gear wheel
I made 2 holes on front side to ultra sonic .
I made opening for Aurduino and battery .
I made 2 opening Half circle for 2 Dc motors
I fully defined the sketches by constraining lengths, widths, and hole placements.
I modified my original design into one big box with two separated spaces:
Lower compartment: contains the smart components (Arduino, motor driver, battery, etc.).
Upper compartment: reserved as a gift space.
To achieve this, I added a separating wall inside the box that divides it into two rooms:
Down room → Smart device components.
Up room → Gift storage area.
Motor Mounts & 2 Wheel Holders & 1 gear wheel
I created cut-outs and extrusions for the motor slots.
I added holes for screws so the motors could be fixed securely.
i made 2 holes for gear wheel
Battery and Arduino Placement
I designed slots/compartments for the battery pack and Arduino.
I ensured enough clearance for wiring and connections.
Assembly
After modeling each part (chassis, wheels, mounts),
I used Fusion 360’s Assemble > Joint feature to connect parts virtually and check for alignment.
Final Touches
Rounded corners and smoothed edges for a neat look.
Exported the design as .STL for 3D printing and saved the original .F3D file for submission.
Laser Cutting Preparation
I exported the 2D drawings of each side panel.
I used RDWorks software to prepare the vector cutting paths for the laser cutter.
Each side was laid out as flat panels for easy cutting from wood sheets.
Top and Bottom Plates: 220 mm × 180 mm
Right and Left Walls: 180 mm × 160 mm
Front and Back Walls: 220 mm × 165 mm
This ensures that the box is proportionally balanced and provides enough space for both electronics and the gift section.
Base of box
Base of box with components
Back side
left side of box
4 sides of box
opening for wheels
The physical parts of my smart device box were fabricated using laser cutting.
The fabrication was divided into three stages: design, file preparation, and cutting.
I first designed all parts of the box in Fusion 360, including:
Top and Bottom Plates: 220 mm × 180 mm
Right and Left Walls: 180 mm × 160 mm
Front and Back Walls: 220 mm × 165 mm
Separating Wall: to divide the lower (components) and upper (gift) compartments.
I then exported the flat side drawings as .DXF files, which are compatible with laser cutting software.
I used RDWorks to import my .DXF files.
Inside RDWorks, I set the following parameters for wood cutting:
for cutting:
Power: Cut adjusted based on wood thickness (50 for 3 mm plywood).
Speed: 30
for scanning :
Power: 330
Speed: 25
for speed cut :
Power: 400
Speed: 12
I placed all box panels on the digital workbed to fit the wooden sheet size.
The wooden sheet was fixed on the laser cutter bed.
The laser cutter traced the cutting paths and cut out each panel accurately.
After cutting, I removed the wooden pieces, cleaned edges, and checked for accuracy.
The parts were then assembled into the box, with the separating wall placed inside.
The lower room was prepared for electronics installation, while the upper room remained as the gift space.
Brackets (12 pieces):
Designed in Fusion 360 to hold the walls of the box firmly.
Exported as .STL files and printed using PLA filament.
Hinges (3 pieces):
Downloaded from Thingiverse.
Used for opening/closing the gift compartment lid smoothly.
Butterfly Decoration:
Also downloaded from Thingiverse.
Printed as a decorative element for the box (upper gift space).
Laser-cut parts were joined together using the 3D-printed brackets.
Hinges were attached to connect the lid.
Butterfly was fixed on the gift section for decoration.
Electronics were installed in the lower room, leaving the upper room as the gift space.
Tinkercad
🔹 Software/Machines:
Tinkercad → to design and test the circuit before building it.
🔹 Electronic Components:
Jumper wires & crocodile clips → to connect the circuit parts.
Breadboard → to assemble the circuit easily without soldering.
7. lithium battery → to power the system.
Servo Motor (SG90) → for locking/unlocking the door.
HC-05 Bluetooth Module → for wireless communication.
Dc motor to move the wheels
Driver L298N
wheels
HC-05 Bluetooth Module (wireless input)
ArduinoBluecontrol App : for control the car
Adapter
ultrasonic sensor
7. lithium battery
Servo Motor (SG90
HC-05 Bluetooth Module
DC motor
The smart device is controlled by an Arduino UNO which acts as the brain of the system. The circuit integrates input components (Bluetooth signals) with action/output components (DC motors + servo). All components work together to create a controllable smart box that can move and respond to user commands.
Bluetooth Module (HC-05/HC-06):
Connected to the Arduino via TX/RX pins.
Receives commands sent from a smartphone app (such as Arduino BlueControl).
Each button on the app corresponds to a character (F, B, L, R, S) that the Arduino reads.
DC Motors :
Controlled through the L298N motor driver.
Enable pins (ENA, ENB) control motor speed using PWM.
Direction pins (IN1–IN4) determine the movement (forward, backward, left, right, stop).
Servo Motor:
Connected to pin 10.
Can be used to open/close a lid or move a small mechanism inside the box.
Starts at a neutral 90° position in the code.
Functions as the interface between the Arduino and motors.
Inputs: IN1–IN4, ENA, ENB (from Arduino).
Outputs: Two DC motors connected to OUT1–OUT4.
Allows forward/backward control and speed adjustment using PWM.
The Bluetooth module receives a command from the phone app.
Arduino reads the incoming character:
‘F’ → forward() → both motors rotate forward.
‘B’ → backward() → both motors rotate backward.
‘L’ → left() → left motor reverses, right motor moves forward.
‘R’ → right() → left motor forward, right motor reverses.
‘S’ → stop() → both motors stop.
Arduino sends HIGH/LOW signals to L298N motor driver to execute the movement.
Servo motor can be triggered for specific actions (e.g., lid opening).
The smart device is powered by a Lithium-ion 7.4V battery pack connected to the Arduino through a suitable adapter module. This provides a dedicated and portable power source, which is more reliable than powering through the laptop’s USB port.
Voltage Compatibility:
The Arduino UNO operates safely with 7–12V input through its barrel jack.
The 7.4V Li-ion battery provides stable voltage within this range.
Current Capacity:
Lithium batteries can supply sufficient current to run both the Arduino board and external modules (L298N motor driver + 2 DC motors + servo).
Motors require higher current spikes that USB ports cannot provide, so a battery was necessary.
Portability:
The battery makes the project wireless and mobile, which is essential for a smart moving device.
Safety & Efficiency:
Using a regulated adapter with the battery ensures smooth voltage delivery and protects the Arduino and other components.
The 7.4V Li-ion battery pack was connected to the Arduino’s power jack (VIN and GND) through the adapter.
The Arduino then powers:
HC-05 Bluetooth module via 5V pin.
Servo motor via 5V pin (small load).
L298N motor driver receives power from the same battery to drive the DC motors.
I used a Lithium-ion 7.4V rechargeable battery as the main power source.
I also included an adapter for testing and continuous operation when charging.
I chose this battery because:
It provides stable voltage and current for both the Arduino and DC motors.
It is compact and lightweight, making it practical for my project.
It allows portability, so the device is not limited to a laptop USB connection.
To select the suitable power source, I:
Checked the Arduino and DC motor datasheets for voltage/current requirements.
Used the Arduino IDE to upload code and check stability during operation.
Components/tools involved in the power source setup:
Lithium-ion 7.4V battery
DC adapter
Arduino board
Arduino IDE
Sources of Inspiration and Support
Omar: helped me debug my code and correct errors.
YouTube tutorial: I watched videos to understand the code of moving car the ultrasonic sensor with the servo.
AI-Assisted (ChatGPT):
I used ChatGPT to make sure that everything was going correctly in my code.
Programming Language & Tool
The project is programmed in Arduino C using the Arduino IDE.
First iterations were written and tested by me.
I also used online tutorials and asked peers for clarification when debugging.
(If AI tools helped in structuring or debugging, I mentioned the prompts and what I learned from them.)
Main Functionalities in the Code
Bluetooth Control
The Arduino receives characters (F, B, L, R, S) through the Serial Monitor or a Bluetooth app.
Each character corresponds to a motor action:
F → Move Forward
B → Move Backward
L → Turn Left
R → Turn Right
S → Stop
Motor Control (DC Motors with L298N)
The L298N motor driver is controlled by pins IN1, IN2, IN3, IN4.
Different combinations of HIGH/LOW signals make the motors rotate forward, backward, or stop.
PWM pins (ENA, ENB) are used to adjust the speed (set to 130).
Servo Motor (Door Mechanism)
A servo motor is attached on pin 8.
The servo is programmed with two positions:
Closed Door → angle = 103°
Open Door → angle = 10° (when object detected far away)
Ultrasonic Sensor (Obstacle Detection)
Trigger pin (A5) sends ultrasonic pulses.
Echo pin (A4) receives the reflected signal.
The distance is calculated with pulseIn() and converted into centimeters.
If the distance is greater than 30 cm, the door opens.
If the distance is less or equal to 30 cm, the door closes.
LED Indicator
Pin 13 controls an LED.
LED ON → when the door is open.
LED OFF → when the door is closed.
Loop Function
Runs continuously.
Each cycle checks for Bluetooth commands and ultrasonic distance readings.
Updates motors, servo, and LED accordingly.
*** I didn't activate the servo and leds because they are part of nice to have i will do it later .
The chassis was fabricated using laser cutting and 3D printing.
Parts such as brackets, hinges, and butterfly lock were designed in Fusion 360 or downloaded from Thingiverse and then 3D printed.
The chassis assembly was done using detachable joiners and screws (no glue or tape).
Openings for the DC motors, wheels, switch, and servo were cut precisely to allow secure fitting.
Additional holes were drilled for brackets when adjustments were needed.
Arduino UNO placed inside the chassis as the central controller.
DC Motors + Wheels mounted on the chassis, connected via L298N Motor Driver.
Ultrasonic Sensor placed on the front for obstacle detection.
Servo Motor mounted on one side to act as a door mechanism.
LED indicator fixed on top for visual feedback.
Lithium Battery (7V) with an adapter and switch used as the power source.
Bluetooth Control Test
Sent commands (F, B, L, R, S) from the Bluetooth app.
Car responded correctly by moving forward, backward, left, right, and stopping.
✅ Result: Smooth and responsive control.
Omar:
Helped me debug my Arduino code and explained some mistakes I had.
His feedback improved the stability of my program.
Abdel Rahman:
Gave me advice when my Arduino didn’t work with the battery.
He explained that the battery needed charging after being unused for a long time.
Asmaa:
Helped me use the driller safely and provided me with colors and tools to finish the box.
Eman:
Helped me when I needed to cut the circle for the wheel and later when I decided to add a switch.
Yassin:
Always followed up with me to check on my progress and encouraged me to keep going.
I shared my Fusion 360 bracket design with them so they could reuse it.
I explained some of the steps I learned in RDWorks for laser cutting.
I supported classmates in assembling their projects when they needed an extra hand.
Problem:
When I connected the Arduino to the 7.4V lithium battery, it didn’t power on. However, it worked fine when I connected it to a bench power supply.
Troubleshooting and Solution:
I asked Abdel Rahman for advice. He explained that the battery was “blocking itself” because it had been unused for a long time and wasn’t charged. After charging the battery, the Arduino worked normally.
Key to Solution:
Guidance from a peer (Abdel Rahman) and proper charging of the lithium battery.
Problem:
The circle hole for attaching the wheel to the DC motor was too small. Later, I also decided to add a switch after I had already cut the panels.
Solution:
Eman 🥰 helped me recut the wheel circle and create an opening on one side of the box for the switch.
Key to Solution:
Assistance from a peer (Eman) and flexibility to adapt the design.
Problem:
I needed more holes for the brackets after assembly.I used a hand drill in work space in San3a 💕 to create the missing holes.
Solution:
Asmaa,😍 😘 a specialist, helped me use the drill machine to make the extra holes safely. She also provided colors and extra tools that I used while finishing the project.
Key to Solution:
Hands-on support from the community and access to workshop tools.
Support:
Yassin😌was always checking on my progress, asking for updates, and motivating me throughout the project. His encouragement made me more determined to complete the project.
If I had more time, I would:
Add more LEDs around the chassis to make the project more interactive and visually attractive.
Improve the servo door mechanism so it can open automatically in a smoother way and maybe close with a delay.
Explore adding different lighting patterns (like blinking or fading) to match the actions of the box.