We designed a system where a light sensor detects the shadow created when someone steps onto the bus stairs. Each shadow is counted, allowing us to keep track of the number of passengers.
A key part of the coding logic was distinguishing between A→B (boarding) and B→A (exiting) movements, so that each passenger could be correctly classified as either entering or leaving the bus.
The system was integrated with a mobile app via Bluetooth, allowing real-time synchronization of passenger counts and sending alerts when necessary.
Initially, we attempted to use ultrasonic sensors to detect passengers. However, the sensor proved too sensitive to minor movements, which led to unreliable results. After much trial and error, we decided to replace the ultrasonic sensor with a light sensor, rewriting the program to accommodate this change.
The switch brought two major advantages:
More stable readings — Unlike the overly sensitive ultrasonic sensor, the light sensor produced stable values with fewer errors.
Improved detection on stairs — Ultrasonic sensors sometimes failed to detect people skipping steps, but the light sensor recognized shadows, making detection more reliable.
That said, the light sensor also posed challenges: in the beginning, its sensitivity to environmental changes caused inconsistent results, requiring further calibration and refinement.
Using the method described above, the calculated passenger count is transmitted via Bluetooth and displayed directly on the app screen. This allows guardians and staff to easily monitor the number of children inside the bus in real time.
The app also provides a notification scheduling feature. Users can set a custom time at which the system checks whether any children remain inside the bus.
If the Bluetooth data shows that the passenger count is not zero, the app sends a notification at the set time indicating that a child is still in the vehicle.
Notifications persist until the user manually clears them from the status bar, and they include sound and vibration alerts for visibility.
The app was developed using Android Studio.
if (dailyNotify && cnt != 0)
// cnt(인원 수)가 0이 아닐 때 알림이 간다
We created a simple yet cohesive design by arranging basic shapes in Microsoft PowerPoint, with an emphasis on consistent color schemes. To make the interface more engaging, the buttons were designed in the shape of a bus, adding a playful and child-friendly touch.
In the initial design stage, we planned for the app to allow only one notification setting. However, during team discussions, we realized it would be inconvenient for users to reset the time each day. Instead, we decided to implement two notification slots, aligning with typical school schedules (morning and afternoon).
Although the sudden change in plans was challenging, we successfully modified the app to support an additional notification setting, improving its practicality.
To demonstrate our project, we built a miniature bus model.
We used two cardboard delivery boxes to form the main structure, then added foam board (woodrock) to design the interior of the bus. Finally, we decorated the exterior with permanent markers to give it the realistic look of a school bus.