SlideShare a Scribd company logo
Using Arduino and Raspberry Pi 
for Internet of Things 
Sudar Muthu (@sudarmuthu) 
http://hardwarefun.com/ 
http://github.com/sudar
Who am I? 
 Research Engineer by profession 
 I build robots as a hobby 
 Playing with Arduino for more than 4 years 
 Blogger about Arduino at http://hardwarefun.com 
 Moderator for Arduino India forum 
http://hardwarefun.com 2
Objective 
 Introduce Arduino 
 Introduce Raspberry Pi 
 Emphasis on IoT 
 See how both can be used for IoT 
http://hardwarefun.com 3
Arduino 
http://hardwarefun.com 4
What is Arduino? 
 Visual Basic for hardware 
 Includes both Hardware and software 
http://hardwarefun.com 5 
Photo credit Arduino team
Different Arduino types 
 Arduino Uno (The one I am going to use today) 
 Arduino Mega 
 Arduino Due 
 Lillypad 
 Arduino BT 
 Arduino Ethernet 
 .. and clones 
http://hardwarefun.com 6
Getting to know the Arduino 
http://hardwarefun.com 7
Specs (Uno, Leonardo) 
Type Value 
Microcontroller ATmega328 
Operating Voltage 5v 
Digital I/O Pins 14 (of which 6 provide PWM output) 
Analog Input Pins 6 
Flash Memory 32 KB (ATmega328) of which 0.5 KB used 
by bootloader 
SRAM 2 KB (ATmega328) 
EEPROM 1 KB (ATmega328) 
Clock Speed 16 MHz 
http://hardwarefun.com 8
Identify these components in 
 Microcontroller 
 Power jacket 
 USB jacket 
 Digital pins 
 Analog pins 
 Reset button 
Arduino 
http://hardwarefun.com 9
Identify these components in 
Arduino 
 Voltage Regulator 
 Power Pins (how many are there?) 
 Ground Pins (how many are there?) 
 Vin Pin 
 Rx and Tx Pins 
 ICSP Headers 
http://hardwarefun.com 10
Identify these components in 
 Power Led 
 Rx and Tx Led’s 
 Test Led 
 Crystal 
 Anything else? 
Arduino 
http://hardwarefun.com 11
Powering up Arduino 
http://hardwarefun.com 12
Different ways to power up Arduino 
 Using USB cable 
 Using DC power jacket 
 Giving voltage directly into Vin pin 
 Giving regulated voltage directly into 5V pin 
http://hardwarefun.com 13
Setting up Arduino 
http://hardwarefun.com 14
Testing the setup with a “Hello 
World” program 
http://hardwarefun.com 15
Blinking LED 
http://hardwarefun.com 16
Making a LED blink 
 Insert a LED in pin 13 
 Open File->Examples->Basics->Blink 
 Select Tools->Boards->Arduino Uno 
 Select File->Upload (or press ctrl+u) 
 You should get the message “Done upload” 
 Your Led should blink 
 Congrats you can program Arduino now  
http://hardwarefun.com 17
People with electronics background 
Did I miss anything? 
http://hardwarefun.com 18
People with electronics background 
Did I miss anything? 
Hint: Ohm’s Law 
http://hardwarefun.com 19
Anatomy of an Arduino sketch 
http://hardwarefun.com 20
Printing values through Serial 
 Uno has one UART hardware port, using which we 
can exchange information with computer 
 Very useful for debugging 
 Works at a specified baud rate 
 Use Serial Monitor to read values 
 SoftwareSerial is also available 
http://hardwarefun.com 21
Breadboard Basics 
http://hardwarefun.com 22
How to use a breadboard 
 The first two and the last two rows are connected 
 In all the other rows, columns are connected 
 Connect the first and last row to power 
 Connect the second and second last row to ground 
http://hardwarefun.com 23
Digital Input and Output 
http://hardwarefun.com 24
Digital Input 
http://hardwarefun.com 25
Digital Output 
The LED blink that we did at “setting up Arduino” is 
Digital output 
http://hardwarefun.com 26
Analog Input 
http://hardwarefun.com 27
Reading Analog values from sensors 
 Connect the LDR on pin A0 and Gnd 
 LDR’s resistance varies based on the amount of light 
present 
 Read the current value using analogRead() 
 Print the value in Serial Monitor 
http://hardwarefun.com 28
Control an LED based on light 
void setup(){ 
pinMode(13, OUTPUT); 
} 
void loop(){ 
int val = analogRead(A0); 
if (val > 50) { 
digitalWrite(13, HIGH); 
} else { 
digitalWrite(13, LOW); 
} 
} 
http://hardwarefun.com 29
Analog Output 
http://hardwarefun.com 30
Analog Output 
 What is PWM? 
 Analog like behavior using digital output 
 Works by switching the LED on and off regularly 
 Changing the brightness of a Led 
http://hardwarefun.com 31
This is just the tip of an 
iceberg 
http://hardwarefun.com 32 
There are tons of other 
features to Arduino which I 
have not talked about
Internet of Things 
http://hardwarefun.com 33
http://hardwarefun.com 34 
"Internet of Things" by Wilgengebroed on Flickr
LoT is an overloaded term 
But I like this definition… 
“The Internet of Things is the interconnection of 
uniquely identifiable embedded computing devices 
within the existing Internet infrastructure” 
http://hardwarefun.com 35
Connecting Arduino to Internet 
 Ethernet Shield 
 WIFI Shield 
 3G Shield 
 Using another intermediate component 
http://hardwarefun.com 36
Demo of network connectivity 
using Arduino 
http://hardwarefun.com 37
Let’s take a break  
http://hardwarefun.com 38
Raspberry Pi
Credit Card Sized 
Computer 
http://hardwarefun.com 40
GPIO Pins 
http://hardwarefun.com 41 http://learn.adafruit.com/assets/3052
Setup Python 
sudo apt-get install python-dev 
sudo apt-get install python-rpi.gpio 
http://hardwarefun.com 42
Set the status of GPIO Pins 
https://github.com/sudar/r http://hardwarefun.com asp4b3erry-pi-sketches/blob/master/led-blink/led-blink.py
Set the status of GPIO Pins 
import RPi.GPIO as GPIO 
import time 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(12, GPIO.OUT) 
try: 
while True: 
GPIO.output(12, GPIO.HIGH) 
time.sleep(1) 
GPIO.output(12, GPIO.LOW) 
time.sleep(1) 
finally: 
GPIO.cleanup() 
https://github.com/sudar/raspberry-http://hardwarefun.com 44 pi-sketches/blob/master/led-blink/led-blink.py
Demo 
Let there be Light 
https://github.com/sudar/r http://hardwarefun.com 45aspberry-pi-sketches/blob/master/led-blink/led-blink.py
Changing the brightness of the LED 
import RPi.GPIO as GPIO 
import time 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(12, GPIO.OUT) 
p = GPIO.PWM(12, 50) # channel=12 frequency=50Hz 
p.start(0) 
try: 
while True: 
for dc in range(0, 101, 5): 
p.ChangeDutyCycle(dc) 
time.sleep(0.1) 
for dc in range(100, -1, -5): 
p.ChangeDutyCycle(dc) 
time.sleep(0.1) 
finally: 
p.stop() 
GPIO.cleanup() 
http://hardwarefun.com 46 
https://github.com/sudar/raspberry-pi-sketches/blob/master/led-blink/pwm.py
Demo 
Can you see the brightness changing? 
https://github.com/sudar/raspberry-http://hardwarefun.com 47 pi-sketches/blob/master/led-blink/pwm.py
Reading the status of the Pin 
import RPi.GPIO as GPIO 
import time 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 
try: 
while True: 
if GPIO.input(11): 
print "Button is on" 
else: 
print "Button is off" 
time.sleep(0.1) 
finally: 
GPIO.cleanup() 
http://hardwarefun.com 48 
https://github.com/sudar/raspberry-pi-sketches/blob/master/button-input/button-input.py
Reading the status of the Pin 
http://hardwarefun.com 49 
https://github.com/sudar/raspberry-pi-sketches/blob/master/button-input/button-input.py
Demo 
What happens when the button is pressed? 
http://hardwarefun.com 50 
https://github.com/sudar/raspberry-pi-sketches/blob/master/button-input/button-input.py
Combining Input and Output 
import RPi.GPIO as GPIO 
import time 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 
GPIO.setup(12, GPIO.OUT) 
try: 
while True: 
if GPIO.input(11): 
print "Button is on" 
GPIO.output(12, 1) 
else: 
GPIO.output(12, 0) 
time.sleep(0.1) 
finally: 
GPIO.cleanup() 
http://hardwarefun.com 51 
https://github.com/sudar/raspberry-pi-sketches/blob/master/button-and-led/button-and-led.py
Combining Input and Output 
http://hardwarefun.com 52 
https://github.com/sudar/raspberry-pi-sketches/blob/master/button-and-led/button-and-led.py
Demo 
Let’s control the LED by pressing the button 
http://hardwarefun.com 53 
https://github.com/sudar/raspberry-pi-sketches/blob/master/button-and-led/button-and-led.py
What more can be done? 
http://hardwarefun.com 54
More protocols 
 I2C 
 SPI 
 Serial 
http://hardwarefun.com 55
Interacting with webcam 
 “PyGame” provides easy interface 
 Can get fancy using “opencv” 
 Both USB and GPIO interface are supported 
http://hardwarefun.com 56
Distributed Computing 
 Each Pi can be used as cheap node 
 Form grids using a cluster of Pi’s 
 Can share CPU, memory and disk space 
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/ 
distributed-computing/ 
http://hardwarefun.com 57
Limitations 
 No built-in Analog to Digital support 
 Can’t run Inductive load (motors) 
 Is not real-time (CPU might be busy) 
 No “safe circuits” present 
 Operates at 3.3V and is not directly compatible with 
Arduino voltage 
http://hardwarefun.com 58
Arduino vs Raspberry Pi 
for IoT 
http://hardwarefun.com 59
Advantages of Raspberry Pi 
 Entire Linux software stack is available 
 It is very easy to connect to internet 
 Can be programmed using variety of programming 
languages 
http://hardwarefun.com 60
Disadvantage of Raspberry Pi 
 Accessing hardware is not real-time. If the CPU is 
busy, then interfacing with hardware can be delayed 
 No built-in Analog to Digital converter available 
 Does not have enough power to drive inductive loads 
 The hardware design is not open source. Even though 
it is not a big deal, for some people it might a deal 
breaker 
http://hardwarefun.com 61
Advantages of Arduino 
 Very easy to get started 
 Very easy to extend it and has tons of user 
contributed shields and libraries. Shields are available 
to do pretty much anything 
 Can be used to for real-time applications 
 Everything (both hardware, software and IDE) are 
open source 
 Not much programming knowledge needed to do 
basic stuff 
http://hardwarefun.com 62
Disadvantages of Arduino 
 Not very powerful when compared with Raspberry Pi 
(Micro processor vs Micro controller) 
 You need to program using either Arduino or C/C++ 
(or assembly if you really want to) 
 Connecting to internet is slightly difficult (you have 
shields and libraries, but is not straight forward), but 
not impossible. 
http://hardwarefun.com 63
In Short.. 
Feature Raspberry Pi Arduino 
Processor Speed 700 MHz 16 MHz 
Programming Language No limit Arduino, C/C++ 
Real-time Hardware No real-time In real-time 
Analog to Digital Convertor No Yes 
Hardware Design Closed source Open source 
Internet Connection Very easy Not easy, but doable 
http://hardwarefun.com 64
My Solution? 
http://hardwarefun.com 65
Use both together  
Best of both worlds 
http://hardwarefun.com 66 
http://learn.adafruit.com/assets/3199 http://learn.adafruit.com/assets/2123
Links 
 Source code - https://github.com/sudar/raspberry-pi-sketches/ 
 My blog - http://hardwarefun.com 
 Python GPIO - https://code.google.com/p/raspberry-gpio- 
python/ 
 Distributed computing using Pi - 
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorial 
s/distributed-computing/ 
http://hardwarefun.com 67
Links 
 Arduino – http://arduino.cc 
 Asimi – A simple bot using Arduino 
http://hardwarefun.com/project/asimi 
 Getting started with hardware programming 
http://hardwarefun.com/tutorials/getting-started-with-hardware- 
programming 
 Getting started with Arduino 
http://hardwarefun.com/tutorials/getting-started-with-arduino- 
and-avr 
http://hardwarefun.com 68
Questions 
Thank You 
Sudar Muthu (@sudarmuthu) 
http://hardwarefun.com/ 
https://github.com/sudar/arduino-robotics-workshop 
https://github.com/sudar/raspberry-pi-sketches 
http://hardwarefun.com 69

More Related Content

What's hot (20)

PPTX
Basics of arduino uno
Rahat Sood
 
PDF
Introduction to ESP32 Programming [Road to RIoT 2017]
Alwin Arrasyid
 
PDF
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
Edureka!
 
PPTX
Boolean+logic
Bilal Maqbool ツ
 
PPT
Microprocessor & microcontroller
Nitesh Kumar
 
PPT
digital logic design number system
Nallapati Anindra
 
PPTX
Module 1 - ARM 32 Bit Microcontroller
Amogha Bandrikalli
 
ODP
Introduction to Arduino
Richard Rixham
 
PDF
Introduction to Raspberry PI
Chandrashekar Babu
 
PDF
Code conversion using verilog code VHDL
Bharti Airtel Ltd.
 
PPT
Introduction to Arduino & Raspberry Pi
Ahmad Hafeezi
 
PPTX
Difference Between Microprocessors and Microcontrollers
elprocus
 
PPTX
Raspberry pi ppt
PavanKumar3601
 
PPTX
My arduino presentation
Sham Arsenal
 
PPTX
Presentation on Raspberry pi
OpenDev
 
PDF
Digital System Design Basics
anishgoel
 
PPTX
Introduction to Arduino
Green Moon Solutions
 
PPT
Raspberry pi
Anija Nair
 
PPTX
PPT on Bluetooth Based Wireless Sensor Networks
Siya Agarwal
 
PPTX
Timer 2 concept
v Kalairajan
 
Basics of arduino uno
Rahat Sood
 
Introduction to ESP32 Programming [Road to RIoT 2017]
Alwin Arrasyid
 
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
Edureka!
 
Boolean+logic
Bilal Maqbool ツ
 
Microprocessor & microcontroller
Nitesh Kumar
 
digital logic design number system
Nallapati Anindra
 
Module 1 - ARM 32 Bit Microcontroller
Amogha Bandrikalli
 
Introduction to Arduino
Richard Rixham
 
Introduction to Raspberry PI
Chandrashekar Babu
 
Code conversion using verilog code VHDL
Bharti Airtel Ltd.
 
Introduction to Arduino & Raspberry Pi
Ahmad Hafeezi
 
Difference Between Microprocessors and Microcontrollers
elprocus
 
Raspberry pi ppt
PavanKumar3601
 
My arduino presentation
Sham Arsenal
 
Presentation on Raspberry pi
OpenDev
 
Digital System Design Basics
anishgoel
 
Introduction to Arduino
Green Moon Solutions
 
Raspberry pi
Anija Nair
 
PPT on Bluetooth Based Wireless Sensor Networks
Siya Agarwal
 
Timer 2 concept
v Kalairajan
 

Similar to Using arduino and raspberry pi for internet of things (20)

PPTX
IoT applications With Arduino coding and real life examples
AnuragSingh841686
 
PDF
Arduino - Learning.pdf
KhalilSedki1
 
PPTX
Arduino
Jerin John
 
PPTX
Getting started with arduino workshop
Sudar Muthu
 
PPTX
Arduino Robotics workshop Day1
Sudar Muthu
 
PPTX
Getting Started with Raspberry Pi and Arduino
Chad Mairn
 
PPTX
M.Tech Internet of Things Unit - III.pptx
AvinashAvuthu2
 
PPTX
Arduino slides
sdcharle
 
PPTX
Arduino Workshop Slides
mkarlin14
 
PPT
IoT with Arduino
Arvind Singh
 
PDF
Arduino spooky projects_class1
Felipe Belarmino
 
PDF
02 Sensors and Actuators Understand .pdf
engsharaf2025
 
PDF
#startathon2.0 - Arduino
sl2square
 
PPTX
Arduino Slides With Neopixels
sdcharle
 
PDF
Arduino comic v0004
DO!MAKERS
 
PPT
13223971.ppt
SuYee13
 
PPTX
Internet of Things prescribed by University
Sanjay Kumar
 
PDF
Syed IoT - module 5
Syed Mustafa
 
PDF
Arduino, Raspberry Pi, and Making
LeMasney Consulting
 
IoT applications With Arduino coding and real life examples
AnuragSingh841686
 
Arduino - Learning.pdf
KhalilSedki1
 
Arduino
Jerin John
 
Getting started with arduino workshop
Sudar Muthu
 
Arduino Robotics workshop Day1
Sudar Muthu
 
Getting Started with Raspberry Pi and Arduino
Chad Mairn
 
M.Tech Internet of Things Unit - III.pptx
AvinashAvuthu2
 
Arduino slides
sdcharle
 
Arduino Workshop Slides
mkarlin14
 
IoT with Arduino
Arvind Singh
 
Arduino spooky projects_class1
Felipe Belarmino
 
02 Sensors and Actuators Understand .pdf
engsharaf2025
 
#startathon2.0 - Arduino
sl2square
 
Arduino Slides With Neopixels
sdcharle
 
Arduino comic v0004
DO!MAKERS
 
13223971.ppt
SuYee13
 
Internet of Things prescribed by University
Sanjay Kumar
 
Syed IoT - module 5
Syed Mustafa
 
Arduino, Raspberry Pi, and Making
LeMasney Consulting
 
Ad

More from Sudar Muthu (20)

PPTX
A quick preview of WP CLI - Chennai WordPress Meetup
Sudar Muthu
 
PDF
WordPress Developer tools
Sudar Muthu
 
PDF
WordPress Developer Tools to increase productivity
Sudar Muthu
 
PDF
Unit testing for WordPress
Sudar Muthu
 
PDF
Unit testing in php
Sudar Muthu
 
PPTX
How arduino helped me in life
Sudar Muthu
 
PPTX
Having fun with hardware
Sudar Muthu
 
PPTX
Python in raspberry pi
Sudar Muthu
 
PPTX
Hack 101 at IIT Kanpur
Sudar Muthu
 
PPTX
PureCSS open hack 2013
Sudar Muthu
 
PPTX
Pig workshop
Sudar Muthu
 
PPTX
Arduino Robotics workshop day2
Sudar Muthu
 
PPTX
Hands on Hadoop and pig
Sudar Muthu
 
PPTX
Lets make robots
Sudar Muthu
 
PPTX
Capabilities of Arduino (including Due)
Sudar Muthu
 
PPTX
Controlling robots using javascript
Sudar Muthu
 
PPTX
Picture perfect hacks with flickr API
Sudar Muthu
 
PPTX
Hacking 101
Sudar Muthu
 
PPTX
Capabilities of Arduino
Sudar Muthu
 
PPTX
Introduction to node.js GDD
Sudar Muthu
 
A quick preview of WP CLI - Chennai WordPress Meetup
Sudar Muthu
 
WordPress Developer tools
Sudar Muthu
 
WordPress Developer Tools to increase productivity
Sudar Muthu
 
Unit testing for WordPress
Sudar Muthu
 
Unit testing in php
Sudar Muthu
 
How arduino helped me in life
Sudar Muthu
 
Having fun with hardware
Sudar Muthu
 
Python in raspberry pi
Sudar Muthu
 
Hack 101 at IIT Kanpur
Sudar Muthu
 
PureCSS open hack 2013
Sudar Muthu
 
Pig workshop
Sudar Muthu
 
Arduino Robotics workshop day2
Sudar Muthu
 
Hands on Hadoop and pig
Sudar Muthu
 
Lets make robots
Sudar Muthu
 
Capabilities of Arduino (including Due)
Sudar Muthu
 
Controlling robots using javascript
Sudar Muthu
 
Picture perfect hacks with flickr API
Sudar Muthu
 
Hacking 101
Sudar Muthu
 
Capabilities of Arduino
Sudar Muthu
 
Introduction to node.js GDD
Sudar Muthu
 
Ad

Recently uploaded (20)

PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Digital Circuits, important subject in CS
contactparinay1
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 

Using arduino and raspberry pi for internet of things

  • 1. Using Arduino and Raspberry Pi for Internet of Things Sudar Muthu (@sudarmuthu) http://hardwarefun.com/ http://github.com/sudar
  • 2. Who am I?  Research Engineer by profession  I build robots as a hobby  Playing with Arduino for more than 4 years  Blogger about Arduino at http://hardwarefun.com  Moderator for Arduino India forum http://hardwarefun.com 2
  • 3. Objective  Introduce Arduino  Introduce Raspberry Pi  Emphasis on IoT  See how both can be used for IoT http://hardwarefun.com 3
  • 5. What is Arduino?  Visual Basic for hardware  Includes both Hardware and software http://hardwarefun.com 5 Photo credit Arduino team
  • 6. Different Arduino types  Arduino Uno (The one I am going to use today)  Arduino Mega  Arduino Due  Lillypad  Arduino BT  Arduino Ethernet  .. and clones http://hardwarefun.com 6
  • 7. Getting to know the Arduino http://hardwarefun.com 7
  • 8. Specs (Uno, Leonardo) Type Value Microcontroller ATmega328 Operating Voltage 5v Digital I/O Pins 14 (of which 6 provide PWM output) Analog Input Pins 6 Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) Clock Speed 16 MHz http://hardwarefun.com 8
  • 9. Identify these components in  Microcontroller  Power jacket  USB jacket  Digital pins  Analog pins  Reset button Arduino http://hardwarefun.com 9
  • 10. Identify these components in Arduino  Voltage Regulator  Power Pins (how many are there?)  Ground Pins (how many are there?)  Vin Pin  Rx and Tx Pins  ICSP Headers http://hardwarefun.com 10
  • 11. Identify these components in  Power Led  Rx and Tx Led’s  Test Led  Crystal  Anything else? Arduino http://hardwarefun.com 11
  • 12. Powering up Arduino http://hardwarefun.com 12
  • 13. Different ways to power up Arduino  Using USB cable  Using DC power jacket  Giving voltage directly into Vin pin  Giving regulated voltage directly into 5V pin http://hardwarefun.com 13
  • 14. Setting up Arduino http://hardwarefun.com 14
  • 15. Testing the setup with a “Hello World” program http://hardwarefun.com 15
  • 17. Making a LED blink  Insert a LED in pin 13  Open File->Examples->Basics->Blink  Select Tools->Boards->Arduino Uno  Select File->Upload (or press ctrl+u)  You should get the message “Done upload”  Your Led should blink  Congrats you can program Arduino now  http://hardwarefun.com 17
  • 18. People with electronics background Did I miss anything? http://hardwarefun.com 18
  • 19. People with electronics background Did I miss anything? Hint: Ohm’s Law http://hardwarefun.com 19
  • 20. Anatomy of an Arduino sketch http://hardwarefun.com 20
  • 21. Printing values through Serial  Uno has one UART hardware port, using which we can exchange information with computer  Very useful for debugging  Works at a specified baud rate  Use Serial Monitor to read values  SoftwareSerial is also available http://hardwarefun.com 21
  • 23. How to use a breadboard  The first two and the last two rows are connected  In all the other rows, columns are connected  Connect the first and last row to power  Connect the second and second last row to ground http://hardwarefun.com 23
  • 24. Digital Input and Output http://hardwarefun.com 24
  • 26. Digital Output The LED blink that we did at “setting up Arduino” is Digital output http://hardwarefun.com 26
  • 28. Reading Analog values from sensors  Connect the LDR on pin A0 and Gnd  LDR’s resistance varies based on the amount of light present  Read the current value using analogRead()  Print the value in Serial Monitor http://hardwarefun.com 28
  • 29. Control an LED based on light void setup(){ pinMode(13, OUTPUT); } void loop(){ int val = analogRead(A0); if (val > 50) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } } http://hardwarefun.com 29
  • 31. Analog Output  What is PWM?  Analog like behavior using digital output  Works by switching the LED on and off regularly  Changing the brightness of a Led http://hardwarefun.com 31
  • 32. This is just the tip of an iceberg http://hardwarefun.com 32 There are tons of other features to Arduino which I have not talked about
  • 33. Internet of Things http://hardwarefun.com 33
  • 34. http://hardwarefun.com 34 "Internet of Things" by Wilgengebroed on Flickr
  • 35. LoT is an overloaded term But I like this definition… “The Internet of Things is the interconnection of uniquely identifiable embedded computing devices within the existing Internet infrastructure” http://hardwarefun.com 35
  • 36. Connecting Arduino to Internet  Ethernet Shield  WIFI Shield  3G Shield  Using another intermediate component http://hardwarefun.com 36
  • 37. Demo of network connectivity using Arduino http://hardwarefun.com 37
  • 38. Let’s take a break  http://hardwarefun.com 38
  • 40. Credit Card Sized Computer http://hardwarefun.com 40
  • 41. GPIO Pins http://hardwarefun.com 41 http://learn.adafruit.com/assets/3052
  • 42. Setup Python sudo apt-get install python-dev sudo apt-get install python-rpi.gpio http://hardwarefun.com 42
  • 43. Set the status of GPIO Pins https://github.com/sudar/r http://hardwarefun.com asp4b3erry-pi-sketches/blob/master/led-blink/led-blink.py
  • 44. Set the status of GPIO Pins import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) try: while True: GPIO.output(12, GPIO.HIGH) time.sleep(1) GPIO.output(12, GPIO.LOW) time.sleep(1) finally: GPIO.cleanup() https://github.com/sudar/raspberry-http://hardwarefun.com 44 pi-sketches/blob/master/led-blink/led-blink.py
  • 45. Demo Let there be Light https://github.com/sudar/r http://hardwarefun.com 45aspberry-pi-sketches/blob/master/led-blink/led-blink.py
  • 46. Changing the brightness of the LED import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) p = GPIO.PWM(12, 50) # channel=12 frequency=50Hz p.start(0) try: while True: for dc in range(0, 101, 5): p.ChangeDutyCycle(dc) time.sleep(0.1) for dc in range(100, -1, -5): p.ChangeDutyCycle(dc) time.sleep(0.1) finally: p.stop() GPIO.cleanup() http://hardwarefun.com 46 https://github.com/sudar/raspberry-pi-sketches/blob/master/led-blink/pwm.py
  • 47. Demo Can you see the brightness changing? https://github.com/sudar/raspberry-http://hardwarefun.com 47 pi-sketches/blob/master/led-blink/pwm.py
  • 48. Reading the status of the Pin import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) try: while True: if GPIO.input(11): print "Button is on" else: print "Button is off" time.sleep(0.1) finally: GPIO.cleanup() http://hardwarefun.com 48 https://github.com/sudar/raspberry-pi-sketches/blob/master/button-input/button-input.py
  • 49. Reading the status of the Pin http://hardwarefun.com 49 https://github.com/sudar/raspberry-pi-sketches/blob/master/button-input/button-input.py
  • 50. Demo What happens when the button is pressed? http://hardwarefun.com 50 https://github.com/sudar/raspberry-pi-sketches/blob/master/button-input/button-input.py
  • 51. Combining Input and Output import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(12, GPIO.OUT) try: while True: if GPIO.input(11): print "Button is on" GPIO.output(12, 1) else: GPIO.output(12, 0) time.sleep(0.1) finally: GPIO.cleanup() http://hardwarefun.com 51 https://github.com/sudar/raspberry-pi-sketches/blob/master/button-and-led/button-and-led.py
  • 52. Combining Input and Output http://hardwarefun.com 52 https://github.com/sudar/raspberry-pi-sketches/blob/master/button-and-led/button-and-led.py
  • 53. Demo Let’s control the LED by pressing the button http://hardwarefun.com 53 https://github.com/sudar/raspberry-pi-sketches/blob/master/button-and-led/button-and-led.py
  • 54. What more can be done? http://hardwarefun.com 54
  • 55. More protocols  I2C  SPI  Serial http://hardwarefun.com 55
  • 56. Interacting with webcam  “PyGame” provides easy interface  Can get fancy using “opencv”  Both USB and GPIO interface are supported http://hardwarefun.com 56
  • 57. Distributed Computing  Each Pi can be used as cheap node  Form grids using a cluster of Pi’s  Can share CPU, memory and disk space http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/ distributed-computing/ http://hardwarefun.com 57
  • 58. Limitations  No built-in Analog to Digital support  Can’t run Inductive load (motors)  Is not real-time (CPU might be busy)  No “safe circuits” present  Operates at 3.3V and is not directly compatible with Arduino voltage http://hardwarefun.com 58
  • 59. Arduino vs Raspberry Pi for IoT http://hardwarefun.com 59
  • 60. Advantages of Raspberry Pi  Entire Linux software stack is available  It is very easy to connect to internet  Can be programmed using variety of programming languages http://hardwarefun.com 60
  • 61. Disadvantage of Raspberry Pi  Accessing hardware is not real-time. If the CPU is busy, then interfacing with hardware can be delayed  No built-in Analog to Digital converter available  Does not have enough power to drive inductive loads  The hardware design is not open source. Even though it is not a big deal, for some people it might a deal breaker http://hardwarefun.com 61
  • 62. Advantages of Arduino  Very easy to get started  Very easy to extend it and has tons of user contributed shields and libraries. Shields are available to do pretty much anything  Can be used to for real-time applications  Everything (both hardware, software and IDE) are open source  Not much programming knowledge needed to do basic stuff http://hardwarefun.com 62
  • 63. Disadvantages of Arduino  Not very powerful when compared with Raspberry Pi (Micro processor vs Micro controller)  You need to program using either Arduino or C/C++ (or assembly if you really want to)  Connecting to internet is slightly difficult (you have shields and libraries, but is not straight forward), but not impossible. http://hardwarefun.com 63
  • 64. In Short.. Feature Raspberry Pi Arduino Processor Speed 700 MHz 16 MHz Programming Language No limit Arduino, C/C++ Real-time Hardware No real-time In real-time Analog to Digital Convertor No Yes Hardware Design Closed source Open source Internet Connection Very easy Not easy, but doable http://hardwarefun.com 64
  • 66. Use both together  Best of both worlds http://hardwarefun.com 66 http://learn.adafruit.com/assets/3199 http://learn.adafruit.com/assets/2123
  • 67. Links  Source code - https://github.com/sudar/raspberry-pi-sketches/  My blog - http://hardwarefun.com  Python GPIO - https://code.google.com/p/raspberry-gpio- python/  Distributed computing using Pi - http://www.cl.cam.ac.uk/projects/raspberrypi/tutorial s/distributed-computing/ http://hardwarefun.com 67
  • 68. Links  Arduino – http://arduino.cc  Asimi – A simple bot using Arduino http://hardwarefun.com/project/asimi  Getting started with hardware programming http://hardwarefun.com/tutorials/getting-started-with-hardware- programming  Getting started with Arduino http://hardwarefun.com/tutorials/getting-started-with-arduino- and-avr http://hardwarefun.com 68
  • 69. Questions Thank You Sudar Muthu (@sudarmuthu) http://hardwarefun.com/ https://github.com/sudar/arduino-robotics-workshop https://github.com/sudar/raspberry-pi-sketches http://hardwarefun.com 69

Editor's Notes

  • #35: "Internet of Things" by Wilgengebroed on Flickr - Cropped and sign removed from Internet of things signed by the author.jpg. Licensed under Creative Commons Attribution 2.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Internet_of_Things.jpg#mediaviewer/File:Internet_of_Things.jpg