Archive | sensors RSS feed for this section

Sensors and Relays, Raspberry Pi, and Python

6 Jan

My school has a Computer Programming/Raspberry Pi club that my dad and I host.  Each time, we teach a lesson about the Pi, Python, Scratch,, binary/hex, etc. and then students break into groups to learn about a topic of their choice.  Some choose to go deeper into Scratch, others work on Raspberry Pi projects, and others use websites like codeacademy or EdX to go learn a different programming language.  We spent a couple of classes talking about what the different languages are used for.  For example, we said that HTML and CSS are good for making websites, Python is good for making MineCraft hacks on the Raspberry Pi, and Javascript is good for making web apps.

We’ve also had several guest speakers who are experts in computer programming come to our school and speak.  For example, we had a Google intern, we went and visited Google, and we had a programmer from JennaSys Engineering speak to us.  We asked each one what programming language they would recommend that we start with.  The Google Intern said “Python or Java,” the Google engineer said “Anything but Python, it’s too far from the hardware,” and the JennaSys engineer said, “Python.”  So, we decided that our lessons would focus on Python.

Below is the script that I wrote for our most recent lesson.  For this lesson, we used a GrovePi to take input from a light sensor and send output to a relay.  The circuit spins a motor if the light level gets too low.  So, this could be used to open and close your window blinds as the sun rises and sets, but that’s not very realistic.  In reality, there are many, many devices that use this exact same structure.  For example, your thermostat turns on the heater if the temperature gets too low and the AC if the temperature gets too high.  Some cars turn on the headlights when it gets too dark.  Your refrigerator compressor kicks in if the fridge gets too warm.  Some cars have windshield wipers that turn on when they detect moisture.  Grocery store doors open when they detect a person nearby.  An alarm goes off when a door is opened.  What these systems all have in common is that there is a sensor that triggers a relay to do something.  There are hundreds of other examples of this, too (3D printer micro switch, printer jam detection, phone overheat protection, laptop turns off when the lid closes, etc.) so we decided to look at an example of code that can make this happen.

I have to put a picture of the code because my spacing in the program gets messed up on WordPress for some reason:


A “relay” is a switch that you can turn on and off with code.  The click that you hear when you turn on a device with a remote control is the relay switching on.  They have one side that is “Normally Open” and you can use code to close it (turn it on) and another side that is “Normally Closed” and you can use code to open it (turn it off).  It gets confusing because generally, when you send a value of “1” to an output, you are turning it on.  But if that device is plugged into the “Normally Closed” side of the relay, then it’s already on and you turn it off by sending the value of “1.”

So, although the circuit that we had that day was only slightly cool, the applications to other areas are powerful.  This project also demonstrates why a Google engineer told us that Python isn’t the best language to learn.  The libraries make it so easy.  If you were writing code for a car’s computer, you wouldn’t be able to take the shortcut by importing the GrovePi library.


Raspberry Pi Starter Kit:  $69.95

GrovePi board and sensors:  $75.00

DC Motor:  $5.00

Variety of batteries, clips, and wires