Inspiration
Our team was inspired by the idea of punch cards used to program computers in the early days of computing technology. Our project aimed to reinvent a punch card system by utilizing modern technologies and adapting key concepts of reading binary to convey information.
What it does
"Message Through Time" enables users to convert ASCII character messages into binary. Instead of simply transmitting the binary via Websockets, our code generates a PDF resembling a punch card, with 0s and 1s in place of hole punches. This PDF is then scanned using an Arduino microcontroller, which processes the image to readable text and ran through additional code to convert the binary back into ASCII for display on our website. While users can manually create their punch cards, our automated generation feature showcases the advancements in computing technology.
How we built it
For the frontend of our website, we used Vue3 along with custom CSS, while axios facilitated interaction with our backend. Our backend is split into two main sections:
- The Websocket/HTTP server, built using Node.js and Express, manages communication between the image processor and users. It also provides endpoints for viewing scanned punch card images, retrieving scanned images, initiating image processing requests, and additional utility endpoints.
- The Flask application handles image processing using OpenCV and Tesseract. It retrieves images from the HTTP server, processes them to obtain binary strings, converts them to ASCII, and transmits the message via Websockets for website display.
Challenges we ran into
We ran into challenges such as how to generate the punch cards, as well as how to get the punch card reader to work as we intended. Programming the Arduino proved to be very tedious as none of us were super familiar with how to program a microcontroller. However, after much trial and error, we eventually got a working camera module and were able to send an image via a POST request to our server. , Implementing Tesseract correctly was also a challenge. It felt very tedious to work with, and then when deploying it, we ran into many hurdles with downloading the binary for use on the server. Towards the end, we also ran into many issues with HTTP. It seemed that nearly every method that required sending a file just didn't seem to work despite having tested it locally.
Accomplishments that we're proud of
We are proud of the significant effort we put forth as well as the amount of progress we made. This is our team's first hackathon so successfully generating and executing a creative idea has been especially rewarding for each of our members. Despite the challenges we faced, each member efficiently completed every assigned task. We are also super proud that we were able to incorporate hardware into our hack. We all have a good amount of experience with programming software, but it was exciting to learn about a different area and apply our skills in a different way.
What we learned
We have gained significant insights into integrating various components and have deepened our understanding of our respective areas of expertise. In addition to enhancing our technical skills, we've also learned valuable lessons in efficient communication.
What's next for Message Through Time
We see our project having many applications! To name a couple:
- User authentication via identifiable hole punches on cards, granting access to specific areas. This could be built into an employee's ID badge and would be a physical manifestation of a key rather than using an RFID tag or something similar.
- Encrypted messages: Establishing a database to store and share protect messages, ensuring they can only be viewed by authorized recipients.
Log in or sign up for Devpost to join the conversation.