We were originally looking into building a robot, inspired by the automation studies of one of the teams graduate members. Looking for a way to better engage with the Brick Hack Community and inspired by the 2014 Twitch Plays Pokemon project, this idea had evolved into creating a community experience in which a large group of students could work together to accomplish a goal.
What it does
Users are presented four options each representing a possible direction for the robot to move. Each user will be able to press the button to cast a vote for the direction that the robot will move next. Multiple votes can be cast allowing users to spam the inputs to influence the vote toward their desired direction. Once voting closes, the winning input will be sent to the robot and the robot will move accordingly. To increase the difficultly, the voting periods will pass faster then the robot will move, forcing users to keep track of the previous winning inputs for decision making.
How we built it
We had spit our labor into three large systems: the model, the server, and the web app. Each of our members focused their efforts on an aspect that fitted their particular skill set. The model consisted of organizing the Arduino code, wiring the electronics and creating a frame for the robot. The server consisted of relaying messages back and forth between the Arduino and the web client. The web app was a simple component-container style react app written in typescript. We were able to get it dynamically served through a service called ngrok.
Challenges we ran into
We had run into several issues with hardware and setting up the teacher/ student connection between the Raspberry Pi and the Arduino Uno. Several parts of the hardware did not function properly with the Arduino libraries or with the Arduino IDE. Each had delayed us an hour or two as we had to look through the code for each error and occasionally had to return components to the rental once we had realized the error was coming from a defective part. Another issue we ran into was multi-threaded server code. Keeping track of threads and different async/await sequences proved to be quite difficult. As for the web app, deployment was a much larger task than originally sized. Our main front end developer went through 5 different remote deployment methods until we settled on ngrok.
Accomplishments that we're proud of
After some initial struggle with system integration, we were finally able to integrate the three systems seamlessly. We were able to achieve all major milestones for our project and will have a functioning prototype for demonstration.
What we learned
We learned that even though a task may seem daunting. If you're willing to rise to the challenge, you'll achieve great things. We also learned that inter-disciplinary projects are made or broken by communication. In addition, skill crossover between fields is invaluable.
What's next for Brickardo?
This is our last year coding together as hackathon friends. We hope that the lessons that we take from this project will aid us in our future careers.