Author: Belciug Matei
Group: 335CA
My project consists of a spinning arm with a led strip on it that can display a square page. By utilizing the effect called persistence of view which means observing the illusion of a source of light that is no longer there, a page is displayed by having the arm spin at very high speeds in a motion similar to a clock limb's. Its purpose is to create such displays for user defined pictures having a resolution of 32×32. The user can utilize a custom mobile app to draw the desired design and save it locally on the phone and upload through wifi the desired image to the device to be displayed. I think this is useful for entertainment purposes as it looks visually appealing and it showcases an interesting visual effect (the aforementioned persistence of view effect).
The Base serves as the structural foundation and provides the mechanical energy required for the system.
The arm is an autonomous unit that handles high-speed image processing and synchronization.
The interaction between the user and the hardware is handled wirelessly to allow for real-time updates.
1. Microcontroller: ESP32 DevKitC V4
2. LED Strip: SK9822
3. Rotation Sensor: A3144 Hall Effect Sensor (Digital output).
4. Logic Battery: 3.7V LiPo Battery, capacity: 500mAh
5. Voltage Regulator: MT3608 Boost Converter Module
6. Charging Module: TP4056 Lithium Battery Charger with Micro-USB
7. Resistors for ADC: 1x 0.25W 10kΩ and 1x 0.25W 22kΩ
8. Capacitor 1000µF 10V
| Component | Shape Size (L x W x H) |
| LiPo Battery | 40mm x 30mm x 4mm |
| ESP32 DevKit | 55mm x 28.5mm x 13mm (with antenna) |
| MT3608 Module | 37mm x 17mm x 7mm |
| TP4056 Module | 27.5mm x 17mm x 5mm |
| Hall Sensor | 17mm x 4mm x 1mm |
9. Motor: RS-385 DC Motor (6V - 12V high-speed motor|]]
10. Controller: Arduino Nano Atmega328P compatible
11. IRLZ44N N-channel 49A, 55V
12. 1N4007 rectifier diode
13. Base Batteries: 2x 18650 Li-ion Cells 2500mAh, 3.7V, Samsung 25R
14. Battery Holder: Dual-slot 18650 Holder (Series connection for 7.4V - 8.4V|]]
15. Base Charger: BMS Module 2S Li-ion Battery Charger 3.7V 4A OKYN609
16. Magnet: Neodymium Magnet 5mm x 2mm
17. Power Switch: ON/OFF toggle switch.
18. 1602 LCD Display
19. Slider Linear Potentiometer
20. Resistors: 2x 0.25W 10kΩ
For the implementation of the arduino and esp code, Arduino IDE was used. For the implementation of the phone application, kodular.io was used.
The first screen presents the user with 4 buttons: create image, load image, connect to device and upload.
The first button lets the user create a drawing on a 32×32 grid, the user has access to different colours, zooming, scrolling, an eraser, a save button that offers persistent storage on the device, renaming option (after saving for the first time) and the option to return back. As the user returns back to the main menu, the newly created image will be uploaded there.
Alternatively the user can also select the load save button which takes them to a screen that displays the saves previously made, in a chronological order and a search bar. After the user selects a save they are prompted to either delete, rename or load it as they please. Similarly to the save screen, after the user chooses to load one, the file will appear in the main menu.
The connect button shows a list of possible devices to connect to and the user may select whichever they want to connect to. After a successful connection, the name of the connection will be displayed in the main menu as well to indicate that the connection is stable.
Last but not least, if the user's app is connected to a device and the user selected a picture, pressing upload will send the picture to the desired destination via WIFI.
This code acts as the central controller for the project's stationary base, managing the power delivery and the user interface.
Key Functions:
Battery Monitoring (ADC): The code reads the analog signal from a voltage divider connected to the 7.4V battery pack. It converts this signal into a human-readable voltage value (e.g., 8.2V) and displays it on the first line of the LCD. This allows the user to monitor battery health in real-time.
Manual Speed Selection (ADC): The code monitors the position of the slide potentiometer. It divides the slider's physical travel into four equal segments, representing “Speed 1” through “Speed 4.”
Motor Power Regulation (PWM): Based on the selected speed level, the Arduino generates a Pulse Width Modulation (PWM) signal on Pin 9. This signal controls the MOSFET, which acts as a high-speed switch to regulate the motor's rotation. The code is calibrated so that “Speed 4” provides just enough power to reach the target of 2400 RPM without overstressing the 3D-printed arm.
Visual Feedback (I2C): On the second line of the LCD, the code displays the current speed level (1–4) and a visual progress bar. It uses the I2C communication protocol to send this data to the display using only two wires, keeping the wiring clean.
As the project's physical implementation could not be completed in time, unfortunately there is not much to say about the results it achieved, however by all indications of the parts that were completed in time, the project would make for an interesting display piece or decoration.
In order to scale up this project a paradigm shift is needed when it comes to the arm design, because for achieving a bigger size better balance is required, and for better balance some components that are now placed on the arm have to be moved off of it and connected to it through a slip ring. Another difficulty comes from the material used for the arm itself, as it needs to be both heat resistant and very strong to withstand the high rpm, especially at the end of the arm where the force applied to it is strongest. Lastly a smarter charging mechanism would be using some pogo pins for charging the arm from the base, this way the user does not have to worry about loading 2 different components for the device to work.
As for the project concept, it requires a balanced amount of effort in electrical design, physics, software and 3D design, making it an interesting and perfect engineering task because it tests the wide range of skills an engineer needs.