My final project was to make a smart garage door controller so I could check if I had remembered to close the garage door, and if not, I could close it remotely.
A lot of the programming and development started with a setup like this:
This was what allowed me to test my code and make sure things were working as expected without having to open and close my garage door needlessly. The end result ended up looking like so:
The web interface ended up very function over form, or utilitarian since the focus was not on the looks, at least not at this time.
Some of the challenges I faced doing this project were the fact that I decided I wanted to use Django as the web engine and framework. This was due to the fact that Django is a Python-based web framework, and one of the easiest ways to interface with a Raspberry Pi’s GPIO pins is through Python. I had never written a web page in Django, so this was new ground for me and it required the building of a new skill from scratch before I could even start making what I wanted to. I suppose the part I am most proud of is the simple fact that I managed to implement a few good security measures to make sure this system cannot be easily abused to gain entry to my house.
My learning goals were first to learn how to interface with/use a Raspberry Pi’s GPIO pins, specifically within a web framework. My second learning goal was to reach out to one of the lab employees for some feedback on my project since I had not done so all semester long.
The technical goal was a rather straight forward one and I hoped it would be a lot like any other python programming I had done in the past. In reality, it turned out that using a framework like Django to write web pages kind of makes you rethink how a webpage is presented. There are a lot more interconnected parts and what is usually a simple web page in a language like PHP/HTML written in a single file, is now spread across multiple files all of which are concerned with not only the presentation of the web content, but also the path where it is found in addition to the database connections.
The learning skill goal had more to do with trying to push myself out of my comfort zone. I had done other kinds of electronics projects in the past as a hobby, and still did some electronics repair, so for the most part, I tended to rely on my own experiences and skills for the projects in class. However, I realized I might be doing myself a great disservice by staying in my own head. So I reached out to Brandon at the lab to at the very least use him as a sounding board for ideas I could explore with my final project in the future. This proved very helpful, and allowed me to come up with some very interesting additions that could be done to the project.
I think the most important thing I have realized about myself is that I don’t think very well on paper. a sketch or a plan rarely made it to paper for me, it was usually constructed in my head. Typically, there was the situation where I had a general idea of the end result and some very coarse steps to get me there, and the details of how to do something would get filled in as I started doing it. This was actually rather useful since I did not feel like I had a script to adhere to, the project and the methods were still fluid in my mind so it allowed me some flexibility and adaptability when I would encounter an issue. It usually turned out that I would put the final plan on paper, after I had finished the project since I now had the final draft of it. I guess for me, writing it on paper makes it immutable, so I have a hesitance to starting there, I instead want to end there most in the form of documentation rather than a living document.
This course has not spurred me to think of myself differently, it has only affirmed who I thought I was and what I am capable of. I have always referred to myself as a tinkerer since I like to dabble in a variety of fields some deeper than others, but I at least wanted to know enough about something to understand it and the joy others may take from it, even if I did not share that joy. The term “maker” was not a word I was familiar with, much less something I would refer to myself as. I had heard it in situations where the word seemed to be more than just what the word implied, makers are not just people that make something, they are not just inventors. Those are things makers do, but it is not all they do. Makers seem to also be involved at a community level. While that does seem to true, I realized it is not a trait specific to makers. As such, a maker can just be someone that makes things, however, I would not call myself a maker, for no reason other than I like the title I’ve given myself of tinkerer up to this point. Furthermore, I not really interested in titles like that, I just know I like to do what I like to do, others can call themselves makers, or they can call me a maker, but I always go back to the famous words of Bigweld from the Dreamworks movie Robots: “See a need, fill a need”.