Final Project – Scott Kim


Solar Powered Website


First, I bought a cheap solar panel, a battery, and a solar controller to connect the two and provide an output. After a bit of googling to make sure they were compatible, I was able to get a straightforward solar battery, capable of (slowly) charging my phone:

And then on the software side, I got a simple website up on a raspberry pi. However, I wanted a way to prove that the website and the raspberry pi are connected, so I added a button to the website that would turn on/off an LED on the pi. (Forgive my home’s awful wifi password)

And this is the final result after hooking up the raspberry pi to the solar controller, and toggling the LED light from the website!

Learning Goals

  • Learn to work with solar panels/controller

    • This was one goal that, like many other skills I learned in the class, was much more accessible than I anticipated. Like with 3D printing, laser cutting, soldering or sewing, it wasn’t a hard skill to learn, but I was just intimidated because it sounded difficult. Learning to hook up the battery and solar panels to the solar controller was as straightforward as googling the terms I didn’t know and making sure the voltages matched up and that the final output current would be enough for the raspberry pi. Most of the things I imagined would be impossibly intimidating were mostly taken care of by the solar controller, making sure that the battery isn’t overcharged and keeping things safe.
  • Learn how to use a domain name

    • This was something that was surprisingly hard to figure out. Not because it was hard on its own, but because all of the available resources seemed to assume I know a lot more or a lot less than I did. So many guides I found either suggested that I use a click-and-drag website creator like Squarespace, or began diving into the huge world of multiple servers and web frameworks. Eventually, scrapping together bits and pieces from a couple of online sources and shoehorning in the few things I knew, I was able to get the domain to point to the raspberry pi website.
  • Starting the project earlier

    • I originally said in the project proposal that I would send Duncan a project update twice a week, every Sunday and Wednesday. I was (almost) able to do this, missing a day or two and often sending them on either the Monday or Thursday. However, I did keep pretty well on the overall track of spending a week on the power supply, a week on the raspberry pi website, and the last week polishing both.
  • Maintainable & neat on both software and hardware

    • The polishing week was definitely a great idea because otherwise It would’ve been several light and heavy things dangling from each other by rather thin wires. In the video, you can see that the battery, controller, and solar panel are one cohesive unit 🙂
      The code was also surprisingly simple.

    • Divided up into three parts, the first third sets up the server on the raspberry pi. It starts “listening” for new connections, and where the data for the website formatting/style is stored.
    • The second third sets up the pi so that it can control the GPIO pins. These are the external pins on the raspberry pi, and is what I use to power and unpower the LED.
    • The last third actually controls the LED based on the the website visits. When someone clicks the button, it checks if the light is on and runs a command that toggles it. Then, it sends them the index.html file which is the same website again, redirecting them to the same page.


This project was inspired by a website my friend showed me over the summer, and you can find it here:

When I first saw this website, the immediate thing that went went through my mind is the thought “wow, I wish I knew enough about the technologies involved to be able to do that. But with so much electrical and website-hosting knowledge involved, I’m sure I’ll be able to in a few years.” Really, I gave up before I even begun. I did no research, instead I just trusted that I wouldn’t be able to do it and instead assumed that I’ll eventually be able to do, without any sort of timeline. After taking this class though, I learned that I do that very often. I wanted to take this opportunity to look back at something that I’ve dismissed before and really work through it without any preconceptions about its difficulty or possibility. I think that after this class and the assignments, I’ll be a lot more eager to take on new skills and challenges without being intimidated by them.

And now?

This course has definitely been my favorite class this semester, and one of my favorite in all of my courses so far. It’s also made me realize that “making” is something that I had always enjoyed, but never had a word for. In my highschool was a room called the “Engineering Room” and it was just a place with free supplies and tools open for anyone to come in and use. It was my favorite room to spend nearly all of my after-school time in, and it was what made me pursue a major in Mechanical Engineering. However, when I came to the school and started taking courses, I found it to be so much different from what I did in the “Engineering Room”. I was suddenly aware of the difference between tinkering and engineering, and realized I liked one much more than the other. It was because of this that I switched majors into Computer Science, because it allowed me to tinker so much more than Mechanical Engineering had.

And now after taking this course, I learned that there is a word and a community behind the thing I loved to do: makers. I had always called it tinkering, prototyping, or “lego-bricking”, but I’m so glad to have discovered that the true word is Making, and that there are millions of like-minded people dedicated to create a welcoming and accessible community of teachers and learners alike.