Friday, 30 August 2013

Making a raspberry pi temperature sensor (Step 9 - Your product is finished)

You have now succesfully completed making a temperature sensor with your raspberry pi.
If you wish to turn the raspberry pi off and restart it without connecting to a monitor, you must plug in a keyboard to the raspberry pi and plug the pi back into the socket. Then you wait 2 minutes before pressing Alt+F4 and the F5. This is assuming you have followed all of the previous steps.

Enjoy your temperature sensor.

Making a raspberry temperature sensor (step 8- lights and e-mail)

On sen.se make 2 more feeds. Set these up so that they e-mail you whenever data is recieved, this is quite easy on sen.se. Put led's into the gpio's 23, 24 and 25 preferably red, yellow and green (we are making a traffic light system). Then edit your code from the previous step and put in the new feed id's into feed_id 2 and 3.

import httplib
import json as simplejson
from random import randint
import time
import os
import glob
import wiringpi2 as wiringpi

wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(23, 1) #red
wiringpi.pinMode(24, 1) #yellow
wiringpi.pinMode(25, 1) #green
wiringpi.digitalWrite(23, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

run_number = 0

SENSE_API_KEY =
FEED_ID1 = #actual graph
FEED_ID2 = #min
FEED_ID3 = #max

def read_temp_raw():
     f = open(device_file, 'r')
     lines = f.readlines()
     f.close()
     return lines

def read_temp(): 
      lines = read_temp_raw()
      while lines[0].strip()[-3:]!= 'YES':
           time.sleep(1)
           lines = read_temp_raw()
       equals_pos = lines[1].find('t=')
        if equals_pos != -1:
              temp_string = lines[1][equals_pos+2:]
              tempC = float(temp_string)/1000.0
              return tempC

def send_to_opensense(data):
     try:
         datalist = [{"feed_id" :FEED_ID1, "value" :data['C']},]
         headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
         conn = httplib.HTTPConnection("api.sen.se")
         conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
         response = conn.getresponse()
         conn.close()
     except:
         pass

ef send_to_opensense2(data): #do not edit please
     try:
           datalist = [{"feed_id" :FEED_ID2, "value" :data['C']},]
           headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
           conn = httplib.HTTPConnection("api.sen.se")
           conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
           response = conn.getresponse()
           conn.close()
     except:
           pass

def send_to_opensense3(data):
      try:
            datalist = [{"feed_id" :FEED_ID3, "value" :data['C']},]
             headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
             conn = httplib.HTTPConnection("api.sen.se")
             conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
             response = conn.getresponse()
             conn.close()
      except:
             pass

while(True):
       try:
            run_number = run_number + 1
            tempC = read_temp()
            print "RasPI(2) Ambient Run:",run_number," tempC:",tempC
            data = {'C' : tempC}
            send_to_opensense(data)
        if 26.5 <= tempC and 29.5 >= tempC: # good range of 26.5-29.5 change for if range wants to change
               wiringpi.digitalWrite(25, 1)
               wiringpi.digitalWrite(24, 0)
               wiringpi.digitalWrite(23, 0)
        if 26 <= tempC and 26.5 > tempC: # okay range of 26 - 26.5 change if range wants to change
               wiringpi.digitalWrite(25, 0)
               wiringpi.digitalWrite(24, 1)
               wiringpi.digitalWrite(23, 0)
        if 26 > tempC: # bad range less than 26 change if range needs to change
               wiringpi.digitalWrite(25, 0)
               wiringpi.digitalWrite(24, 0)
               wiringpi.digitalWrite(23, 1)
               send_to_opensense2(data)
         if 29.5 < tempC and 30 >= tempC: # okay range of 29.5 - 30 change if range wants to change
               wiringpi.digitalWrite(25, 0)
               wiringpi.digitalWrite(24, 1)
               wiringpi.digitalWrite(23, 0)
         if 30 < tempC: # bad range more than 30 change if range needs to change
               wiringpi.digitalWrite(25, 0)
               wiringpi.digitalWrite(24, 0)
               wiringpi.digitalWrite(23, 1)
               send_to_opensense3(data) #
               time.sleep(10) #frequency of reading in seconds, change if required
# if ranges are changed, please make sure that ranges are continuous and do not edit the inequality signs
        except:
               pass

Getting the Pi to Auto-Start (Step 7)

To get the Pi to go straight to the desktop on start-up:
  • In the LX terminal type sudo raspi-config and a menu should appear where you can select to change the configuration for startup, so that when you start the pi it will skip the login step and the startx step and go straight to your desktop.
To get a python programme to run automatically:
  • In the /home/pi/.config directory create a folder called 'autostart'.
  • In Leafpad create a file called 'mypythonprogram.desktop' and write the following code and save it to the directory /home/pi/desktop/ :
                        [Desktop Entry]
                        Encoding=UTF-8
                        Type=Application
                        Name="The name of your program"
                        Comment=
                        Exec=sudo python "The place where the program is saved for
                                                         instance /home/pi/mypython.py"
                        StartupNotify=false
                        Terminal=false
                        Hidden=false
  • Then cut and paste the file into the autostart folder you created.
  • Test it to see if it works by typing sudo reboot into the LX terminal. 
  •  
     

Making a raspberry pi temperature sensor (step 6- coding the sensor)

Here is the sensor code. All you have to do is enter the API key and the feed ID. You will have to type this all out though it will not run if copied into python

import httplib
import json as simplejson
from random import randint
import time
import os
import glob

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

run_number = 0

SENSE_API_KEY =  "your API key here" #note quotation marks
FEED_ID1 =  your feed ID here #note no quotation marks

def read_temp_raw():
     f = open(device_file, 'r')
     lines = f.readlines()
     f.close()
      return lines

def read_temp(): 
         lines = read_temp_raw()
        while lines[0].strip()[-3:]!= 'YES':
        time.sleep(1)
        lines = read_temp_raw()
         equals_pos = lines[1].find('t=')
        if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        tempC = float(temp_string)/1000.0
        return tempC

def send_to_opensense(data):
    try:
          datalist = [{"feed_id" :FEED_ID1, "value" :data['C']},]
          headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
          conn = httplib.HTTPConnection("api.sen.se")
          conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
          response = conn.getresponse()
         conn.close()
    except:
        pass


while(True):
      try:
           run_number = run_number + 1
           tempC = read_temp()
           print "RasPI(2) Ambient Run:",run_number," tempC:",tempC
           data = {'C' : tempC}
          send_to_opensense(data)
          time.sleep(10)
     except:
          pass

{code mostly from whiskeytangohotel}

Making a raspberrry pi temperature sensor (step 5- Set up the DS18b20)

This is probably one of the most difficult steps in the whole process.

This adafruit guide is probably the best tutorial for setting up the sensor.
http://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/overview

The guide uses some parts that aren't necessary like the pi cobbler but life is easier if you have them.

Our ds18b20 came from amazon and had different wire colours to a normal ds18b20 sensor.
It came with red, white and a shielded wire these are:
red - VCC
white - Data
Shielded - Ground

Make sure the 3rd pin on the 5V side is used for ground, the 3.3V pin is used for power and the 4th pi on the 3.3V side is used for the data.

Making a raspberry pi temperature sensor (step 4- sen.se)

You need somewhere for the data your pi is going to collect to go. You can obviously just display it on a screen but so long as you have an internet connection it is easier to display it on the web.

Although there are lots of different places you could post your data to, sen.se is probably the best. It is specifically designed for arduino and raspberry pi users and so it's very handy. There are loads of different things you can do with displays and feeds and so you can set it up however you want.

All you have to do is go on the website and apply for an invitation the link is below:

http://open.sen.se/

Flashing lights


import wiringpi2 as wiringpi
from time import sleep
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(17, 1)
wiringpi.pinMode(27, 1)
wiringpi.pinMode(22, 1)
wiringpi.pinMode(24, 1)
wiringpi.pinMode(25, 1)
wiringpi.digitalWrite(17, 0) #yellow
wiringpi.digitalWrite(27, 0) #green
wiringpi.digitalWrite(22, 0) #bottum red
wiringpi.digitalWrite(24, 0) #mid red
wiringpi.digitalWrite(25, 0) #top red
sleep(3)
while 2 == 2:
    wiringpi.digitalWrite(22, 1)
    wiringpi.digitalWrite(24, 1)
    wiringpi.digitalWrite(25, 1)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(2)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(2)
    wiringpi.digitalWrite(22, 0)
    wiringpi.digitalWrite(24, 0)
    wiringpi.digitalWrite(25, 0)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(2)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(2)

core temp with lights and boundaries


import wiringpi2 as wiringpi
from time import sleep
import httplib
import json as simplejson
from random import randint
import time
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(17, 1)
wiringpi.pinMode(27, 1)
wiringpi.pinMode(22, 1)
wiringpi.digitalWrite(17, 0) #green
wiringpi.digitalWrite(27, 0) #yellow
wiringpi.digitalWrite(22, 0) #red

c = float(input("What is your ideal temperature?")) # 42
t = c
count = 0
reel = 4
while 2 == 2:
    sleep(10)
    t = int(open('/sys/class/thermal/thermal_zone0/temp').read())/1e3
    if (c - 1.5) <= t <= (c + 1.5): #good region
        count = 0
        wiringpi.digitalWrite(17, 1)
        wiringpi.digitalWrite(27, 0)
        wiringpi.digitalWrite(22, 0)
    elif (c - 2) < t < (c - 1.5): #a little too low
        count = count + 1
        wiringpi.digitalWrite(17, 0)
        wiringpi.digitalWrite(27, 1)
        wiringpi.digitalWrite(22, 0)
    elif (c + 2) < t < (c + 1.5): #a little too high
        count = count + 1
        wiringpi.digitalWrite(17, 0)
        wiringpi.digitalWrite(27, 1)
        wiringpi.digitalWrite(22, 0)
    elif t <= (c - 2): #dangerously low
        count = count + 3
        wiringpi.digitalWrite(17, 0)
        wiringpi.digitalWrite(27, 0)
        wiringpi.digitalWrite(22, 1)
    elif t >= (c + 2): #dangerously high
        count = count + 3
        wiringpi.digitalWrite(17, 0)
        wiringpi.digitalWrite(27, 0)
        wiringpi.digitalWrite(22, 1)
   

Pi core temperature


import httplib
import json as simplejson
from random import randint
import time

run_number = 0
tempC = 0

SENSE_API_KEY =
FEED_ID1 =

def send_to_opensense(data):
    try:
        datalist = [{"feed_id" : FEED_ID1, "value" :data['C']},]
        headers = {"sense_key": SENSE_API_KEY,"content-type":"application/json"}
        conn = httplib.HTTPConnection("api.sen.se")
        conn.request("POST","/events/",simplejson.dumps(datalist),headers)
        response = conn.getresponse()
        conn.close()
    except:
            pass

while(True):
    try:
        tempC = int(open('/sys/class/thermal/thermal_zone0/temp').read())/1e3
        run_number = run_number + 1
        print "Run:", run_number," tempC:", tempC
        data = {'C' :tempC}
        send_to_opensense(data)
        time.sleep(60)
    except:
            pass

Crazy led script


import wiringpi2 as wiringpi
from time import sleep
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(17, 1)
wiringpi.pinMode(27, 1)
wiringpi.pinMode(22, 1)
wiringpi.pinMode(24, 1)
wiringpi.pinMode(25, 1)
wiringpi.digitalWrite(17, 0) #yellow
wiringpi.digitalWrite(27, 0) #green
wiringpi.digitalWrite(22, 0) #bottum red
wiringpi.digitalWrite(24, 0) #mid red
wiringpi.digitalWrite(25, 0) #top red
sleep(3)
while 2 == 2:
    wiringpi.digitalWrite(22, 1)
    wiringpi.digitalWrite(24, 1)
    wiringpi.digitalWrite(25, 1)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.02)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.02)
    wiringpi.digitalWrite(22, 0)
    wiringpi.digitalWrite(24, 0)
    wiringpi.digitalWrite(25, 0)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.02)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.02)
    wiringpi.digitalWrite(22, 1)
    wiringpi.digitalWrite(24, 1)
    wiringpi.digitalWrite(25, 1)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.04)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.04)
    wiringpi.digitalWrite(22, 0)
    wiringpi.digitalWrite(24, 0)
    wiringpi.digitalWrite(25, 0)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.04)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.04)
    wiringpi.digitalWrite(22, 1)
    wiringpi.digitalWrite(24, 1)
    wiringpi.digitalWrite(25, 1)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.06)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.06)
    wiringpi.digitalWrite(22, 0)
    wiringpi.digitalWrite(24, 0)
    wiringpi.digitalWrite(25, 0)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.06)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.06)
    wiringpi.digitalWrite(22, 1)
    wiringpi.digitalWrite(24, 1)
    wiringpi.digitalWrite(25, 1)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.08)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.08)
    wiringpi.digitalWrite(22, 0)
    wiringpi.digitalWrite(24, 0)
    wiringpi.digitalWrite(25, 0)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.08)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.08)
    wiringpi.digitalWrite(22, 1)
    wiringpi.digitalWrite(24, 1)
    wiringpi.digitalWrite(25, 1)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.01)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.01)
    wiringpi.digitalWrite(22, 0)
    wiringpi.digitalWrite(24, 0)
    wiringpi.digitalWrite(25, 0)
    wiringpi.digitalWrite(17, 0)
    wiringpi.digitalWrite(27, 1)
    sleep(0.01)
    wiringpi.digitalWrite(27, 0)
    wiringpi.digitalWrite(17, 1)
    sleep(0.01)

actual script


import httplib #do not edit please
import json as simplejson #do not edit please
from random import randint #do not edit please
import time #do not edit please
import os #do not edit please
import glob #do not edit please
import wiringpi2 as wiringpi #do not edit please

wiringpi.wiringPiSetupGpio() #do not edit please
wiringpi.pinMode(23, 1) #red
wiringpi.pinMode(24, 1) #yellow
wiringpi.pinMode(25, 1) #green
wiringpi.digitalWrite(23, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)

os.system('modprobe w1-gpio') #do not edit please
os.system('modprobe w1-therm') #do not edit please

base_dir = '/sys/bus/w1/devices/' #do not edit please
device_folder = glob.glob(base_dir + '28*')[0] #do not edit please
device_file = device_folder + '/w1_slave' #do not edit please

run_number = 0

SENSE_API_KEY =  #do not edit please
FEED_ID1 =  #actual graph
FEED_ID2 =  #min
FEED_ID3 =  #max

def read_temp_raw(): #do not edit please
    f = open(device_file, 'r') #do not edit please
    lines = f.readlines() #do not edit please
    f.close() #do not edit please
    return lines #do not edit please

def read_temp():  #do not edit please
    lines = read_temp_raw() #do not edit please
    while lines[0].strip()[-3:]!= 'YES': #do not edit please
        time.sleep(1) #do not edit please
        lines = read_temp_raw() #do not edit please
    equals_pos = lines[1].find('t=') #do not edit please
    if equals_pos != -1: #do not edit please
        temp_string = lines[1][equals_pos+2:] #do not edit please
        tempC = float(temp_string)/1000.0 #do not edit please
        return tempC #do not edit please

def send_to_opensense(data): #do not edit please
    try:
        datalist = [{"feed_id" :FEED_ID1, "value" :data['C']},]
        headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
        conn = httplib.HTTPConnection("api.sen.se")
        conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
        response = conn.getresponse()
        conn.close()
    except:
        pass

def send_to_opensense2(data): #do not edit please
    try:
        datalist = [{"feed_id" :FEED_ID2, "value" :data['C']},]
        headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
        conn = httplib.HTTPConnection("api.sen.se")
        conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
        response = conn.getresponse()
        conn.close()
    except:
        pass

def send_to_opensense3(data): #do not edit please
     try:
        datalist = [{"feed_id" :FEED_ID3, "value" :data['C']},]
        headers = {"sense_key": SENSE_API_KEY,"content-type":"appliaction/json"}
        conn = httplib.HTTPConnection("api.sen.se")
        conn.request("POST", "/events/", simplejson.dumps(datalist),headers)
        response = conn.getresponse()
        conn.close()
     except:
        pass
 
while(True):
    try:
        run_number = run_number + 1
        tempC = read_temp()
        print "RasPI(2) Ambient Run:",run_number," tempC:",tempC
        data = {'C' : tempC}
        send_to_opensense(data)
        if 26.5 <= tempC and 29.5 >= tempC: # good range of 26.5-29.5 change for if range wants to change
            wiringpi.digitalWrite(25, 1) #do not edit please
            wiringpi.digitalWrite(24, 0) #do not edit please
            wiringpi.digitalWrite(23, 0) #do not edit please
        if 26 <= tempC and 26.5 > tempC: # okay range of 26 - 26.5 change if range wants to change
            wiringpi.digitalWrite(25, 0) #do not edit please
            wiringpi.digitalWrite(24, 1) #do not edit please
            wiringpi.digitalWrite(23, 0) #do not edit please
        if 26 > tempC: # bad range less than 26 change if range needs to change
            wiringpi.digitalWrite(25, 0) #do not edit please
            wiringpi.digitalWrite(24, 0) #do not edit please
            wiringpi.digitalWrite(23, 1) #do not edit please
            send_to_opensense2(data) #do not edit please
        if 29.5 < tempC and 30 >= tempC: # okay range of 29.5 - 30 change if range wants to change
            wiringpi.digitalWrite(25, 0) #do not edit please
            wiringpi.digitalWrite(24, 1) #do not edit please
            wiringpi.digitalWrite(23, 0) #do not edit please
        if 30 < tempC: # bad range more than 30 change if range needs to change
            wiringpi.digitalWrite(25, 0) #do not edit please
            wiringpi.digitalWrite(24, 0) #do not edit please
            wiringpi.digitalWrite(23, 1) #do not edit please
            send_to_opensense3(data) #do not edit please
        time.sleep(10) #frequency of reading in seconds, change if required
        # if ranges are changed, please make sure that ranges are continuous and do not edit the inequality signs
    except:
        pass

Making a raspberry pi temperature logger- (step 3- wiringPi)

Inevitably with your pi your going to need to use the GPIO's to control some kind of circuit.

To do this you are going to need a program called wiringPi, this lets you control the GPIO's through the LXterminal.

However, with this program you can not easily program the GPIO's through a runable script (you have to type the commands manually into the LXterminal every time you want to change a GPIO). As a result, you are probably going to want to download another program called wiringpi2-python. This lets you program the pi's GPIO's through  a python script (although for it to work you must first sudo python from the LXterminal) and hence you can write a continuous script that contains commands to turn the GPIO's on and off.

This is the link with all the instructions of how to download wiringPi
https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/


Here is a link to all the instructions necessary to install and run wiringpi2 and on this page is linked some simple instructions of how to use it. (Although you can find our code below)
http://raspi.tv/how-to-install-wiringpi2-for-python-on-the-raspberry-pi

{code}

This code makes 5 led lights (when plugged in right) flash on and off prettily. You need any 5 led's the colour doesn't matter. Use GPIO's 17, 27, 22, 24 and 25 (there are plenty of pictures on the internet to help) and make sure all led's have a resistor in series and are grounded (ground gpio is third pin on the 5V side)

import wiringpi2 as wiringpi
from time import sleep
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(17, 1)
wiringpi.pinMode(27, 1)
wiringpi.pinMode(22, 1)
wiringpi.pinMode(24, 1)
wiringpi.pinMode(25, 1)
wiringpi.digitalWrite(17, 0) #yellow
wiringpi.digitalWrite(27, 0) #green
wiringpi.digitalWrite(22, 0) #bottum red
wiringpi.digitalWrite(24, 0) #mid red
wiringpi.digitalWrite(25, 0) #top red
sleep(3)
while 2 == 2:
wiringpi.digitalWrite(22, 1)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(25, 1)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.02)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.02)
wiringpi.digitalWrite(22, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.02)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.02)
wiringpi.digitalWrite(22, 1)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(25, 1)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.04)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.04)
wiringpi.digitalWrite(22, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.04)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.04)
wiringpi.digitalWrite(22, 1)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(25, 1)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.06)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.06)
wiringpi.digitalWrite(22, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.06)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.06)
wiringpi.digitalWrite(22, 1)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(25, 1)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.08)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.08)
wiringpi.digitalWrite(22, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.08)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.08)
wiringpi.digitalWrite(22, 1)
wiringpi.digitalWrite(24, 1)
wiringpi.digitalWrite(25, 1)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.01)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.01)
wiringpi.digitalWrite(22, 0)
wiringpi.digitalWrite(24, 0)
wiringpi.digitalWrite(25, 0)
wiringpi.digitalWrite(17, 0)
wiringpi.digitalWrite(27, 1)
sleep(0.01)
wiringpi.digitalWrite(27, 0)
wiringpi.digitalWrite(17, 1)
sleep(0.01)

Making a raspberry pi data logger (step 2- updating the pi)

This step is really easy.

Open the lx terminal, type the following commands

sudo apt-get update
sudo apt-get upgrade

This will make sure your pi is running up to date. (Note these commands take some time to complete)

How to make a raspberry pi temperature logger (step 1- setup the pi)

First you need a raspberry pi, prefereably with the starter kit including a SD card with raspian preloaded. All you need to do is to plug in a mouse and keyboard to the pi, connect wi pi (we had trouble with this and you'll need a usb hub) or insert an ethanet cable (this is so much easier) connect the pi to a screen (you'll need to buy a cable for this) and then plug the pi in to the mains.

You'll be confronted with a user name and password, these are given to you, the standard one is pi and raspberry respectively. Once these are entered you must enter the command startx.

You are now on the operating system of the pi.

Pi logging straight onto the desktop