The Raspberry Pi is a series of low_cost, compact single_board computers developed
in the UK by the Raspberry Pi Foundation in collaboration with Broadcom. Conceived
in 2008 by Eben Upton to address declining programming skills among students, it was
inspired by the BBC Micro of the 1980s and aimed to rekindle interest in computing
education at an affordable price.
Early Development (2006_2012) Initial prototypes appeared between 2006_2011,
evolving from large test boards to USB stick_sized designs. By August 2011,
50 alpha boards were functional, running Debian and 1080p video. The first
commercial model, Raspberry Pi Model B, launched on 29 February 2012 at $35,
selling out instantly and causing distributor websites to crash. A cheaper
Model A followed in 2013.
Growth and Diversification (2014_2019) In 2014, the Compute Module targeted
industrial use, while the Model B+ refined the flagship design. The $5 Raspberry
Pi Zero debuted in 2015, and the Pi 3 series (2016_2018) added 64_bit CPUs,
Wi_Fi, and Bluetooth. The Raspberry Pi 4 (2019) brought USB 3.0, dual 4K display
support, and up to 8 GB RAM.
desktop and command line used (similar to DOS)
os Debian Linux basic commands: ls mkdir cd cp mv rm nano sudo chmod 777 (anything goes)
grep da* myfile.txt Global Regular Expression Print
Version Codename Debian Release Date RPI OS Release Date
9 Stretch June 2017 August 2017
10 Buster July 2019 July 2019
11 Bullseye August 2021 November 2021
12 Bookworm June 2023 October 2023
13 Trixie August 2025 October 2025
14 Forky ??? ???
adding packages apt get update _ use google to get examples
kernigan and richie at Bell Labs 70s developed c language
linux linus torvalds 90s
unix
Unix was developed in the 1970s at AT&T Bell Labs by Ken Thompson and Dennis Ritchie
as a proprietary OS for large systems and servers. Linux, on the other hand, was
created in 1991 by Linus Torvalds as a free, open_source Unix_like kernel, later
combined with GNU (richard stallman) tools to form complete Linux distributions.
general c compiler (gcc)
gcc hello_pgm
#include
int main() {
// printf() displays the string inside quotation
printf("Hello, World!");
return 0;
}
binary numbers base 2 10 types of people joke
^
serial parallel game ports 0,0,1,0,1,1,0,1 _> 00101101
big endian little endian
pinout
MOSI Master Out Slave In
MISO Master In Slave Out
SCLK Serial Clock (marching rhythm)
SS Slave Select (one or more)
SPI Serial Peripheral Interface Controller/Peripheral least we could do
GPIO General Purpose Input Output _ like a light switch most of the time
robotics IoT smart house
Difference between GPIO_GEN and GPIO _ arcane naming conventions
SDRweb SDRADC
Microprocessors
Microprocessors have no OS. They run a single task, however complex like driving a car.
Evolution of Arduino
The Arduino project began in 2005 at the Interactive Design Institute Ivrea (IDII) in Italy,
aiming to create an affordable, open-source microcontroller platform for designers, students,
and hobbyists. The idea was sparked by Hernando Barragán’s thesis project Wiring, which
combined a user-friendly IDE with a ready-to-use circuit board. This inspired Massimo Banzi
and a small team — David Cuartielles, Tom Igoe, Gianluca Martino, and David Mellis — to
develop a cheaper, simpler, and more accessible platform.
The name Arduino came from Bar di Re Arduino in Ivrea, itself named after King Arduin
of Italy. Banzi, a regular at the bar, chose it to honor the place where the idea took shape.
From the start, Arduino embraced an open-source hardware model, using Creative Commons
licensing to encourage sharing and innovation. The first boards were priced around $30,
designed to be plug-and-play, and featured distinctive blue PCBs with a map of Italy.
By 2009, the team was refining usability, leading to the Arduino UNO — launched in
2010 at Maker Faire New York. The UNO marked Arduino’s transition from a niche
educational tool to a global maker movement icon. Key innovations included:
Automatic reset via a capacitor link, removing the need for manual resets before uploads.
Automatic power source selection between USB and external supply.
Robust USB connectors for durability.
A non-rectangular board shape for easier orientation in classrooms.
A refined brand identity with a new logo and packaging.
The UNO’s design choices — from usability tweaks to aesthetic branding — helped it
surpass 10 million units sold, empowering countless beginners to enter electronics.
Today, Arduino boards power projects from LED cubes to DNA analysis kits, and remain
central to the open hardware movement.
Example: Basic Arduino Blink Sketch
// Blink an LED on pin 13
void setup() {
pinMode(13, OUTPUT); // Set pin 13 as output
}
void loop() {
digitalWrite(13, HIGH); // LED on
delay(1000); // Wait 1 second
digitalWrite(13, LOW); // LED off
delay(1000); // Wait 1 second
}
This simple program reflects Arduino’s philosophy — accessible from day one, enabling
anyone to bring ideas to life.
also PWM (pulse width modulation)
// mM3 port for ESP32 – CJC – 8/11/2026
// 16 groups × 41‑byte rows
#include
#include
#define MUX0 12
#define MUX1 13
#define MUX2 14
#define MUX3 15
#define AD1_PIN 32
#define AD2_PIN 33
// 128 entries
uint32_t NV[128];
uint32_t II[128];
char TF[128][8]; // enough for 6‑byte text + comma
char ROW1[16][48]; // 41 bytes + margin
int i = 0;
int j = 0;
const uint32_t CC = 65535;
const uint32_t SN = 11000;
const char comma1[] = ",";
// ----------------------------
// Format helper
// ----------------------------
void fmt(char *out, uint32_t val, int width) {
char tmp[16];
sprintf(tmp, "%0*u", width, val);
sprintf(out, "%s%s", tmp, comma1);
}
// ----------------------------
// Set 4‑bit MUX output
// ----------------------------
void setMux(int v) {
digitalWrite(MUX0, (v & 1) ? HIGH : LOW);
digitalWrite(MUX1, (v & 2) ? HIGH : LOW);
digitalWrite(MUX2, (v & 4) ? HIGH : LOW);
digitalWrite(MUX3, (v & 8) ? HIGH : LOW);
}
void setup() {
Serial.begin(115200);
pinMode(MUX0, OUTPUT);
pinMode(MUX1, OUTPUT);
pinMode(MUX2, OUTPUT);
pinMode(MUX3, OUTPUT);
analogReadResolution(8); // 0–255, but we use 0–127 range
analogSetAttenuation(ADC_11db);
// NV initialized to zero automatically
// II initialized to zero automatically
// WiFi connect here if needed
}
void loop() {
if (i > 15) i = 0;
setMux(i);
j = 8 * i;
delay(950);
// Read ADCs (limit to 0–127)
uint32_t AD1 = analogRead(AD1_PIN) & 0x7F;
uint32_t AD2 = analogRead(AD2_PIN) & 0x7F;
II[j+0] = i;
// ---------------- TP block ----------------
II[j+1] = AD1;
NV[j+2] += AD1;
if (NV[j+2] > CC) {
NV[j+2] = AD1;
NV[j+3]++;
}
II[j+2] = NV[j+2];
II[j+3] = NV[j+3];
// ---------------- AP block ----------------
II[j+4] = AD2;
NV[j+4] += AD2;
if (NV[j+5] > CC) {
NV[j+5] = AD2;
NV[j+6]++;
}
II[j+5] = NV[j+5];
II[j+6] = NV[j+6];
II[j+7] = SN;
// ---------------- Build text fields ----------------
fmt(TF[j+0], II[j+0], 2);
fmt(TF[j+1], II[j+1], 3);
fmt(TF[j+2], II[j+2], 5);
fmt(TF[j+3], II[j+3], 5);
fmt(TF[j+4], II[j+4], 3);
fmt(TF[j+5], II[j+5], 5);
fmt(TF[j+6], II[j+6], 5);
char tmpSN[16];
sprintf(tmpSN, "%u%s", SN, comma1);
strcpy(TF[j+7], tmpSN);
// ---------------- Build ROW1 ----------------
sprintf(ROW1[i], "%s%s%s%s%s%s%s%s",
TF[j+0], TF[j+1], TF[j+2], TF[j+3],
TF[j+4], TF[j+5], TF[j+6], TF[j+7]);
// ---------------- Display ----------------
Serial.println(ROW1[i]);
Serial.print("i=");
Serial.print(i);
Serial.print(" j=");
Serial.println(j);
i++;
}
Microcontroller: Most Basic Stamp 2 (BS2) modules use a PIC or Parallax SX processor
wordwand magic lanternraspberry-pi-projects-you-can-do-in-1-hour
10-of-the-best-arduino-projects