Abduselam Sultan
A Software Engineer
A Software Engineer
To kick off the project, we held a group meeting with our advisor to establish the foundation of our work. During the meeting, we introduced ourselves, discussed our individual skills, and clarified our roles and responsibilities within the team. We also outlined the project's goals and began exploring potential ideas. The advisor provided valuable insights into the project scope and expectations, which helped us align our understanding and set a collaborative tone for the project. This meeting laid the groundwork for effective teamwork and communication throughout the project.
The brainstorming session was a critical step in generating ideas and ensuring they aligned with the SDA (Software Development Approach). During this meeting, we discussed potential project directions and explored innovative concepts that addressed real-world problems. Each team member shared their perspective and skills, which guided us in evaluating the feasibility and impact of each idea. We debated various concepts and began narrowing down our options, setting the stage for a focused discussion on selecting the best project. This collaborative effort demonstrated our team's commitment to creativity and practicality.
After generating a list of potential ideas, we focused on analyzing three key concepts: a smart lock, a smart farm, and a smart parking system. We assessed the feasibility, potential impact, and alignment with SDA principles for each idea. For instance, we discussed how the smart lock could enhance security, how the smart farm could optimize agricultural productivity, and how the smart parking system could address urban parking challenges. This analytical phase helped us better understand the strengths and limitations of each concept and brought us closer to finalizing our project direction.
Following our detailed discussions, we submitted the smart parking system as our project proposal. We highlighted its ability to address urban challenges using advanced technologies such as IoT and real-time data management. Our proposal included key features like automated space detection, reservation systems, and user-friendly interfaces to streamline parking. We also emphasized the project's feasibility and impact, demonstrating how it could align with urban development trends. Submitting this proposal marked a significant milestone, signaling the beginning of our project journey.
While preparing to dive into the smart parking system, we discovered that a similar project had been implemented by a previous team. This realization prompted us to pivot and explore a unique concept that hadn’t been tackled before. After revisiting our brainstorming session, we decided on a smart bike rack system. This new idea aimed to address the need for secure and efficient bike storage in urban areas. We explored features like automated locking, real-time availability updates, and mobile app integration to make the system innovative and user-friendly. The decision to change the title reinvigorated our team, providing fresh energy to tackle the project with enthusiasm.
After pivoting to the smart bike rack system, we began assigning tasks based on individual skills and expertise. Recognizing my background in embedded systems and hardware, I was tasked with the ESP32 programming and wiring of the electronic components. My primary responsibility was to develop the microcontroller's firmware and integrate the hardware setup for the smart bike rack system. This would involve coding for functionalities like locking mechanisms, communication with the backend server, and interfacing with sensors. With tasks clearly distributed, our team was ready to move forward with a strong sense of direction and focus.
This week marked the beginning of the implementation phase, as we received funding and procured the necessary materials, including the ESP32 board, servo motors, sensors, and other electronic components. I took charge of verifying the components to ensure they met the requirements for our project. After a thorough review, I organized and prepared the hardware for assembly. This preparation included identifying proper connections, mapping GPIO pins, and reviewing technical specifications to confirm compatibility. These steps laid the groundwork for smooth hardware integration and minimized potential issues during assembly and testing.
With the components in hand, I focused on wiring the electronics for the smart bike rack system. This included connecting the ESP32 microcontroller to servo motors for the locking mechanism, an IR sensor for bike detection, and ensuring proper power distribution across the system. I meticulously followed best practices for wiring to avoid electrical interference or unstable connections. During this phase, I also tested individual components, such as the servos and sensors, to confirm they were functioning as expected. By the end of the week, the hardware setup was complete, and the system was ready for programming and integration.
I began developing the ESP32 firmware to control the hardware components and enable communication with the backend server. Using Arduino IDE, I wrote code to handle locking and unlocking bikes, interfacing with the IR sensor for bike detection, and managing communication via WebSockets. One of the main challenges I faced was ensuring real-time responsiveness of the system while maintaining reliable communication with the server. To address this, I implemented a structured approach to handle WebSocket events and optimized the servo control logic for efficient operation. By the end of the week, I had a working prototype of the firmware, ready for testing.
This week was dedicated to integrating the ESP32 firmware with the backend server developed by our team. I coordinated with the backend team to test API endpoints and ensure seamless communication between the microcontroller and the server. We conducted multiple tests to validate the system's functionality, focusing on scenarios like locking and unlocking bikes based on user commands sent from the server. During testing, I identified and resolved a few issues related to data synchronization and timing, which improved the overall system performance. This integration phase marked a significant milestone in making the hardware and software work cohesively.
As a team, we presented our progress to our advisor, which was an insightful and encouraging experience. During the presentation, I contributed by explaining the hardware setup and demonstrating how the ESP32 microcontroller interfaced with the sensors and servos to execute commands from the backend. The advisor praised our work and provided constructive feedback to refine the project further. She suggested a few enhancements to improve system performance and ensure a smoother user experience. This feedback was invaluable in helping us identify areas for improvement, and as a group, we left the meeting motivated to implement the changes and continue refining our work.
As the project neared completion, I focused on finalizing the ESP32 firmware and ensuring the hardware was fully operational. This involved conducting thorough end-to-end testing to confirm that the system met all functional requirements. I also documented the hardware and firmware setup to assist the team during the presentation and for future reference. During our final preparations, I collaborated with the team to create demo videos showcasing the hardware's functionality, including real-time locking and unlocking of bikes and sensor-based bike detection. The presentation highlighted the integration of hardware and software, demonstrating how our system provided a secure and user-friendly solution for bike storage.