documentation
The official documentation for Raspberry Pi computers and microcontrollers
Top Related Projects
Kernel source tree for Raspberry Pi-provided kernel builds. Issues unrelated to the linux kernel should be posted on the community forum at https://forums.raspberrypi.com/
Programs and scripts to display "inline" in Adafruit Learning System guides
Arduino core for the ESP32
Arduino IDE 1.x
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
:house_with_garden: Open source home automation that puts local control and privacy first.
Quick Overview
The raspberrypi/documentation repository is the official documentation for Raspberry Pi hardware and software. It provides comprehensive guides, tutorials, and reference materials for users of all levels, from beginners to advanced developers. The repository serves as a central resource for understanding and working with Raspberry Pi devices.
Pros
- Comprehensive and well-organized documentation covering a wide range of topics
- Regularly updated to reflect the latest Raspberry Pi hardware and software developments
- Contributions from both the Raspberry Pi Foundation and the community
- Available in multiple languages, making it accessible to a global audience
Cons
- Some sections may be outdated or require updates due to the rapid pace of Raspberry Pi development
- Navigation can be challenging for newcomers due to the vast amount of information
- Limited coverage of some advanced topics or niche use cases
- Occasional inconsistencies in formatting or style across different sections
Getting Started
To access the Raspberry Pi documentation:
- Visit the GitHub repository: https://github.com/raspberrypi/documentation
- Browse the contents directly on GitHub, or clone the repository to your local machine:
git clone https://github.com/raspberrypi/documentation.git
- If you want to contribute or build the documentation locally, follow the instructions in the README.md file.
The documentation is primarily written in Markdown format, making it easy to read and contribute to. You can start exploring the content by navigating through the folders and files in the repository, or by visiting the official Raspberry Pi documentation website at https://www.raspberrypi.com/documentation/.
Competitor Comparisons
Kernel source tree for Raspberry Pi-provided kernel builds. Issues unrelated to the linux kernel should be posted on the community forum at https://forums.raspberrypi.com/
Pros of linux
- Contains the actual Linux kernel source code for Raspberry Pi devices
- Allows for low-level customization and optimization of the operating system
- Provides direct access to hardware-specific features and drivers
Cons of linux
- Requires advanced technical knowledge to navigate and contribute effectively
- Less user-friendly for beginners seeking general Raspberry Pi information
- Focuses solely on the kernel, lacking broader documentation on Raspberry Pi usage
Code Comparison
documentation:
# Setting up your Raspberry Pi
This section will take you through the process of setting up your Raspberry Pi.
1. Connect your Raspberry Pi to a monitor, keyboard, and mouse.
2. Insert the SD card with Raspberry Pi OS into your Raspberry Pi.
3. Power on your Raspberry Pi.
linux:
static int __init bcm2835_init(void)
{
int ret;
ret = platform_device_register(&bcm2835_dev);
if (ret)
return ret;
return platform_driver_register(&bcm2835_driver);
}
The documentation repo provides user-friendly guides, while the linux repo contains kernel source code for advanced users and developers.
Programs and scripts to display "inline" in Adafruit Learning System guides
Pros of Adafruit_Learning_System_Guides
- More diverse range of projects and tutorials, covering various microcontrollers and electronics
- Frequent updates with new guides and projects
- Strong focus on beginner-friendly content and step-by-step instructions
Cons of Adafruit_Learning_System_Guides
- Less structured organization compared to the Raspberry Pi documentation
- May not provide as in-depth technical information for advanced users
- Primarily focused on Adafruit products, which may limit applicability for some users
Code Comparison
Adafruit_Learning_System_Guides:
import board
import neopixel
pixels = neopixel.NeoPixel(board.D6, 30)
pixels.fill((255, 0, 0))
documentation:
from gpiozero import LED
from time import sleep
led = LED(17)
led.on()
sleep(1)
led.off()
The Adafruit example demonstrates NeoPixel LED control, while the Raspberry Pi example shows basic GPIO control. Both repositories provide code snippets to help users get started with their respective hardware platforms.
Arduino core for the ESP32
Pros of arduino-esp32
- Focuses on Arduino compatibility for ESP32, providing a more specialized development environment
- More active community with frequent updates and contributions
- Includes hardware-specific libraries and examples for ESP32 features
Cons of arduino-esp32
- Limited scope compared to the broader Raspberry Pi documentation
- May require more technical knowledge to get started
- Less comprehensive general-purpose computing information
Code Comparison
arduino-esp32:
#include <WiFi.h>
void setup() {
WiFi.begin("SSID", "PASSWORD");
}
documentation:
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID", "PASSWORD")
The arduino-esp32 example uses C++ with Arduino-specific libraries, while the documentation example uses Python, reflecting the different approaches and target audiences of each project.
arduino-esp32 is tailored for ESP32 development with Arduino compatibility, offering a more focused but potentially limited scope. documentation provides a comprehensive resource for Raspberry Pi users, covering a wider range of topics but with less emphasis on specific hardware features.
Both repositories serve their respective communities well, with arduino-esp32 catering to embedded systems developers and documentation addressing a broader audience of Raspberry Pi enthusiasts and learners.
Arduino IDE 1.x
Pros of Arduino
- More extensive codebase with a wider range of libraries and examples
- Longer development history, resulting in a more mature and stable platform
- Stronger focus on hardware-specific implementations and low-level programming
Cons of Arduino
- Less comprehensive documentation compared to Raspberry Pi
- Narrower scope, primarily focused on microcontroller programming
- Less emphasis on general-purpose computing and operating system features
Code Comparison
Arduino:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Raspberry Pi (Python):
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
while True:
GPIO.output(18, GPIO.HIGH)
time.sleep(1)
GPIO.output(18, GPIO.LOW)
time.sleep(1)
Both examples demonstrate a simple LED blinking program, showcasing the different programming languages and approaches used in Arduino and Raspberry Pi projects. Arduino uses C++ with a specific structure (setup and loop functions), while Raspberry Pi typically uses Python with a more general-purpose programming style.
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
Pros of MicroPython
- Implements Python 3 for microcontrollers, enabling Python programming on embedded systems
- Supports a wide range of microcontroller boards and architectures
- Includes a comprehensive standard library optimized for resource-constrained devices
Cons of MicroPython
- More focused on implementation rather than extensive documentation
- May require more technical knowledge to get started compared to Raspberry Pi's beginner-friendly approach
- Limited to Python language, while Raspberry Pi documentation covers multiple programming languages
Code Comparison
MicroPython example:
from machine import Pin
import time
led = Pin(2, Pin.OUT)
while True:
led.toggle()
time.sleep(1)
Raspberry Pi documentation example (Python):
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.toggle()
sleep(1)
Both examples demonstrate LED blinking, but MicroPython uses lower-level machine
module, while Raspberry Pi documentation showcases the higher-level gpiozero
library for easier GPIO control.
:house_with_garden: Open source home automation that puts local control and privacy first.
Pros of Home Assistant Core
- Larger and more active community with frequent updates and contributions
- Broader scope, covering a wide range of smart home devices and integrations
- More extensive codebase with advanced features for home automation
Cons of Home Assistant Core
- Steeper learning curve for beginners due to its complexity
- Requires more system resources to run compared to lightweight documentation
Code Comparison
Home Assistant Core (Python):
class Light(ToggleEntity):
@property
def brightness(self):
"""Return the brightness of this light between 0..255."""
return self._brightness
def turn_on(self, **kwargs):
"""Turn the light on."""
self._state = True
self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255)
Raspberry Pi Documentation (Markdown):
# Setting up your Raspberry Pi
1. Insert the SD card into the SD card slot on the underside of the Raspberry Pi.
2. Plug the USB keyboard into one of the USB ports on the Raspberry Pi.
3. Plug the USB mouse into one of the USB ports on the Raspberry Pi.
4. Connect the HDMI cable from the monitor or TV to the HDMI port on the Raspberry Pi.
5. Plug in the power supply.
The code comparison shows that Home Assistant Core contains more complex Python code for device control, while Raspberry Pi Documentation primarily consists of instructional markdown content.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
This repository contains the source and tools used to build the Raspberry Pi Documentation.
Licence
The Raspberry Pi documentation is licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA). Documentation tools (everything outside of the documentation/
subdirectory) are licensed under the BSD 3-Clause licence.
Top Related Projects
Kernel source tree for Raspberry Pi-provided kernel builds. Issues unrelated to the linux kernel should be posted on the community forum at https://forums.raspberrypi.com/
Programs and scripts to display "inline" in Adafruit Learning System guides
Arduino core for the ESP32
Arduino IDE 1.x
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
:house_with_garden: Open source home automation that puts local control and privacy first.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot