John D.

Hi, my name is John and I’m a rising sophomore at Regis High School. I chose the Raspberry Pi Wi-Fi Enabled Camera for my main project which is a touchscreen camera that uploads all the pictures that are taken to Dropbox. I built it based on this article from AdaFruit. I wanted to build this project because I’ve worked with Raspberry Pi’s before and I felt like this was a challenging project to build, but would be very useful. For my starter project, I chose the voice changer because I thought it would be fun to build and use, and would be a good soldering challenge. It takes voice input from the microphone and can modify it 4 ways. The kit was from this site.

Engineer

John D.

Area of Interest

Software Engineer, Developer, Mechanical Engineer

School

Regis High School

Grade

Rising Sophomore

Final Milestone

Social hosted video URL is empty.

My completed project is a Raspberry Pi WiFi Camera. It can take pictures and videos and uploads them to Dropbox. I built this because I thought it would be very useful and I already upload all the pictures and videos I take to Dropbox. To make this project, I first downloaded the Jessie operating system that was configured to work with the PiTFT touchscreen. I burned the image to an SD card and put it into the Pi. Then I connected the camera, touchscreen display, and power supply to the Pi and booted it up. After configuring the settings and downloading the camera software, I tested it by taking a picture. The picture was taken when the screen was tapped. After I knew that it worked, I set up Dropbox uploading and tested that. The next step was setting up buttons and video capture. For video capture, I created a function that started and stopped video recording. The function initially had a specific time that it would record the video for. After I tested the actual ability to record video, I set up a button that would stop the recording. The video recording was still started by tapping the screen, and so the code would have to be changed every time you wanted to switch from recording videos to taking photos. I fixed this by setting up two more buttons- one that would start video recording and one that would take photos. A function would constantly run and check if a button was pressed, and if so, which button. Depending on the button that was pressed, the function would call a function. That function would then call the photo or video functions. The camera was still being run off of a mobile battery pack and using buttons built into the screen. I set up a rechargeable battery pack that would allow the camera itself to be charged. I also set up a shutter button and start and stop recording video buttons that were not on the screen and removed the ones on the screen. The final step was designing and printing a case for the Pi. Unfortunately, I made the bottom of the case too thin, which caused the bottom to warp and make the case hard to use. I learned a lot about Python code while making the project, since the main camera code was written in Python. I also learned how to use the GPIO pins on the Pi to attach buttons that would call function in Python. Finally, I learned how to design a functional model by using CAD, even though the case didn’t turn out as expected. The main hurdles of my project were finding a usable operating system that would work well with the touchscreen, figuring out how to set up buttons to start video recording and take a picture, and designing the case in time to be able to print it out. I had to get help from one of our instructors with the buttons since he knew a lot about Python. I also read a lot of online documentations of the software and finally figured out how to make it work. I am happy with my final product and I think it was a good project.

Reflection

My favorite parts of this project were working on the Python code and figuring out how to set up buttons on the Pi. I also enjoyed soldering all the hardware components together. I would like to use my new knowledge of Python in the future and develop more Python programs. I would also like to use what I learned about using CAD to design objects to 3D print. It feels very fulfilling to have a working project and to finally have everything work. It was a challenge to find a good operating system that worked with the touchscreen and configuring the buttons to work with the Pi, and both of those took multiple days to figure out, but in the end I was able to produce a working product. I feel more confident in my ability to work through problems even if it seems like there is no solution. I am very happy that I worked on this project.

Second Milestone

Second Milestone

For my second milestone, I made the camera upload every photo and video taken to Dropbox, enabled video recording, and set up buttons to start and stop recording video and take a picture. This makes the camera a lot more user friendly and adds an extra feature to the camera. The Dropbox uploading is especially important because accessing the photos or videos on the camera is very hard without uploading them. The buttons are also very important because without them you would have to change code to switch between pictures and videos.
To upload the media to Dropbox, I had to download a script that would do the uploading and run the script from the camera code. I used code from the picamera documentation to start and stop video recording and set up buttons to stop the recording so that a recording time would not have to be specified. I also had to use code from the picture taking function that would automatically increment the file names based on the media currently in the folder. The buttons were the hardest part of this portion of my project. I couldn’t get that much information from the documentation so I had to find any information that I could. I also don’t know that much Python code, so I learned a lot about Python in the process. I finally used two different libraries- one that would be used to start the recording and take a picture and one that would be used to stop the recording. The ones that trigger the recording and photo-taking functions were the hardest ones to write. I set up one function to trigger different functions based on the button that was pressed. The triggered functions then triggered the actual recording and photo-taking functions. The stop-recording function was inside the recording code and was triggered when the button was pressed.
When working on this project, I had to use the terminal and Python a lot. I learned a lot about how Python works and how to actually make new functions that act based on buttons. My next milestone will be printing out and assembling a case for my Pi camera.

First Milestone

First Milestone

For my first milestone, I assembled the main hardware of the Pi Camera and installed and ran the operating system and camera software. I also configured the software to boot on startup, so that when you turn on the Pi, it goes right into camera mode. This is the basis for my whole project.
I downloaded the operating system image that enabled my touch screen from AdaFruit, and installed it. This took a long time because the lite version of the operating system was recommended, but it did not work. I also needed a GUI for Wi-Fi setup, which it did not have. I tried 4 different operating systems on the Pi and finally settled on the full version rather than the lite version. I then connected the touchscreen to the GPIO pins on the Pi, and the camera ribbon cable to the connector. I put the microSD card into the card slot and booted up the Pi. I had to expand the filesystem which allows the Raspberry Pi to use the whole SD card and change partitions and I also changed the hostname to “picamera” so I could find it easily on my network. Finally, I installed the camera software and edited the startup file, rc.local, to run the commands necessary to start the camera on startup. The Pi runs off of a battery pack, so it does not need to be plugged into the wall. While doing these initialization processes, I attached a wireless keyboard to it, but it can be used without the keyboard via the touchscreen.
I had to know how to install and write an operating system image to an SD card, and basic command line operations for the Raspberry Pi/Linux terminal. I learned how to troubleshoot issues on the Pi and how to control it via SSH without using the actual Pi interface. Currently, the camera saves pictures into a camera folder that is very hard to access via the SD card and can only be accessed over SSH or using the Pi as a wireless network location, so my next milestone is making the camera save all the pictures to Dropbox.

Starter Project

Starter Project

For my starter project, I made a voice changer. The circuit board is powered by a 9 volt battery and when it is powered on, an LED light turns on. The voice changer takes audio from the microphone and sends it to the IC Chip. The audio is modified by the IC Chip if desired and then sent to the speaker. It can play back your voice normally, increase and decrease the pitch, make it sound like a robot, and make it sound richer with a vibrato setting. These settings are triggered by different buttons. An LED light turns on when there is input from the microphone, and there are volume and microphone sensitivity knobs. The speaker is very close to the microphone, which creates a lot of feedback and weird audio. I solved this by separating the two when talking into the microphone. The circuit board was also not working for a while, until I figured out that one of my chips were in backwards. While completing this project, I learned a lot about IC chips and how they control the circuit board.