Raspberry Pi: Introduction to Raspberry Pi
1. What is Raspberry Pi?
A small, affordable, single-board computer (SBC) developed by the Raspberry Pi
Foundation (UK) in 2012.
Purpose: Promote computer science education and enable low-cost computing for
students, hobbyists, and researchers.
Despite its size, it can perform most functions of a desktop computer:
o Run operating systems (Linux, Windows IoT Core, etc.)
o Connect to the internet
o Support multimedia, programming, and electronics projects
2. Key Features
Credit-card sized board (~85mm x 56mm).
Processor: ARM-based CPU (quad-core in modern versions).
RAM: ranges from 256 MB (old models) to 8 GB (Raspberry Pi 4).
Storage: Uses microSD card as primary storage.
Connectivity:
o USB ports for keyboard/mouse.
o HDMI for display.
o Ethernet / Wi-Fi / Bluetooth (depending on model).
o GPIO (General Purpose Input/Output) pins to connect sensors and devices.
Power Supply: 5V micro-USB/USB-C adapter.
3. Models of Raspberry Pi
Raspberry Pi 1 (2012): First version, basic specs.
Raspberry Pi 2 (2015): Improved CPU, more RAM.
Raspberry Pi 3 (2016): Built-in Wi-Fi & Bluetooth.
Raspberry Pi 4 (2019): Up to 8 GB RAM, dual 4K display support, USB 3.0, faster CPU.
Raspberry Pi Zero / Zero W: Smaller, low-cost versions for IoT projects.
3.1 Raspberry Pi 1 (2012)
First version, created mainly for teaching programming in schools.
Processor: 700 MHz single-core ARM11 CPU.
RAM: 256 MB (later upgraded to 512 MB).
Connectivity: 2 USB ports, Ethernet port, HDMI, RCA video output.
Variants: Model A (lower cost, fewer ports) and Model B (more ports, Ethernet).
Limitation: Slow performance, limited multitasking.
Use case: Basic programming, GPIO experiments, simple robotics.
3.2 Raspberry Pi 2 (2015)
Major performance upgrade.
Processor: 900 MHz quad-core ARM Cortex-A7.
RAM: 1 GB.
Connectivity: 4 USB ports, HDMI, Ethernet.
Advantage: Much faster than Pi 1, could run a desktop-like environment.
Use case: Educational tools, small web servers, IoT gateways.
3.3 Raspberry Pi 3 (2016)
First Pi to have built-in wireless features.
Processor: 1.2 GHz quad-core ARM Cortex-A53 (64-bit).
RAM: 1 GB.
Connectivity: Wi-Fi 802.11n, Bluetooth 4.1, HDMI, USB, Ethernet.
Variants: Pi 3B and Pi 3B+.
Advantage: Easier for IoT projects due to built-in Wi-Fi/Bluetooth.
Use case: Home automation, lightweight servers, media center.
3.4 Raspberry Pi 4 (2019)
Biggest leap in capability.
Processor: 1.5 GHz quad-core ARM Cortex-A72.
RAM Options: 2 GB, 4 GB, 8 GB (DDR4).
Connectivity:
o 2 × Micro-HDMI ports (dual 4K display).
o USB 3.0 ports (faster data transfer).
o Gigabit Ethernet, Wi-Fi 802.11ac, Bluetooth 5.0.
Advantage: Functions almost like a desktop PC.
Use case: Advanced IoT, AI/ML experiments, robotics, coding labs, desktop computing.
3.5 Raspberry Pi Zero (2015) & Zero W
Low-cost ($5–$10), ultra-small model for minimal hardware projects.
Processor: 1 GHz single-core ARM11.
RAM: 512 MB.
Zero W: Adds Wi-Fi and Bluetooth.
Advantage: Very cheap, extremely small, low power consumption.
Use case: Embedded systems, portable IoT sensors, DIY gadgets.
3.6 Raspberry Pi 400 (2020)
A Raspberry Pi 4 integrated into a keyboard.
Processor: 1.8 GHz quad-core ARM Cortex-A72.
RAM: 4 GB.
Connectivity: USB, microSD, Wi-Fi, HDMI.
Advantage: Designed for students; plug into a monitor and start coding.
Use case: Education, digital literacy, home PC for beginners.
4. Operating Systems
Raspberry Pi OS (Raspbian): Official Linux-based OS.
Other supported OS: Ubuntu, Windows IoT Core, LibreELEC (media), Kali Linux
(security).
Can also run lightweight servers (Apache, MySQL, etc.).
5. Applications
1. Education: Learning programming (Python, C, Java).
2. IoT Projects: Home automation, smart sensors.
3. Robotics: Motor control, sensor integration.
4. Media Center: Using Kodi/LibreELEC to stream videos.
5. Networking: Pi-hole (ad-blocking DNS), personal VPN, small web servers.
6. AI/ML Experiments: Edge computing for small models.
6. Advantages
Low cost – affordable for students.
Portable – small and lightweight.
Versatile – wide range of projects (IoT, robotics, AI).
Community Support – large online community with tutorials.
7. Limitations
Not as powerful as a full PC (limited CPU/GPU).
Relies on microSD storage (slower, limited lifespan).
Requires external components (monitor, keyboard, sensors).
8. Raspberry Pi vs. Arduino
Raspberry Pi (SBC) Arduino (Microcontroller)
Runs an OS (Linux, etc.) No OS, runs firmware only
Suitable for complex applications (networking, Suitable for simple hardware control (LEDs,
multimedia, AI) motors, sensors)
Raspberry Pi (SBC) Arduino (Microcontroller)
Has CPU, RAM, HDMI, USB, Wi-Fi Simple board, only microcontroller + I/O pins
Programming in Python, Java, C, etc. Programming mainly in C/C++
ABOUT THE RASPBERRY PI BOARD: HARDWARE LAYOUT AND PINOUTS
The Raspberry Pi is a single-board computer (SBC).
Although there are different models, the layout is mostly similar (especially Pi 3 and Pi 4).
Main Components on the Board:
1. CPU + RAM
o ARM-based System-on-Chip (SoC).
o RAM is stacked on top of the CPU in most models.
2. USB Ports
o Used for keyboard, mouse, storage devices, and other peripherals.
o Pi 4 has USB 2.0 and USB 3.0 ports.
3. HDMI / Micro-HDMI Ports
o Connect to monitor or TV (supports audio & video).
o Pi 4 supports dual monitors (2 × micro-HDMI).
4. Ethernet Port
o Wired internet connection.
o Gigabit Ethernet in Pi 4.
5. Wi-Fi and Bluetooth Chipset
o Built-in in Pi 3 and newer models.
6. Audio Jack
o 3.5 mm audio output (also supports composite video).
7. MicroSD Card Slot
o Primary storage device, holds operating system & files.
8. Power Connector
o Micro-USB (older) or USB-C (Pi 4).
o Supplies 5V power, typically 2.5A–3A.
9. Camera Serial Interface (CSI)
o Connects Pi Camera module.
10. Display Serial Interface (DSI)
o Connects official Raspberry Pi touchscreen.
11. GPIO Header (40 pins)
o The most important part for hardware projects.
o Allows connection with sensors, LEDs, motors, IoT devices.
Raspberry Pi has evolved into different series (families) over the years, each aimed at slightly
different use-cases. The Raspberry Pi Foundation produces computers in several series, designed
for education, prototyping, IoT, and even desktop use.
Series Example Models Key Feature Main Use Case
Main Pi Pi 3, Pi 4, Pi 5 Full SBC with GPIO General-purpose computing
Zero Zero, Zero 2 W Very small, ultra-low-cost IoT & portable projects
Pico Pico, Pico W RP2040 microcontroller Embedded systems, robotics
Compute CM3, CM4 Slim modules, no ports Industrial/Commercial
Pi 400 Raspberry Pi 400 Built into keyboard Education & desktop use
1. Raspberry Pi (Main Series)
Models: Pi 1, Pi 2, Pi 3, Pi 4, Pi 5.
Form Factor: Standard board with 40-pin GPIO header.
Use Cases: General-purpose computing, robotics, AI projects, DIY electronics.
Highlights:
o Pi 4 introduced USB 3.0, dual HDMI, Gigabit Ethernet, up to 8GB RAM.
o Pi 5 (2023) is much faster, with 2.4 GHz quad-core, PCIe support, dual 4K
display output.
2. Raspberry Pi Zero Series
Models: Zero, Zero W (Wi-Fi), Zero 2 W.
Form Factor: Very small, credit-card slice size.
Use Cases: IoT, wearables, embedded devices, low-power projects.
Highlights:
o Very cheap (starting at $5).
o Low power consumption.
o Zero 2 W has a quad-core CPU, making it much faster than the original Zero.
3. Raspberry Pi Pico (Microcontroller Series)
Based on: RP2040 microcontroller (designed by Raspberry Pi Foundation).
Form Factor: Small board with pins for breadboard use.
Use Cases: Real-time control, robotics, sensor interfacing, embedded systems.
Highlights:
o Not a full Linux computer — runs bare-metal code or MicroPython.
o Ultra low power, very cheap (~$4).
o Competes with Arduino boards.
4. Raspberry Pi Compute Module (CM) Series
Models: CM1, CM3, CM3+, CM4.
Form Factor: Small module without ports — designed to be embedded into custom
boards.
Use Cases: Industrial IoT, commercial products, automation.
Highlights:
o Same SoC as standard Pi but in a slim module form.
o CM4 allows more memory and wireless options.
o Requires a carrier board for USB, HDMI, and GPIO access.
5. Raspberry Pi 400 (Keyboard Computer)
Form Factor: Computer built into a keyboard.
Use Cases: Education, coding classes, home PC replacement.
Highlights:
o Powered by a Pi 4 board inside.
o Just connect to a monitor, mouse, and power → ready to use.
o Popular in classrooms.
OPERATING SYSTEMS ON RASPBERRY PI
Raspberry Pi supports a wide variety of operating systems, from Linux-based general-purpose
OS (Raspberry Pi OS, Ubuntu) to specialized distros (RetroPie, Kali) and IoT systems (Windows
IoT Core, MicroPython), making it flexible for education, entertainment, research, and industry
applications.
Use Case Recommended OS
General learning, coding Raspberry Pi OS
Server, cloud, robotics Ubuntu Server / DietPi
Cybersecurity training Kali Linux
Gaming / Emulation RetroPie
Media center LibreELEC / OSMC
Use Case Recommended OS
Industrial IoT Windows IoT Core
Embedded (Pico board) MicroPython / C++
1. Raspberry Pi OS (formerly Raspbian)
Official OS from the Raspberry Pi Foundation.
Based on Debian Linux.
Versions: Full (with desktop & tools), Lite (command line only), and with recommended
software.
Features:
o Optimized for Pi hardware.
o Includes Python, Scratch, LibreOffice, and GPIO libraries.
o Best for education, coding, and general use.
2. Ubuntu
Popular Linux distribution also available for Pi.
Versions: Ubuntu Server (headless) and Ubuntu Desktop.
Features:
o Rich software ecosystem.
o Good for development, cloud/edge computing, and IoT servers.
o Heavier than Raspberry Pi OS → requires Pi 3 or above.
3. Windows IoT Core
Microsoft’s OS for IoT projects.
Runs on Raspberry Pi 2, 3.
Features:
o Not a full Windows desktop → more like a platform for UWP apps.
o Useful in industrial and IoT device development.
o Limited support compared to Linux options.
4. Specialized Linux Distros
Designed for specific tasks:
Kali Linux – Cybersecurity & penetration testing.
RetroPie – Gaming and retro emulation.
LibreELEC / OSMC – Media center OS (turn Pi into a smart TV box).
DietPi – Very lightweight, optimized for low resources.
Arch Linux ARM – For advanced users who want customization.
Distro Purpose Key Features Student Relevance
600+ tools, forensics, Great for ethical hacking labs &
Kali Linux Cybersecurity
pentesting cybersecurity jobs
Learn OS-hardware interaction,
RetroPie Gaming Emulates retro consoles
graphics, emulation
LibreELEC / Kodi-based, smart TV Multimedia OS, streaming projects,
Media Center
OSMC features IoT integration
Tiny size, optimized for Ideal for IoT, embedded systems,
DietPi Lightweight
IoT low-power devices
Arch Linux Rolling release, Deep OS learning, ARM devices,
Advanced OS
ARM customizable research projects
5. Raspberry Pi Pico Exception
⚡ Note: Raspberry Pi Pico (microcontroller) does not run these OSes.
Instead, it runs:
o Bare-metal code (C/C++)
o MicroPython / CircuitPython
Why Pico can’t run Linux
MCU vs MPU: RP2040 is a dual-core ARM Cortex-M0+ (up to 133 MHz)
microcontroller. It has on-chip SRAM (264 KB) and uses external QSPI flash (typically
2–16 MB).
No MMU / no external DRAM: Linux expects an MMU and much more RAM (tens to
hundreds of MB).
So you run firmware, not a full OS.
What the Pico runs instead
A) Bare-metal (C/C++)
You write firmware that owns the whole chip—no OS scheduler, no processes.
Key concepts
Boot & Flashing: Hold BOOTSEL → board appears as a USB drive → drop a .uf2
binary.
SDK: Raspberry Pi Pico C/C++ SDK gives HAL drivers (GPIO, I²C, SPI, UART, PWM,
ADC, DMA, timers, multicore) and PIO helpers.
Concurrency:
o Use interrupts, hardware timers, DMA, or the second core (core1) for parallel
tasks.
o Cooperative “superloop” is common; RTOS (e.g., FreeRTOS, Zephyr) is optional
if you want threads.
PIO (Programmable I/O): Tiny state machines for precise, cycle-accurate protocols (bit-
banging, custom serial, NeoPixel, DVI hacks).
Debugging: SWD/JTAG via Picoprobe, OpenOCD, GDB.
B) MicroPython
A lean Python 3 implementation that runs on the MCU (no OS). You flash a MicroPython UF2,
then interact with a REPL over USB serial.
Key concepts
Runtime: Python bytecode interpreter, garbage-collected heap (fits in available SRAM).
Modules: machine (GPIO/PWM/ADC/I2C/SPI/UART), utime, rp2 (PIO), uasyncio for
cooperative “async” tasks.
Workflow: Open serial REPL, edit [Link]/[Link], or use Thonny/Mu.
Performance: Slower than C, but fast enough for many control/IoT tasks; critical paths
can be moved to PIO or C via native modules.
Pico W: Built-in 2.4 GHz Wi-Fi exposed via network module (HTTP/MQTT projects,
simple web servers).
C) CircuitPython
Adafruit’s beginner-friendly fork of MicroPython with a focus on consistency and ease-of-use.
What’s different
USB Mass Storage workflow: board mounts as a drive; edit [Link] → auto-reload.
Standardized high-level APIs via adafruit_* libraries (sensors, displays, drivers).
Strong docs, examples, and classroom ergonomics.
Slightly more overhead than MicroPython; fewer very-low-level hooks (varies by port).
Pico development patterns
Scheduling without an OS
o Use timer interrupts for periodic tasks; avoid long blocking sleeps in the main
loop.
o For I/O streams (UART/SPI/I²C), use DMA + ring buffers to cut CPU load.
Multicore on RP2040
o Offload a time-critical loop to core1 while core0 handles application
logic/communications.
Precise I/O
o Put signal generation/decoding into PIO; move bytes via FIFO + DMA for
deterministic timing.
Power
o Use sleeps and clock gating; avoid busy-waits; prefer interrupts.
Networking (Pico W)
oMicroPython: start a Wi-Fi AP or STA, run an HTTP server, push data to
cloud/MQTT.
Debugging
o Start with printf/REPL; graduate to SWD with GDB for hard faults, watchpoints,
and timing.
6. NOOBS & Raspberry Pi Imager
NOOBS (New Out Of Box Software): An installer that helps beginners select and install
OS.
Raspberry Pi Imager: Official tool to write OS images onto an SD card.
1. NOOBS (New Out Of Box Software)
Definition
NOOBS is an OS installer for Raspberry Pi. It was created to help beginners install a Raspberry
Pi operating system without needing to understand image flashing tools.
⚡ Key Features
Multi-OS selection menu on boot.
Allows installing:
o Raspberry Pi OS (default & recommended).
o Other OSes (LibreELEC, OSMC, RISC OS, etc.).
Can install OS offline (from SD card) or online (downloads via Wi-Fi/Ethernet).
Provides a simple recovery mode:
o If OS fails, reboot and re-install from NOOBS.
Supports dual-boot / multi-boot setup.
How It Works
1. Download NOOBS package from Raspberry Pi website.
2. Extract to a formatted SD card (FAT32).
3. Insert into Raspberry Pi → boot.
4. Graphical menu lets you choose an OS to install.
5. OS gets extracted and written to the SD card.
Advantages
Beginner-friendly: no need for imaging tools.
Multi-boot support.
Built-in OS recovery.
Limitations
Larger download size than a single OS image.
Slower installation (extracting archives instead of direct flashing).
Less used now, because Raspberry Pi Imager is more efficient.
2. Raspberry Pi Imager
Definition
Raspberry Pi Imager is the official imaging tool provided by Raspberry Pi Foundation. It writes
OS images directly onto SD cards or USB drives.
⚡ Key Features
Available for Windows, macOS, Linux.
Provides a list of supported OSes within the tool:
o Raspberry Pi OS (32-bit, 64-bit, Lite).
o Ubuntu, LibreELEC, RetroPie, and others.
Supports custom image flashing (download .img or .zip manually).
Built-in SD card formatting.
Advanced options (hidden menu):
o Set Wi-Fi credentials.
o Enable SSH for remote access.
o Set hostname & user credentials.
o Configure regional settings (locale, keyboard).
How It Works
1. Install Raspberry Pi Imager on PC/laptop.
2. Insert SD card.
3. Open Imager → choose:
o OS (from menu or custom image).
o Storage device (SD/USB).
4. Write image → eject SD card.
5. Insert card into Raspberry Pi and boot.
Advantages
Smaller downloads (direct OS images).
Fast flashing compared to NOOBS.
Official, regularly updated.
Advanced pre-configuration → no need for monitor/keyboard (headless setup).
Better suited for modern Raspberry Pi boards (Pi 4, Pi 5, Pi Zero 2, Pi 400).
Limitations
Single-boot per SD card (no multi-boot menu like NOOBS).
Requires PC/laptop to run Imager.
3. Comparison: NOOBS vs Raspberry Pi Imager
Feature NOOBS Raspberry Pi Imager
Official PC tool for flashing OS
Purpose Beginner-friendly OS installer on Pi
images
Ease of Use Very simple (choose OS on Pi boot) Simple, but requires external PC
Large (NOOBS package includes multiple Small (downloads only selected
Download Size
OSes) OS)
Installation
Slower (extracts archives) Faster (direct write of .img)
Speed
Recovery Mode Yes – can re-install OS easily No built-in recovery
Multi-boot Supported Not supported
Advanced SSH, Wi-Fi, hostname, locale
None
Options setup
Current Status Older, less used Recommended official tool
CONFIGURING RASPBERRY PI
Configuring Raspberry Pi involves system setup (OS, users, networking, security) and hardware
setup (GPIO, camera, interfaces). A well-configured Raspberry Pi ensures smooth project
deployment, whether in education, IoT, robotics, or media applications.
The Raspberry Pi is a small, affordable, single-board computer (SBC). To use it effectively, it
must be configured properly after installation. Configuration includes hardware setup, operating
system setup, system preferences, networking, and peripheral connections.
1. Hardware Setup
Before configuring software, assemble the essential hardware:
Raspberry Pi board (e.g., Pi 4, Pi 3, Pi Zero, Pi 400).
MicroSD card (≥16 GB, Class 10 recommended) with Raspberry Pi OS.
Power supply (official USB-C for Pi 4, 5V/3A).
Display & Input:
o HDMI cable + monitor.
o USB keyboard and mouse.
Networking:
o Ethernet cable (wired) or built-in Wi-Fi (Pi 3 onwards).
Optional: USB storage, camera module, HATs (add-on boards).
2. Installing the Operating System (OS)
Raspberry Pi Imager (preferred)
1. Download and install Raspberry Pi Imager on a PC.
2. Choose OS → Raspberry Pi OS (32-bit/64-bit, Lite, or Desktop).
3. Select SD card → Write → Insert into Pi.
4. Boot Pi → OS loads.
Alternative: NOOBS
1. Copy NOOBS to SD card.
2. Insert and boot Pi.
3. Select and install desired OS.
3. First Boot Configuration
When Raspberry Pi boots for the first time:
Welcome Wizard (Raspberry Pi OS Desktop)
o Set language, time zone, keyboard layout.
o Create a user account (username, password).
o Configure Wi-Fi.
o Update system packages.
Command-line configuration (Raspberry Pi OS Lite)
o Use sudo raspi-config.
4. Using raspi-config
The raspi-config tool (text-based menu) is the core for system setup. Run:
sudo raspi-config
Important options:
1. System Options
o Change hostname.
o Enable auto-login (desktop or console).
o Configure password for default user.
2. Display Options
o Resolution.
o Overscan on/off (fixes black borders on monitors).
3. Interface Options (enable/disable hardware interfaces):
o SSH – remote terminal access.
o VNC – remote desktop.
o SPI, I2C, Serial (UART), 1-Wire – sensor/IoT interfaces.
o Camera – enable Pi Camera Module.
4. Performance Options
o Overclocking (cautious use).
o GPU memory split (e.g., allocate more VRAM for graphics).
5. Localization Options
o Keyboard layout.
o Time zone.
o Locale (language).
o Wi-Fi country (important for enabling correct frequencies).
6. Advanced Options
o Expand filesystem (use full SD card space).
o Network config.
5. Networking Configuration
Wired Ethernet: Usually plug-and-play (DHCP).
Wi-Fi:
o GUI method → Click Wi-Fi icon, enter SSID & password.
o CLI method (Lite OS):
o sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Add:
network={
ssid="YourWiFiName"
psk="YourWiFiPassword"
}
Save & reboot.
Static IP setup:
Edit [Link] file.
6. Remote Access Configuration
1. SSH (Secure Shell)
o Enable via raspi-config.
o Connect from another computer:
o ssh pi@<raspberry_pi_ip>
2. VNC (Virtual Network Computing)
o Enable via raspi-config.
o Access Pi’s desktop remotely with RealVNC Viewer.
3. Headless Setup
o Prepare SD card with Wi-Fi & SSH enabled (via Raspberry Pi Imager advanced
options).
o Boot Pi without monitor/keyboard.
7. Package Management & Updates
Update OS:
sudo apt update && sudo apt upgrade -y
Install new software:
sudo apt install <package-name>
Common software: Python libraries, [Link], Apache/Nginx, MySQL/MariaDB, Docker,
etc.
8. Peripheral Configuration
GPIO (General Purpose Input/Output)
o Use [Link] or gpiozero Python libraries.
o Example: LED blinking.
Camera Module
o Enable in raspi-config.
o Test:
o raspistill -o [Link]
HATs & Sensors
o Enable I2C/SPI in raspi-config.
o Use appropriate drivers/libraries.
9. Performance & Security Configuration
Performance
o Overclock cautiously via raspi-config.
o Use heatsinks or fans if running heavy loads.
Security
o Change default password immediately.
o Disable unused interfaces (e.g., SSH if not required).
o Keep system updated.
10. Configuration Example Workflow
1. Flash Raspberry Pi OS using Raspberry Pi Imager.
2. Insert SD → boot → run setup wizard.
3. Run sudo raspi-config to:
o Enable SSH, I2C, Camera.
o Expand filesystem.
o Set hostname.
4. Configure Wi-Fi or Ethernet.
5. Update software with apt.
6. Install project-specific tools (Python libraries, web servers, etc.).
3.4 PROGRAMMING RASPBERRY PI
Raspberry Pi supports multi-language programming → Python (primary), C/C++, Java,
Scratch, [Link].
Python is most widely used due to ease and strong community libraries.
Programming is focused on GPIO control, sensors, networking, camera, and IoT projects.
Examples: LED blink, button press detection, web servers, camera capture, sensor data
logging, MQTT IoT communication.
C/C++ used for performance, Java for networking, [Link] for web-based IoT, Scratch for
beginners.
1. Programming Environment on Raspberry Pi
a) Operating System
Most common: Raspberry Pi OS (Debian-based).
Others: Ubuntu, Kali Linux, DietPi, RetroPie.
b) Development Tools
IDEs: Thonny (Python), Geany, Visual Studio Code.
Command-line tools: GCC (C/C++), Python interpreter, Git.
Libraries: GPIO handling ([Link], gpiozero), Networking (socket, paho-mqtt),
Camera (picamera).
c) Programming Languages Supported
Python (default & recommended)
C / C++
Java
[Link] (JavaScript)
Scratch (block programming, beginner-friendly)
Python is the default language for Raspberry Pi because of its simplicity and rich libraries for
hardware control.
Example 1: LED Blink (GPIO Control)
import [Link] as GPIO
import time
LED = 17 # GPIO pin number
[Link]([Link])
[Link](LED, [Link])
try:
while True:
[Link](LED, True) # Turn ON
[Link](1)
[Link](LED, False) # Turn OFF
[Link](1)
except KeyboardInterrupt:
[Link]()
Example 2: Reading Button Input
import [Link] as GPIO
import time
BUTTON = 18
[Link]([Link])
[Link](BUTTON, [Link], pull_up_down=GPIO.PUD_UP)
while True:
if [Link](BUTTON) == [Link]:
print("Button Pressed!")
[Link](0.3)
Example 3: IoT Project – Send Data to MQTT Broker
import [Link] as mqtt
import time
client = [Link]("raspberrypi")
[Link]("[Link]", 1883, 60)
while True:
[Link]("iot/classroom/temp", "25.5")
print("Data sent...")
[Link](2)
3.5 CONNECTING TO YOUR RASPBERRY PI VIA SSH
1. What is SSH?
SSH (Secure Shell) is a network protocol that provides a secure way to access a
Raspberry Pi’s terminal remotely.
It encrypts all communication between client (your PC/laptop) and Raspberry Pi.
Commonly used for:
o Running commands remotely.
o Transferring files (via SCP or SFTP).
o Configuring Raspberry Pi headlessly (without monitor/keyboard).
2. Requirements
1. Raspberry Pi setup with OS installed (usually Raspberry Pi OS).
2. Network connection:
o Wired Ethernet, or
o Wi-Fi (Pi must be on the same LAN as the client PC).
3. Client system:
o Linux/Mac → built-in SSH client.
o Windows → use PowerShell/Command Prompt or tools like PuTTY.
3. Enabling SSH on Raspberry Pi
Method 1: Using raspi-config (on Pi with monitor)
1. Open terminal on Raspberry Pi.
2. Run:
3. sudo raspi-config
4. Navigate to:
o Interfacing Options → SSH → Enable.
5. Save and exit.
Method 2: Headless Setup (no monitor)
1. Insert SD card into PC.
2. Open boot partition of SD card.
3. Create an empty file named ssh (no extension).
4. (Optional) Add wpa_supplicant.conf for Wi-Fi credentials.
5. Boot Pi → SSH enabled automatically.
4. Finding Raspberry Pi’s IP Address
On Pi:
hostname -I
From router’s admin panel → check connected devices.
Use network scanning tool (e.g., nmap).
5. Connecting via SSH
Linux / macOS Client
ssh pi@<IP_ADDRESS>
Example:
ssh pi@[Link]
Default user: pi, Default password: raspberry (change immediately after login).
Windows Client
PowerShell / CMD:
ssh pi@[Link]
Using PuTTY:
o Enter IP in “Host Name”.
o Port = 22.
o Username: pi.
6. File Transfer via SSH
Using scp (Secure Copy)
Upload file to Pi:
scp [Link] pi@[Link]:/home/pi/
Download file from Pi:
scp pi@[Link]:/home/pi/[Link] .
Using sftp (Secure File Transfer Protocol)
sftp pi@[Link]
Then use commands like put [Link], get [Link].
7. Securing SSH Connection
1. Change default password:
2. passwd
3. Use SSH Key Authentication (instead of password):
o Generate key on client:
o ssh-keygen
o Copy key to Pi:
o ssh-copy-id pi@[Link]
4. Disable password authentication (optional for security):
o Edit /etc/ssh/sshd_config → set:
o PasswordAuthentication no
o Restart SSH service:
o sudo systemctl restart ssh
8. Advantages of Using SSH
Headless operation (no need for monitor/keyboard).
Secure remote access from anywhere on LAN or via internet (with port forwarding or
VPN).
Enables automation & scripting for IoT and cloud-based projects.
Easier file management (using SCP/SFTP).
9. Common Issues & Fixes
Connection refused → SSH not enabled.
Permission denied → wrong username/password.
Timeout → Pi not on same network.
Host key mismatch → remove old entry:
ssh-keygen -R <IP_ADDRESS>
3.6 REMOTE ACCESS TOOLS
1. Introduction
Remote access tools allow users to control, monitor, and configure a Raspberry Pi from another
computer or mobile device without needing a direct monitor, keyboard, or mouse.
They are essential for:
Headless operation (no display connected to Pi).
Remote IoT & robotics projects.
File transfer, coding, debugging, and system administration.
2. Types of Remote Access on Raspberry Pi
A. Command-Line Remote Access
SSH (Secure Shell)
o Provides terminal access over a secure, encrypted connection.
o Example:
o ssh pi@[Link]
o Lightweight and efficient.
o Best for coding, updates, package installations, and automation.
B. Graphical Remote Access
1. VNC (Virtual Network Computing)
o Allows remote desktop access to Raspberry Pi’s GUI.
o Tool: RealVNC Server (pre-installed on Raspberry Pi OS).
o Access from PC or mobile via VNC Viewer.
o Example: Open Raspberry Pi desktop on Windows laptop.
o Pros: Full GUI experience.
o Cons: Needs more bandwidth than SSH.
2. RDP (Remote Desktop Protocol)
o Microsoft’s protocol for remote desktop.
o Pi can act as RDP server using xrdp package.
o Example: Connect from Windows Remote Desktop app.
o Pros: Easy integration with Windows systems.
o Cons: Slightly heavier than VNC.
C. Web-Based Remote Access
1. Apache / Nginx Web Servers
o Host websites or dashboards on Pi.
o Access remotely through browser (e.g., IoT dashboards).
2. [Link] / Dataplicity / PiTunnel
o Cloud-based remote access tools.
o Allow secure access to Raspberry Pi over the internet.
o Example: Manage a Pi-powered weather station from another city.
D. File Transfer Tools
1. SCP (Secure Copy Protocol)
o Command-line tool to copy files securely over SSH.
o Example:
o scp [Link] pi@[Link]:/home/pi/
2. SFTP (Secure File Transfer Protocol)
o Interactive file transfer session via SSH.
o Can use GUI apps like FileZilla or command line.
E. Mobile Remote Access
JuiceSSH (Android) / Shelly (iOS) → SSH from mobile.
VNC Viewer app → Remote desktop on smartphone.
3. Steps to Enable Remote Access
1. Enable SSH / VNC on Raspberry Pi
o Using raspi-config → Interfacing Options.
o Or create ssh file in SD card boot partition.
2. Install required tools
o SSH: Pre-installed.
o VNC: Enabled in Pi OS.
o RDP:
o sudo apt install xrdp
3. Find IP Address of Raspberry Pi
4. hostname -I
5. Connect from Client Device
o SSH → Terminal (Linux/Mac/Windows PowerShell).
o VNC Viewer → GUI access.
o RDP → Windows Remote Desktop app.
4. Security Considerations
Always change default password (pi/raspberry).
Use SSH keys for authentication instead of passwords.
Keep system updated (sudo apt update && sudo apt upgrade).
For internet access: use VPN or cloud IoT tunnels (Dataplicity, [Link]).
5. Advantages of Remote Access Tools
Work with Raspberry Pi headlessly.
Remote management of IoT/AI projects.
File sharing and software deployment made easy.
Enables collaboration (multiple users can access Pi remotely).
Useful in industrial and research environments.
3.7PI AS WEBSERVER
1. Introduction
A web server is software + hardware that delivers web pages, applications, and services
to users via the internet or a local network.
A Raspberry Pi (low-cost SBC – Single Board Computer) can act as a fully functional
web server, suitable for:
o Hosting websites.
o IoT dashboards.
o APIs and web applications.
o Learning cloud & DevOps concepts.
2. Why Raspberry Pi as a Web Server?
Low-cost and energy efficient.
Always-on capability.
Supports Linux-based web server stacks.
Good for learning networking, databases, backend, and frontend integration.
Used in real-world mini-projects & prototypes.
3. Types of Web Servers on Raspberry Pi
A. Apache HTTP Server
Oldest and most widely used web server.
Easy to set up and stable.
Supports PHP integration.
Example:
sudo apt update
sudo apt install apache2 -y
o Access via browser: [Link]
Features:
Full HTTP/HTTPS support.
Works with PHP, Python, Perl.
Built-in modules for authentication, security, and logging.
Supports dynamic content when combined with PHP/MySQL.
B. Nginx (Engine-X)
Lightweight, high-performance web server.
Suitable for serving static content and handling high traffic.
Also used as reverse proxy & load balancer.
Installation:
sudo apt install nginx -y
Features:
Handles 10,000+ connections concurrently (good for high traffic).
Built-in reverse proxy → can forward requests to another server (e.g., Apache backend).
Lightweight & memory-efficient → ideal for Raspberry Pi.
Supports PHP via PHP-FPM (FastCGI Process Manager).
C. Lighttpd
Lightweight web server, optimized for low-resource devices.
Good for Raspberry Pi projects with limited CPU/RAM.
Features:
Very small memory footprint.
Supports CGI, FastCGI, SCGI for dynamic content.
Can serve static websites & small applications efficiently.
D. Full Stack (LAMP / LEMP)
LAMP = Linux + Apache + MySQL/MariaDB + PHP/Python.
LEMP = Linux + Nginx + MySQL/MariaDB + PHP/Python.
Used for hosting dynamic websites & applications (WordPress, Django, Flask, etc.).
A. LAMP Stack (Linux + Apache + MySQL/MariaDB + PHP)
Popular for dynamic websites.
Apache serves HTML/PHP pages, MySQL stores data.
Example: WordPress blog on Raspberry Pi.
B. LEMP Stack (Linux + Nginx + MySQL/MariaDB + PHP/Python)
Uses Nginx instead of Apache.
Better for high-performance apps.
Example: Flask/Django IoT Dashboard.
4. Advanced Usage
Database integration: Install MySQL or MariaDB.
Python frameworks: Flask, Django apps on Pi.
Hosting WordPress: Full CMS deployment.
IoT Dashboards: Host web-based sensor monitoring apps.
5. Security Considerations
Change default Pi password.
Use firewall (ufw) to allow only required ports (80 for HTTP, 443 for HTTPS).
Enable SSL/TLS certificates (e.g., Let’s Encrypt).
Keep Pi and web server software updated.
6. Advantages of Using Pi as Web Server
Cost-effective server solution.
Portable and low-power.
Supports learning of full-stack development.
Great for experimentation with cloud & IoT applications.
3.8 IMAGE & VIDEO PROCESSING USING PI.
1. Introduction
Image & Video Processing = analyzing, enhancing, and manipulating digital images or
video streams using computational techniques.
The Raspberry Pi (with its GPU + camera interface) is capable of performing real-time
image capture, video streaming, and computer vision tasks.
Widely used in IoT, Robotics, AI, and Security applications.
2. Why Use Raspberry Pi for Image/Video Processing?
Low-cost, portable, and energy-efficient.
Has CSI (Camera Serial Interface) for Pi Camera Module.
Supports USB webcams and HDMI capture devices.
Compatible with OpenCV, Python, TensorFlow Lite, and multimedia libraries.
Real-time video streaming & AI inference possible.
3. Hardware Components Needed
1. Raspberry Pi Board (Pi 4/5 recommended for faster processing).
2. Camera Options:
o Official Raspberry Pi Camera Module (v2, HQ Camera).
o USB webcams.
o Pi-compatible IR night-vision cameras.
3. Storage & Power: MicroSD card, power supply.
4. (Optional) External GPU/Accelerator: Google Coral TPU, Intel Movidius NCS for faster
AI.
4. Software & Libraries
A. OpenCV (Open Source Computer Vision Library)
Most popular library for image/video analysis.
Functions: object detection, edge detection, filtering, face recognition.
Example (Python):
import cv2
# Open camera
cap = [Link](0)
while True:
ret, frame = [Link]()
[Link]('Live Video', frame)
if [Link](1) & 0xFF == ord('q'):
break
[Link]()
[Link]()
B. PiCamera Library (Python)
Used for controlling official Pi Camera.
Example:
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(5)
[Link]('/home/pi/[Link]')
camera.stop_preview()
C. GStreamer / FFmpeg
For video streaming, compression, and format conversion.
Example: Stream Pi camera over network.
D. TensorFlow Lite / PyTorch Mobile
For AI-based image recognition on Pi.
Used in ML models for object classification.
5. Common Image Processing Tasks on Pi
1. Basic Image Operations
o Reading/writing images.
o Resizing, cropping, rotating, filtering.
2. Object Detection
o Face detection (Haar cascades).
o YOLO or MobileNet models for real-time object recognition.
3. Video Streaming
o Local (HDMI output).
o Remote streaming (via Flask + OpenCV or GStreamer).
4. Motion Detection
o Security applications using frame differencing.
5. Image Enhancement
o Noise reduction, sharpening, brightness/contrast adjustment.
6. Example: Motion Detection with OpenCV
import cv2
cap = [Link](0)
ret, frame1 = [Link]()
ret, frame2 = [Link]()
while [Link]():
diff = [Link](frame1, frame2)
gray = [Link](diff, cv2.COLOR_BGR2GRAY)
blur = [Link](gray, (5,5), 0)
_, thresh = [Link](blur, 20, 255, cv2.THRESH_BINARY)
dilated = [Link](thresh, None, iterations=3)
contours, _ = [Link](dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
if [Link](c) < 1000:
continue
(x, y, w, h) = [Link](c)
[Link](frame1, (x,y), (x+w, y+h), (0,255,0), 2)
[Link]("Motion Detection", frame1)
frame1 = frame2
ret, frame2 = [Link]()
if [Link](10) == ord('q'):
break
[Link]()
[Link]()
👉 Detects movement and draws bounding boxes around moving objects.
How It Works
1. Capture consecutive frames.
2. Compute absolute difference → detect changes.
3. Grayscale + blur → remove noise.
4. Threshold + dilate → highlight moving areas.
5. Find contours → mark motion with rectangles.
6. Loop continuously → real-time motion detection.
Turning Red Pixels to Blue With Raspberry Pi
Requirements
1. Raspberry Pi with Raspberry Pi OS.
2. Python 3 installed (default on Pi).
3. OpenCV library installed:
sudo apt update
sudo apt install python3-opencv -y
4. Sample image with red pixels ([Link]).
Python Code
import cv2
import numpy as np
# Load the image
image = [Link]('[Link]')
# Convert image to HSV color space (easier for color detection)
hsv = [Link](image, cv2.COLOR_BGR2HSV)
# Define range for red color in HSV
# Red may appear in two ranges in HSV
lower_red1 = [Link]([0, 120, 70])
upper_red1 = [Link]([10, 255, 255])
lower_red2 = [Link]([170, 120, 70])
upper_red2 = [Link]([180, 255, 255])
# Create masks for red color
mask1 = [Link](hsv, lower_red1, upper_red1)
mask2 = [Link](hsv, lower_red2, upper_red2)
red_mask = mask1 + mask2
# Convert red pixels to blue in the original image
# Blue color in BGR format
image[red_mask > 0] = [255, 0, 0] # BGR -> Blue
# Save the modified image
[Link]('[Link]', image)
# Display input and output
[Link]('Modified Image', image)
[Link](0)
[Link]()
Explanation
1. Read the image using OpenCV.
2. Convert to HSV color space → HSV separates color from intensity, making red detection
easier.
3. Create masks for red pixels (two ranges in HSV because red wraps around 0° hue).
4. Apply mask → wherever the mask is positive, set pixel value to blue (BGR = [255,0,0]).
5. Save and display the modified image.