Successfully reported this slideshow.
Your SlideShare is downloading. ×

Building the Internet of Things with Raspberry Pi

Loading in …3
×

Check these out next

1 of 41 Ad
1 of 41 Ad

Building the Internet of Things with Raspberry Pi

Download to read offline

With the advent of the low cost Raspberry Pi computer, anyone with a soldering iron and some basic Python skills can take everyday objects and transform them into fully networked, smart devices.

In this talk, I will show you how I hacked a Raspberry Pi into my home alarm system, turning my network of IP cameras into motion triggered sensors. I will show you how to build basic input and output circuits and introduce you to the RPi.GPIO Python module. We’ll talk about how you can build a RESTful server on your Raspberry Pi to enable remote access. And finally, more ideas for hacking everyday objects around the home!

No prior electronics knowledge required.

With the advent of the low cost Raspberry Pi computer, anyone with a soldering iron and some basic Python skills can take everyday objects and transform them into fully networked, smart devices.

In this talk, I will show you how I hacked a Raspberry Pi into my home alarm system, turning my network of IP cameras into motion triggered sensors. I will show you how to build basic input and output circuits and introduce you to the RPi.GPIO Python module. We’ll talk about how you can build a RESTful server on your Raspberry Pi to enable remote access. And finally, more ideas for hacking everyday objects around the home!

No prior electronics knowledge required.

Advertisement
Advertisement

More Related Content

Advertisement
Advertisement

Building the Internet of Things with Raspberry Pi

  1. 1. Building the Internet of Things with Raspberry Pi
  2. 2. Who am I? I am a Software Developer and Architect at Energy Partners Caution – I am not an Electronic Engineer! Building the Internet of Things with Raspberry Pi
  3. 3. Building the Internet of Things with Raspberry Pi
  4. 4. Building the Internet of Things with Raspberry Pi
  5. 5. Model A Model B Model B+ $25 $35 $35 1 USB port 2 USB ports 4 USB ports No Ethernet 10/100 Ethernet 10/100 Ethernet SD card slot SD card slot Micro SD card slot Building the Internet of Things with Raspberry Pi
  6. 6. General-purpose input/output pins (GPIO) • GPIO pins can be configured to be input or output • Input values are readable - HIGH or LOW (3v3 or 0v) • Output values are writable/readable Building the Internet of Things with Raspberry Pi
  7. 7. The Hardware Building the Internet of Things with Raspberry Pi
  8. 8. Building an Input Circuit Opto-coupler / Opto-isolator Transfers electrical signals between two isolated circuits by using light Building the Internet of Things with Raspberry Pi
  9. 9. Building an Input Circuit Resistor Implements electrical resistance Reduce current flow Building the Internet of Things with Raspberry Pi
  10. 10. Pull-up / pull-down resistors • Pull-up resistors are connected to the high voltage (3.3V) • Pull-down resistors are connected to ground • Initialize an input pin to a known state when nothing is connected to it Building the Internet of Things with Raspberry Pi Pull-up resistor
  11. 11. Building an Input Circuit - The diagram Building the Internet of Things with Raspberry Pi
  12. 12. Building an Output Circuit - The components Transistor • Used to amplify and switch electronic signals and electrical power • A voltage or current applied to one pair of the transistor's terminals changes the current through another pair of terminals. Building the Internet of Things with Raspberry Pi
  13. 13. Building an Output Circuit - The components Relay • Electrically operated switch • Many relays use an electromagnet to mechanically operate a switch • To control a circuit by a low-power signal Building the Internet of Things with Raspberry Pi
  14. 14. Building an Output Circuit Building the Internet of Things with Raspberry Pi
  15. 15. Veroboard / Stripboard Building the Internet of Things with Raspberry Pi
  16. 16. 26pin IDC ribbon cable + crimp connector Building the Internet of Things with Raspberry Pi
  17. 17. Shortcuts! Building the Internet of Things with Raspberry Pi
  18. 18. Accessories
  19. 19. The Software Building the Internet of Things with Raspberry Pi
  20. 20. Building the Internet of Things with Raspberry Pi
  21. 21. Finding your Pi's hardware revision cat /proc/cpuinfo Code(s) Model and revision 2 Model B Revision 1.0 3 Model B Revision 1.0 + ECN0001 4, 5, 6 Model B Revision 2.0 Building the Internet of Things with Raspberry Pi
  22. 22. Software considerations • The software is the easy part! • Possible to damage the Pi • Triple check your pin configuration Building the Internet of Things with Raspberry Pi
  23. 23. Introducing RPi.GPIO • Depending on your distro, probably already installed • If not, use pip: sudo pip install rpi.gpio Building the Internet of Things with Raspberry Pi
  24. 24. Basic usage #To import the RPi.GPIO module: import RPi.GPIO as GPIO #Select the pin numbering scheme: GPIO.setmode(GPIO.BOARD) # or GPIO.setmode(GPIO.BCM) Building the Internet of Things with Raspberry Pi
  25. 25. Exit Cleanly • Inputs are safer than outputs • Shorting outputs to ground can damage the PI • Any ports not reset before script exit will remain as is • Always perform cleanup before script exits Building the Internet of Things with Raspberry Pi
  26. 26. Exit Cleanly import RPi.GPIO as GPIO # the rest of your code goes here GPIO.cleanup() # remember, a program doesn't necessarily # exit at the last line! Building the Internet of Things with Raspberry Pi
  27. 27. Inputs - Setup import RPi.GPIO as GPIO #GPIO numbering GPIO.setmode(GPIO.BCM) channel = 7 GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) # or GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) Building the Internet of Things with Raspberry Pi
  28. 28. Inputs - Polling if GPIO.input(channel): print('Input was HIGH') else: print('Input was LOW') # Or, in a loop while GPIO.input(channel) == GPIO.LOW: # wait 10 ms time.sleep(0.01) Building the Internet of Things with Raspberry Pi
  29. 29. Inputs - wait_for_edge() • blocks execution until an edge is detected • GPIO.RISING, GPIO.FALLING or GPIO.BOTH GPIO.wait_for_edge(channel, GPIO.RISING) Building the Internet of Things with Raspberry Pi
  30. 30. Inputs - event_detected() • Designed to be used in a loop with other things # add rising edge detection on a channel GPIO.add_event_detect(channel, GPIO.RISING) do_something() if GPIO.event_detected(channel): print('Button pressed') Building the Internet of Things with Raspberry Pi
  31. 31. Inputs - Threaded callbacks • RPi.GPIO runs a second thread for callback functions GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback) Building the Internet of Things with Raspberry Pi
  32. 32. Outputs - Setup import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) Building the Internet of Things with Raspberry Pi
  33. 33. Outputs #Set output to HIGH GPIO.output(12, GPIO.HIGH) #Set output to LOW GPIO.output(12, GPIO.LOW) #Read the state of the output GPIO.input(12) Building the Internet of Things with Raspberry Pi
  34. 34. Example - Bell Building the Internet of Things with Raspberry Pi
  35. 35. The Raspberry Pi Alarm Building the Internet of Things with Raspberry Pi
  36. 36. On Github github.com/nbroers/hal Building the Internet of Things with Raspberry Pi
  37. 37. What’s next? Building the Internet of Things with Raspberry Pi
  38. 38. Questions? Building the Internet of Things with Raspberry Pi
  39. 39. Parts list 12V input circuit: • Optocoupler: LTV-847 - http://www.mantech.co.za/ProductInfo.aspx?Item=340M0324 • Resistor: 1K Ohm - http://www.mantech.co.za/ProductInfo.aspx?Item=64M0009 Output circuit: • Resistor: 100k ohm • Resistor: 10k ohm • Transistor (NPN Transistor): P2N2222AG - http://www.mantech.co.za/ProductInfo.aspx?Item=72M3626 • Relay: EDR101A1200Z - http://www.mantech.co.za/ProductInfo.aspx?Item=35M1045 • Diode: 1N4007: http://www.mantech.co.za/ProductInfo.aspx?Item=64M0027 Extras: • 26pin IDC ribbon cable crimp connector - http://www.mantech.co.za/ProductInfo.aspx?Item=14M8762 • Ribbon cable - http://www.mantech.co.za/ProductInfo.aspx?Item=45M0001 • Single core cable • Veroboard - http://www.mantech.co.za/ProductInfo.aspx?Item=64M0010 Building the Internet of Things with Raspberry Pi
  40. 40. References Input Circuit design: http://raspberrypihobbyist.blogspot.com/2012/09/gpio-input-circuit_19.html Output Circuit design: http://raspberrypihobbyist.blogspot.com/2012/10/revision-to-relay-circuit.html RPi.GPIO wiki http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/ Raspberry Pi Technical Info http://elinux.org/RPi_Low-level_peripherals GPIO quick reference http://raspi.tv/2014/rpi-gpio-quick-reference-updated-for-raspberry-pi-b Exit Cleanly http://raspi.tv/2013/rpi-gpio-basics-3-how-to-exit-gpio-programs-cleanly-avoid-warnings-and-protect-your-pi Building the Internet of Things with Raspberry Pi
  41. 41. Neil Broers @nbroers neil@foo.co.za github.com/nbroers Building the Internet of Things with Raspberry Pi

×