# simonmonk/raspberrypi_cookbook_ed4 architecture

> Architecture diagram of the GitHub repository simonmonk/raspberrypi_cookbook_ed4, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/simonmonk/raspberrypi_cookbook_ed4
- Repository: https://github.com/simonmonk/raspberrypi_cookbook_ed4

## Overview

This repository is a collection of Raspberry Pi and Pico Cookbook examples, not one integrated application. The common user workflow is to run an individual chapter recipe, which reads input or a sensor and produces an output such as a display, device action, saved image, or web response. Groups below reflect the major capability areas in the tree. The sampled code supports only some links; unsampled chapter examples are represented by their enclosing directories where appropriate.

Main entry points: [`python/ch_09_person_detector.py`](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_09_person_detector.py) (Person detector), [`python/ch_17_web_sensor/web_sensor.py`](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_17_web_sensor/web_sensor.py) (Temperature web app), [`pico/ch_10_servo.py`](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_10_servo.py) (Pico servo control), [`pico/ch_18_badger.py`](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_18_badger.py) (Temperature display)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_python["Python recipes"]
  node_python_examples["Data and scripting"]
  node_python_gui["GUI examples"]
end

subgraph group_vision["Vision and audio"]
  node_vision_app["Person detector"]
  node_audio_app["Whistle detector"]
end

subgraph group_hardware["Hardware projects"]
  node_pico_examples["Pico recipes"]
  node_python_sensors["Sensor recipes"]
  node_python_actuators["Motor and servo recipes"]
  node_pico_servo["Pico servo control<br/>[ch_10_servo.py]"]
  node_badger_display["Temperature display<br/>[ch_18_badger.py]"]
end

subgraph group_network["Web and networking"]
  node_python_web["Temperature web app<br/>[web_sensor.py]"]
  node_pico_web["Pico web server<br/>[pico_w_server.py]"]
  node_http_framework["Microdot framework<br/>[microdot.py]"]
  node_wlan["Wi-Fi connection helper<br/>[mm_wlan.py]"]
  node_plant_monitor["Plant monitor driver<br/>[pmon.py]"]
end

node_user(("Recipe user"))
node_camera["Camera"]
node_audio_input["Audio input"]
node_image_output["Image output"]
node_sensor["Physical sensors"]
node_actuator["Servo or motor"]
node_display["Badger display"]
node_web_client(("Web client"))
node_cpu_temperature["CPU temperature"]

node_user -->|"runs recipe"| node_python_examples
node_user -->|"runs recipe"| node_python_gui
node_user -->|"runs detector"| node_vision_app
node_user -->|"runs detector"| node_audio_app
node_user -->|"runs recipe"| node_pico_examples
node_user -->|"runs recipe"| node_python_sensors
node_user -->|"runs recipe"| node_python_actuators
node_user -->|"starts server"| node_python_web
node_user -->|"starts server"| node_pico_web
node_camera -->|"provides frames"| node_vision_app
node_vision_app -->|"saves image"| node_image_output
node_audio_input -->|"provides audio"| node_audio_app
node_sensor -->|"button input"| node_pico_servo
node_pico_servo -->|"sets servo"| node_actuator
node_sensor -->|"provides readings"| node_badger_display
node_badger_display -->|"updates display"| node_display
node_web_client -->|"sends request"| node_python_web
node_python_web -->|"reads temperature"| node_cpu_temperature
node_web_client -->|"sends request"| node_pico_web

click node_python_examples "https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python"
click node_python_gui "https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python"
click node_vision_app "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_09_person_detector.py"
click node_audio_app "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_09_detect_whistle.py"
click node_pico_examples "https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/pico"
click node_python_sensors "https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python"
click node_python_actuators "https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python"
click node_pico_servo "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_10_servo.py"
click node_badger_display "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_18_badger.py"
click node_python_web "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_17_web_sensor/web_sensor.py"
click node_pico_web "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/pico_w_server.py"
click node_http_framework "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/microdot.py"
click node_wlan "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/mm_wlan.py"
click node_plant_monitor "https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/pmon.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_python_examples,node_python_gui,node_user,node_web_client toneBlue
class node_vision_app,node_audio_app toneAmber
class node_pico_examples,node_python_sensors,node_python_actuators,node_pico_servo,node_badger_display toneMint
class node_python_web,node_pico_web,node_http_framework,node_wlan,node_plant_monitor toneRose
class node_camera,node_audio_input,node_image_output,node_sensor,node_actuator,node_display,node_cpu_temperature toneIndigo
```

## Components

### Python recipes

- [Data and scripting](https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python): `python`
- [GUI examples](https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python): `python`

### Vision and audio

- [Person detector](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_09_person_detector.py): `python/ch_09_person_detector.py`
- [Whistle detector](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_09_detect_whistle.py): `python/ch_09_detect_whistle.py`

### Hardware projects

- [Pico recipes](https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/pico): `pico`
- [Sensor recipes](https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python): `python`
- [Motor and servo recipes](https://github.com/simonmonk/raspberrypi_cookbook_ed4/tree/main/python): `python`
- [Pico servo control](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_10_servo.py): `pico/ch_10_servo.py`
- [Temperature display](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_18_badger.py): `pico/ch_18_badger.py`

### Web and networking

- [Temperature web app](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/python/ch_17_web_sensor/web_sensor.py): `python/ch_17_web_sensor/web_sensor.py`
- [Pico web server](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/pico_w_server.py): `pico/ch_19_webserver/pico_w_server.py`
- [Microdot framework](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/microdot.py): `pico/ch_19_webserver/microdot.py`
- [Wi-Fi connection helper](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/mm_wlan.py): `pico/ch_19_webserver/mm_wlan.py`
- [Plant monitor driver](https://github.com/simonmonk/raspberrypi_cookbook_ed4/blob/main/pico/ch_19_webserver/pmon.py): `pico/ch_19_webserver/pmon.py`

### Other components

- **Recipe user**
- **Camera**
- **Audio input**
- **Image output**
- **Physical sensors**
- **Servo or motor**
- **Badger display**
- **Web client**
- **CPU temperature**

## Connections

- Recipe user → Data and scripting: runs recipe
- Recipe user → GUI examples: runs recipe
- Recipe user → Person detector: runs detector
- Recipe user → Whistle detector: runs detector
- Recipe user → Pico recipes: runs recipe
- Recipe user → Sensor recipes: runs recipe
- Recipe user → Motor and servo recipes: runs recipe
- Recipe user → Temperature web app: starts server
- Recipe user → Pico web server: starts server
- Camera → Person detector: provides frames
- Person detector → Image output: saves image
- Audio input → Whistle detector: provides audio
- Physical sensors → Pico servo control: button input
- Pico servo control → Servo or motor: sets servo
- Physical sensors → Temperature display: provides readings
- Temperature display → Badger display: updates display
- Web client → Temperature web app: sends request
- Temperature web app → CPU temperature: reads temperature
- Web client → Pico web server: sends request
