Bluetooth Module --> Arduino Nano --> 2nd Bluetooth Module --> Arduino Mega (--> LCD Display, Motor Driver) --> Raspberry Pi --> Python Flask Backend --> Firebase Database --> ATEPS Website

Security Camera --> AI --> Live Feed (Socket.io server) --> Backend --> Stream to ATEPS Website (Socket.io client)


For centuries, people have been taking attendance the long way. We wanted to make a system that allowed attendance to be taken easily and fast for both students AND teachers! We also would like to eliminate all possible ways of gun violence. Increasing the time teachers have in class to teach and making it easier to keep track of attendance will help in the long run, as it will reduce the hassle of inputting attendance, making it much more simple and smooth.

What it does

First, a student scans their Bluetooth card on the scanner on the table when they come to class. The scanner sends the backend a request, updating them as present or late in the database, depending on the time. The teacher can view attendance on the website to see who was absent, late, or present for the day in their class. Teachers can also update attendance for their classes. They can set a student as absent/late/present, through the website's simple user interface. Using AI, we make sure no one without an ID card can enter. People with ID cards will be able to enter as the door is unlocked.

How we built it

We used an Arduino connected to a Raspberry Pi for the hardware part, with a Bluetooth module on the Arduino. The Raspberry Pi code was made with Node-Red. For the backend, we used the Flask module (a web framework) in Python. For the front-end, we made a website using HTML, CSS, and JS.


We didn’t have a wifi module for the Arduino, so we had to find a way around this, using something else to make web requests. We decided to use a Raspberry Pi connected to the Arduino to make the web requests to the backend server. We didn't know how to use node-red, which was what was used to run code in the Raspberry Pi when it got an event from the Arduino, but we learned how to use it and got past the challenge. We had many bugs in getting the AI to work with our system and program. An example of this is when we had to fix our model's reaction towards an entering human and exiting human. We overcame this by decreasing our maxDisappeared value, which is how quick our model reacts by frames to incoming objects, from 50-5 frames.


One great accomplishment we made was making our first AI hack in a hackathon. We haven't done AI hacks in hackathons before, so it was a great learning experience. Another achievement was making three different components of our product that all work seamlessly together without problems.

What's next?

If this were to be used in the real world, this would be on the wall of all classrooms and all students would have their own RFIDs. On the website, there is a section to make an order request. This includes a PayPal button, as well as saying "Your request has been sent!". In a practical application of this product, there would be a maintenance team that approves the product requests, and also manages the payments. To be more practical for the payment, we could have it implemented into the actual website rather than having PayPal. The best idea for a practically made website for this product would have the process of the order request being automated, with the product ID coming with the physical product, that the user can link to their account. Finally, we can have better security rules in the database to make the site more secure.

Share this project: