Raspberry Overview

Overview

The Raspberry Pi Foundation was established in 2008 as a UK-based charity with the purpose to “further the advancement of education of adults and children, particularly in the field of computers, computer science and related subjects”.

Reference RaspberryPiFoundationStrategy2018

Hardware

What makes the Raspberry Pi so popular is the great hardware for this limited budget. This a perfect solution for prototyping.

Elements Characteristcs
Power 5V 2.5A DC via micro USB connector
Processor Broadcom BCM2837B0, Cortex-A53 64-bit SoC, 1.4 GHz with 1GB LPDDR2 SDRAM
Extended GPIO Extended 40 pin GPIO port
HDMI Full size HDMI
CSI Camera connector CSI Camera Connector
Audio output 4 pole stereo output and video composite port
Ethernet 10/100 Ethernet port
USB 2.0 4 x USB 2.0 port and Faster Ethernet over USB 2.0
Wi-Fi and Bluetooth Bluetooth 4.1 Wi-Fi

Raspberry OS

On this hardware a umber of images are available. Refer to www.raspberrypi.org/downloads/ for the detailed list and links

Rasbian

Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware. An operating system is the set of basic programs and utilities that make your Raspberry Pi run. Reference https://www.raspbian.org/

Java SE Platform

Images

Image Description
Raspbian is the Foundation’s official supported operating system
NOOBS is an easy operating system installer which contains Raspbian and LibreELEC. It also provides a selection of alternative operating systems which are then downloaded from the internet and installed.

Third party OS

  • Windows 10 IoT - Windows 10 IoT Core is a version of Windows 10 that is optimized for smaller devices with or without a display that run on both ARM and x86/x64 devices. Reference docs.microsoft.com/en-us/windows/iot-core/windows-iot
  • LibreELEC LibreELEC is a Just enough OS Linux distribution for running Kodi. It is efficient with a tiny disk and memory footprint, and provides cutting edge hardware support to deliver a set-top box Kodi experience. Reference https://libreelec.wiki/
  • OSMC
  • PiNET
  • RiscOS
  • Weather Station
  • IchigoJam
  • Ubuntu MATE
  • Snappy Ubuntu Core

This is a list identified on Dec 2018 and will most likely be extended

Raspberry PI Programming

  • C will be closest to the hardware and OS, but you'll need (in general) more lines of code than a higher-level language.
  • Java has a plethora of third-party libraries and great GUI support, but not much community support on the Pi.
  • Python has a ton of community support.

other

  • Boa ..
  • SCALA ...

GPIO Programming

A number of library exists depending on the OS installed on the SD card.

GPIO Zero

for the Raspbian, one of the most used library is the Python GPIO Zero library. This library is installed by default

RPi.GPIO

This package provides a class to control the GPIO on a Raspberry Pi. Note that this module is unsuitable for real-time or timing critical applications. This is because you can not predict when Python will be busy garbage collecting. RPi.GPIO

Wiringpi

WiringPi is a PIN based GPIO access library written in C for the BCM2835, BCM2836 and BCM2837 SoC devices used in all Raspberry Pi. versions. It’s released under the GNU LGPLv3 license and is usable from C, C++ and RTB (BASIC) as well as many other languages with suitable wrappers (See below) It’s designed to be familiar to people who have used the Arduino “wiring” system1 and is intended for use by experienced C/C++ programmers. It is not a newbie learning tool.

WiringPi is developed directly on a Raspberry Pi running 32-bit Raspbian. I do not support any other platform, cross compiling or operating systems. It has been ported to other platforms, other operating systems and some are cross compiling, however this author does not maintain those systems. If you are trying to use wiringPi on a platform other than the Raspberry Pi with Raspbian then you must contact the person who did the port and not me. http://wiringpi.com/

Pi4J

This project is intended to provide a friendly object-oriented I/O API and implementation libraries for Java Programmers to access the full I/O capabilities of the Raspberry Pi platform. This project abstracts the low-level native integration and interrupt monitoring to enable Java programmers to focus on implementing their application business logic. http://pi4j.com/

sample

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPin;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinDirection;
import com.pi4j.io.gpio.PinMode;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.trigger.GpioCallbackTrigger;
import com.pi4j.io.gpio.trigger.GpioPulseStateTrigger;
import com.pi4j.io.gpio.trigger.GpioSetStateTrigger;
import com.pi4j.io.gpio.trigger.GpioSyncStateTrigger;
import com.pi4j.io.gpio.event.GpioPinListener;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;
import com.pi4j.io.gpio.event.PinEventType;