this is CS50

Final Project: Google Classroom Assignment Counter


Integrating IOT with Education Connecting the Virtual to the Physical

I have enjoyed taking CS50 quite a bit. I started the class over the Christmas break, and have it mostly finished by Spring Break. Writing C code gave me a appreciation for the high level languages I had been previously aquainted with. To put it in perspective, I spent about two weeks trying to learn how to implement linked lists and hash tables. Concurrent with my interest in CS50 was my interest in IOT technology. I watched every TED talk I could find on the subject and decided I wanted to do something along that flavor for my final project. I already had two Raspberry Pis laying around. After some brainstorming, I narrowed my ideas down to the three most feasible and floated a survey to my colearners, coworkers, and students. Here are the results.


Integrating with Google APIs Easier than you think

Google APIs are incredibly easy to use and they are documented very well. I've always used the Classroom API to make importing grades easy, so, it was fairly simply to copy the Python Quickstart and extend my code from that example. The code is pretty simple. Basically, I use a pip installed library to do the Oauth dirty work. The libary makes GET requests on my behalf, and I just have to substitute parameters into the provided functions. I'm only getting last updated time and status for the last 500 assignments for whatever course I query. Results come back as a list of Python dictionaries. There's a couple of counter variables and more code to interface with the 7 segment LED (more on that later). The whole thing runs in a while loop, because I have 2,000,000 request per day to play with. Don't think I can hit that...


And Finally... The semi finished product.

The physical interface is a Raspberry Pi with a 7 segment LED and a buzzer. The 7 segment LED is driven with just two pins from the GPIO. I'm using a serial data cable and a clock cable, the pins are part of the RaspPi's i2c interface and Adrafuit provided a library that takes care of multiplexing the LED's. All I have to do is send an argument to a print_number_str() function. The LED runs on 5V, which comes from the Pi, so if I have wifi, I can do everything with one power cable coming out of the box. Functional testing seems to indicate it's going to work, and my students have already remarked that it is "cool". The cover is a custom laser etched design that I did myself.


Loading...
c