Inspiration

Our team is heavily involved in robotics, and our love of robotics caused us to want to create a way for people to control autonomous robots in our case a tank without any programming experience in order to develop the same passion we have.

What it does

Our program can be accessed from any browser hooked up to the same network connection as the raspberry pi hosting it. The program is a flask webpage which allows users (kids learning how to program) to place blocks to control a robot which the raspberry pi is connected to. We also built a demo-bot for the software which is essentially a tank made "jank", hence the name "Jank Tank"

How we built the software

The block code generates formatted python code which is wrapped in a JSON object to be sent off to the flask webserver hosted on the raspberry pi in an AJAX request when the user presses the execute button. The python script then runs functions we created (e.x. forward or turnLeft) to control the raspberry pi's GPIO pins to control the robot.

How we built the demo-bot

The demo bot is powered via a 12V battery and a portable charger. The bot's "brains" are the raspberry pi, which uses the software to intercept block codes sent by the user. The raspberry pi sends out electrical signals via its GPIO pins which are read by the arduino. The arduino then sends out a signal to the MOFSET transistors, which are hooked up to the 12V battery to power the motors, which control the tank. The reasoning behind this multi-multiprocessor setup was because the raspberry pi does not have the 5V output required to run the MOSFETS we used for the motors, but the arduino can output 5V, requiring us to use the arduino as the MOSFET controller. Most of the 3D printed parts from the demo-bot were from past projects, but the tank was assembled from scratch during the hackathon.

Challenges we ran into

It was difficult to implement a block coding interface and creating unique blocks for the purpose of controlling robots. It also took us a while to connect the python code generated by the block code to the python script and also communicating and controlling the robot using it. There was also issues as mentioned earlier with controlling the motor with a raspberry pi, which we solved by placing an arduino as a sort of "man-in-the-middle" between the raspberry pi and the MOSFET transistors, which then output to the motors. We also had problems keeping the tank together because it was assembled with mostly hot glue and duct tape.

Accomplishments that we're proud of

We are proud of solving the different challenges we had, as well as creating a final product that allowed users to be educated and learn how to control robots easily. It was also great to build an actual demo robot, however "janky", to test out the code we worked so hard on. Finally, plugging together the end-to-end code was extremely satisfying to do, and was considerably cleaner than we had originally presumed.

What we learned

We learned how to implement different frameworks and implement features like block coding. We also learned how to configure a Flask server on a raspberry pi to execute python on a server. We got bounds of experience in end-to-end development, from the client to the server to the hardware.

What's next for Jank Tank

In the future for Jank tank we hope to be able to create better learning experience for the user and give more information to the user about what is happening "Under the hood". Also with more time to work on the tank in the future, we can use professional methods to assemble the tank so that it isn't so jank.

Share this project:

Updates