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
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 |
On this hardware a umber of images are available. Refer to www.raspberrypi.org/downloads/ for the detailed list and links
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/
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. |
This is a list identified on Dec 2018 and will most likely be extended
other
A number of library exists depending on the OS installed on the SD card.
for the Raspbian, one of the most used library is the Python GPIO Zero library. This library is installed by default
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 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/
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;