* Team Number: T05
* Team Name: Fusion Maverick
* Team Members: Qingyang Xu, Ruizhe Wang, Xinyi Wang
* Github Repository URL: https://github.com/ese5160/a14g-final-submission-s25-t05-fusion-maverick.git
* Description of test hardware: (development boards, sensors, actuators, laptop + OS, etc)
We designed a magic wand for IoT-based environments, capable of remotely controlling electronic devices through gesture recognition. In our prototype, we used a motor and an LCD screen as actuators. The system also features an “echo back” mechanism, providing distinct haptic feedback via a haptic driver and vibration motor to confirm command execution.
The project is inspired by the current smart home system. Instead of the mobile control via smart phone, we want to bring in more fun in the whole scheme. In addition, the magic wand could also be programmed as a laser cat teaser or a magic wand for children entertainment.
Design of the Internet-Connected Device:
The system is composed of two custom-designed PCB modules: the Wand Module and the Actuator Module.
The Wand Module detects hand gestures using an onboard IMU and activates only when the force-sensitive resistor (FSR) is pressed, minimizing unintended gesture recognition.
Once a gesture is recognized, the microcontroller processes the data and transmits the corresponding command to the cloud via Wi-Fi.
The Actuator Module, which maintains an active Wi-Fi Internet connection, receives this command and performs the appropriate action using motor and LCD.
After execution, the actuator sends feedback to confirm task completion, which is communicated back to the user via a vibration motor on the wand.
Sensors, Actuators, and Key Components:
Magic Wand PCB:
Actuator PCB:

The difficulties we encountered lies in two aspects: MQTT communications between two devices with the introduction of Node-RED and the stack/memory allocation among different threads/tasks.
For the MQTT communications problem, we aimed to achieve both end-to-end/device-to-device control and cloud control, then we need to tackle with the potential conflicts. We modified the Node-RED interface setting(specifically, function with multiple buttons architecture) to allow both control scheme and ensure no mutual influence against each other.
For the stack/memory allocation challenge, we mainly resolved by using the debug mode and Percepio to measure the CPU usage of each thread/task and their occupation with respect to the whole progress, so that distribute adequate stack/memory for each thread/task.
Lessons learned:
We learned the importance of early testing with real hardware and dev board for all sensors and actuators. Also we learned the importance of planning for edge cases and hardware redundancy. For example, we added test pads to unused pins so they could serve as backups if any primary connections failed.
What we would do differently:
We would try to use DMA for SPI communication when wrting the LCD library. We would also design the 3D-printed parts earlier to make them better fit our PCBs. We might also design two firmware versions so that we can see the difference when we update the OTAFU.
Steps to Finish/Improve the Project:
We plan to refine the IMU gesture recognition algorithm using machine learning models to improve accuracy. We also aim to optimize the firmware architecture by consolidating all tasks into Wi-Fi-related modules. This restructuring is expected to reduce memory usage and potentially resolve the system freeze issue.
What We Learned in ESE5160:
This project significantly deepened our understanding of embedded IoT systems, covering the entire development cycle—from PCB design and sensor integration to firmware development and real-world testing. Through hands-on experience, we gained a better appreciation of the challenges involved in building reliable and user-friendly connected devices. It not only reinforced our theoretical knowledge but also sharpened our practical engineering skills, such as FreeRTOS task scheduling and hardware-software interfacing. Most importantly, we developed strong debugging capabilities, learning how to systematically identify issues using debug mode, an oscilloscope, or a logic analyzer, trace root causes, and implement effective solutions under real-world constraints.
HR01 - project shall be based on SAMW25 core.
HR02 - external-connected slide switch shall be used for activation of the wand.
HR03 - external-connected Force-Sensitive Resistor(FSR) Interlink Model 402 shall be used for for command detection.
The sensor will detect if continuous force exerted in the sensing area, as a start flag and maintaining state for the wand gesture recognition.
HR05 - external-connected LED strip shall be used for command emission indication.
The LED strip will quickly flash simultaneously as the control command sent out via MQTT to the cloud, imitating the laser emission process.
HR07 - project shall be based on SAMW25 core.
HR08 - mounted state LED shall be used to reflect the state of the actuator.
If there is no control demand, the state LED maintains off; vice versa, the state LED will be turned on when instruction send until the task execution.
HR09 - external-connected gearmotor drived by DRV8874 motor driver shall be used as one of the actuator.
The motor will be drived to execuate the wand command. Such as clockwise to turn on, swipe up to increase the rotation speed, swipe down to decrease the rotation, and anticlockwise to turn off.
HR010 - external-connected LCD shall be used as the other actuator.
The LCD would have two function modes, one is the visulization of motor control, which would reflect the motion state of the motor, such as, as the rotation speed increase, the LCD will display volume up animation.
In addition, the LCD would solely interact with the magic wand, such as the LCD will antimate a wave pattern when wand has a ‘Wave’ tranjectory gesture, and animate a twinkle with respect to wand ‘Zigzag’ tranjectory gesture.
whole case:

magic wand case and its inner:

actuator case and its inner:

magic wand:

actuator:

magic wand:

actuator:

magic wand:

actuator:

magic wand:

actuator:

magic wand:

actuator:



