IoT Physical Devices & Endpoints
A Comprehensive Guide to Raspberry Pi and Other IoT Platforms
Slide 1: Introduction to IoT Physical Devices & Endpoints
What are IoT Physical Devices?
Physical computing platforms that can sense, process, and communicate
Bridge between physical world and digital systems
Enable data collection, processing, and control in IoT ecosystems
Key Characteristics:
Low power consumption
Connectivity options (WiFi, Bluetooth, Ethernet)
GPIO pins for interfacing with sensors and actuators
Programmable with various languages
Cost-effective for prototyping and deployment
Slide 2: Introduction to Raspberry Pi
What is Raspberry Pi?
Single-board computer developed by Raspberry Pi Foundation
Credit card-sized computer capable of running full Linux OS
Designed for education, prototyping, and IoT applications
Key Features:
ARM-based processor
RAM ranging from 512MB to 8GB (depending on model)
Multiple USB ports
HDMI output
Ethernet port
40-pin GPIO header
MicroSD card slot for storage
Built-in WiFi and Bluetooth (newer models)
Slide 3: About the Raspberry Pi Board
Hardware Components:
CPU: Broadcom ARM Cortex processors
GPU: VideoCore IV/VI graphics processor
Memory: LPDDR2/LPDDR4 RAM
Storage: MicroSD card (primary), USB storage support
Power: 5V micro-USB or USB-C (Pi 4)
Different Models:
Raspberry Pi Zero: Ultra-compact, minimal features
Raspberry Pi 3: Quad-core, built-in WiFi/Bluetooth
Raspberry Pi 4: Latest generation, up to 8GB RAM, dual 4K display support
Raspberry Pi Compute Module: Industrial applications
GPIO Layout:
40 pins total (26 in older models)
Digital I/O pins
Power pins (3.3V, 5V, Ground)
Specialized pins for SPI, I2C, UART
Slide 4: Linux on Raspberry Pi
Raspberry Pi OS (Formerly Raspbian):
Official operating system based on Debian Linux
Optimized for Raspberry Pi hardware
Includes development tools and educational software
Key Features:
Desktop Environment: LXDE-based GUI
Command Line Interface: Full bash shell access
Package Management: APT package manager
Programming Tools: Python, Scratch, Java, C/C++
Remote Access: SSH, VNC support
Installation Process:
1. Download Raspberry Pi Imager
2. Flash OS image to microSD card
3. Insert card and boot Raspberry Pi
4. Complete initial setup wizard
5. Enable SSH/I2C/SPI interfaces as needed
Slide 5: Raspberry Pi Interfaces - Serial Communication
UART (Universal Asynchronous Receiver-Transmitter):
Asynchronous serial communication protocol
Two-wire communication (TX, RX)
Common baud rates: 9600, 115200 bps
GPIO Pins for Serial:
Pin 8 (GPIO 14): UART TX
Pin 10 (GPIO 15): UART RX
Ground connection required
Applications:
Communication with Arduino boards
GPS module interfacing
Bluetooth module communication
Debug console access
Python Implementation:
python
import serial
ser = serial.Serial('/dev/ttyS0', 9600)
ser.write(b'Hello World')
data = ser.read(10)
Slide 6: Raspberry Pi Interfaces - SPI
SPI (Serial Peripheral Interface):
Synchronous serial communication protocol
Master-slave architecture
Four-wire communication system
SPI Signals:
SCLK: Serial Clock (Master generates)
MOSI: Master Out, Slave In (Data from master)
MISO: Master In, Slave Out (Data to master)
CS/SS: Chip Select/Slave Select
GPIO Pins for SPI:
Pin 19 (GPIO 10): MOSI
Pin 21 (GPIO 9): MISO
Pin 23 (GPIO 11): SCLK
Pin 24 (GPIO 8): CE0 (Chip Enable 0)
Applications:
ADC/DAC interfacing
SD card communication
Display modules
Sensor interfacing
Slide 7: Raspberry Pi Interfaces - I2C
I2C (Inter-Integrated Circuit):
Two-wire serial communication protocol
Multi-master, multi-slave capability
Address-based device identification
I2C Signals:
SDA: Serial Data Line (bidirectional)
SCL: Serial Clock Line
Pull-up resistors required (usually 4.7kΩ)
GPIO Pins for I2C:
Pin 3 (GPIO 2): SDA
Pin 5 (GPIO 3): SCL
3.3V and Ground connections
Applications:
Temperature sensors
Real-Time Clock modules
EEPROM interfacing
Accelerometer/Gyroscope sensors
Device Addressing:
7-bit addressing (128 possible addresses)
Common addresses: 0x48 (temperature sensor), 0x68 (RTC)
Slide 8: Programming Raspberry Pi with Python
Why Python for IoT?
Easy to learn and implement
Extensive library support
GPIO control libraries available
Cross-platform compatibility
Strong community support
Essential Libraries:
RPi.GPIO: Basic GPIO control
gpiozero: Simplified GPIO interface
pygame: Graphics and game development
picamera: Camera module control
sense-hat: Sense HAT interfacing
GPIO Programming Basics:
python
import RPi.GPIO as GPIO
import time
# Setup
GPIO.setmode(GPIO.BOARD)
GPIO.setup(18, GPIO.OUT)
# Control
GPIO.output(18, GPIO.HIGH)
time.sleep(1)
GPIO.output(18, GPIO.LOW)
# Cleanup
GPIO.cleanup()
Slide 9: Controlling LED with Raspberry Pi
Hardware Requirements:
LED (any color)
220Ω resistor (current limiting)
Breadboard and jumper wires
Raspberry Pi
Circuit Connection:
1. Connect GPIO pin to resistor
2. Connect resistor to LED anode (+)
3. Connect LED cathode (-) to Ground
4. Important: Always use current limiting resistor
Basic LED Control Code:
python
import RPi.GPIO as GPIO
import time
# Pin setup
LED_PIN = 18
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
# Blink LED
for i in range(10):
GPIO.output(LED_PIN, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
PWM LED Dimming:
python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000) # 1kHz frequency
pwm.start(0)
for duty_cycle in range(0, 101, 5):
pwm.ChangeDutyCycle(duty_cycle)
time.sleep(0.1)
Slide 10: Interfacing LED and Switch with Raspberry Pi
Hardware Setup:
LED with 220Ω resistor (output)
Push button switch (input)
10kΩ pull-up resistor for switch
Breadboard connections
Circuit Connections:
LED Circuit:
GPIO 18 → 220Ω Resistor → LED Anode
LED Cathode → Ground
Switch Circuit:
3.3V → 10kΩ Resistor → GPIO 16
GPIO 16 → Switch → Ground
Combined Control Code:
python
import RPi.GPIO as GPIO
import time
# Pin definitions
LED_PIN = 18
SWITCH_PIN = 16
# Setup
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(SWITCH_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
if GPIO.input(SWITCH_PIN) == GPIO.LOW:
GPIO.output(LED_PIN, GPIO.HIGH)
print("Switch pressed - LED ON")
else:
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(0.1)
except KeyboardInterrupt:
GPIO.cleanup()
Slide 11: Interfacing Light Sensor with Raspberry Pi
Light Dependent Resistor (LDR):
Resistance varies with light intensity
Higher light = Lower resistance
Requires ADC for Raspberry Pi (no built-in ADC)
Using MCP3008 ADC:
8-channel, 10-bit ADC
SPI interface
3.3V operation
Hardware Connections:
MCP3008 to Raspberry Pi:
VDD → 3.3V
VREF → 3.3V
AGND → Ground
DGND → Ground
CLK → GPIO 11 (SCLK)
DOUT → GPIO 9 (MISO)
DIN → GPIO 10 (MOSI)
CS → GPIO 8 (CE0)
LDR Circuit:
3.3V → LDR → ADC Channel 0
ADC Channel 0 → 10kΩ Resistor → Ground
Python Code for Light Sensing:
python
import spidev
import time
spi = spidev.SpiDev()
spi.open(0, 0) # Bus 0, Device 0
spi.max_speed_hz = 1000000
def read_adc(channel):
adc = spi.xfer2([1, (8 + channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
try:
while True:
light_level = read_adc(0)
voltage = light_level * 3.3 / 1024
print(f"Light Level: {light_level}, Voltage: {voltage:.2f}V")
time.sleep(1)
except KeyboardInterrupt:
spi.close()
Slide 12: Other IoT Devices - pcDuino
pcDuino Overview:
High-performance mini PC
Arduino-like interface with PC performance
Runs full Linux distributions
Key Features:
Processor: ARM Cortex-A8, 1GHz
RAM: 1GB DDR3
Storage: 4GB flash, microSD slot
Connectivity: WiFi, Ethernet, HDMI
GPIO: Arduino-compatible pins
Power: 5V, 2A requirement
Advantages:
Arduino IDE compatibility
Full Linux OS support
Hardware video acceleration
Multiple programming languages support
Good community documentation
Applications:
Home automation systems
Robotics projects
IoT gateways
Educational platforms
Slide 13: Other IoT Devices - BeagleBone Black
BeagleBone Black Overview:
Single-board computer by BeagleBoard.org
Focuses on connectivity and real-time performance
Open-source hardware and software
Technical Specifications:
Processor: AM335x 1GHz ARM Cortex-A8
RAM: 512MB DDR3
Storage: 4GB eMMC, microSD slot
Connectivity: Ethernet, USB host/client
GPIO: 65 digital I/O pins
Analog: 7 analog inputs
Real-time: PRU (Programmable Real-time Units)
Unique Features:
PRU Subsystem: Real-time processing capability
Cape Expansion: Hardware add-on system
Multiple OS Support: Debian, Ubuntu, Android
Cloud9 IDE: Web-based development environment
Programming Options:
Python, JavaScript (Node.js), C/C++
BoneScript library for GPIO control
Real-time applications with PRU
Slide 14: Other IoT Devices - Cubieboard
Cubieboard Overview:
ARM-based single-board computer
Designed for high-performance applications
Multiple variants available
Technical Specifications:
Processor: Allwinner A10/A20 ARM Cortex-A8/A7
RAM: 1GB DDR3
Storage: 4GB NAND flash, SATA connector
Graphics: Mali-400 GPU
Connectivity: Ethernet, WiFi (optional)
Expansion: 96 extension pins
Key Advantages:
SATA Support: Direct hard drive connection
High Performance: Dual-core options available
Android Support: Native Android compatibility
Hardware Acceleration: Video/graphics processing
Storage Options: Multiple storage interfaces
Applications:
Media centers and streaming
Network-attached storage (NAS)
Development platforms
Industrial automation
Slide 15: Comparison of IoT Platforms
Performance Comparison:
Feature Raspberry Pi 4 pcDuino BeagleBone Black Cubieboard
CPU Quad-core 1.5GHz Single-core 1GHz Single-core 1GHz Single/Dual-core
RAM Up to 8GB 1GB 512MB 1GB
GPIO 40 pins Arduino-compatible 65 pins 96 pins
Storage MicroSD Flash + SD eMMC + SD NAND + SATA
Real-time Limited No Yes (PRU) Limited
Cost $35-75 $60-80 $55 $60-90
Selection Criteria:
Raspberry Pi: Best for beginners, great community
pcDuino: Arduino compatibility needed
BeagleBone Black: Real-time applications
Cubieboard: High-performance multimedia
Slide 16: IoT Device Selection Guidelines
Factors to Consider:
Performance Requirements:
Processing power needed
Memory requirements
Real-time constraints
Graphics/multimedia needs
Connectivity Options:
WiFi/Bluetooth requirements
Ethernet connectivity
Cellular options
Protocol support (MQTT, CoAP)
Development Ecosystem:
Programming language preference
Library availability
Community support
Documentation quality
Physical Constraints:
Size limitations
Power consumption
Environmental conditions
Expansion requirements
Cost Considerations:
Initial hardware cost
Development time
Maintenance costs
Scale of deployment
Slide 17: Best Practices for IoT Development
Hardware Design:
Use appropriate current limiting resistors
Implement proper power supply decoupling
Consider EMI/EMC requirements
Plan for thermal management
Design for reliability and maintenance
Software Development:
Implement error handling and recovery
Use version control systems
Document code thoroughly
Implement security measures
Plan for over-the-air updates
Testing and Validation:
Unit testing for individual components
Integration testing for complete systems
Performance testing under load
Security vulnerability assessment
Field testing in target environment
Deployment Considerations:
Remote monitoring capabilities
Automated deployment procedures
Rollback mechanisms
Logging and diagnostics
User training and documentation
Slide 18: Future Trends in IoT Devices
Emerging Technologies:
Edge AI: Machine learning on device
5G Connectivity: Higher bandwidth, lower latency
Energy Harvesting: Self-powered devices
Quantum Sensors: Ultra-sensitive measurements
Flexible Electronics: Wearable and embedded sensors
Industry Developments:
Standardization efforts (Matter, Thread)
Enhanced security protocols
Improved power efficiency
Smaller form factors
Cost reduction through scale
Application Areas:
Smart cities and infrastructure
Industrial IoT (IIoT)
Healthcare monitoring
Agricultural automation
Environmental sensing
Slide 19: Summary and Key Takeaways
Raspberry Pi Advantages:
Excellent learning platform
Strong community support
Comprehensive GPIO capabilities
Multiple interface options (SPI, I2C, UART)
Cost-effective for prototyping
Programming Essentials:
Python provides easy GPIO control
Proper circuit design prevents damage
Interface protocols enable sensor integration
Error handling ensures robust operation
Platform Selection:
Consider specific project requirements
Evaluate performance vs. cost trade-offs
Assess development ecosystem maturity
Plan for scalability and maintenance
Success Factors:
Start with simple projects
Follow best practices
Test thoroughly
Document everything
Engage with community resources
Slide 20: References and Further Reading
Primary Reference:
Arshdeep Bahga, Vijay Madisetti - "Internet of Things: A Hands-on Approach"
Universities Press
ISBN: 0-996025510
ISBN-13: 978-0996025515
Additional Resources:
Raspberry Pi Foundation Documentation
BeagleBoard.org Community Resources
Arduino and pcDuino Forums
Linux GPIO Programming Guides
IoT Protocol Specifications
Online Communities:
Raspberry Pi Forums
Stack Overflow IoT Tags
GitHub IoT Projects
IEEE IoT Publications
Industry Whitepapers and Standards
Hands-on Learning:
Start with basic LED control
Progress to sensor integration
Experiment with different protocols
Build complete IoT systems
Participate in maker communities
This presentation provides a comprehensive overview of IoT physical devices and endpoints, with detailed
coverage of Raspberry Pi programming and interfacing, along with comparisons of other popular IoT
platforms.