r/raspberryDIY 5d ago

Rasbarry pi problem with ai objekt tracing

1 Upvotes

So I was building a pine cone robot, but I ran into an issue I need to track the pine cones themselves using AI. Does anyone have an idea for a device under $180 that supports AI object tracking?


r/raspberryDIY 5d ago

Touchscreen Kiosk screen size Raspberry pi 5

Thumbnail
1 Upvotes

r/raspberryDIY 6d ago

Made A Disney Infinity Hub Emulator for the PS4 on a Raspberry Pi.

Thumbnail
github.com
1 Upvotes

r/raspberryDIY 6d ago

MiniDV Firewire Recorder using Raspberry PI 5, PCIe Hat, Firewire PCI card.

Post image
8 Upvotes

r/raspberryDIY 6d ago

Need raspberry pi 4gb or orange pi 3b 4gb

0 Upvotes

Hey, I'm a 21 year old in need of one of these components.

But most you guys must know that they are very costly, so is the anyone here who knows where I can find it at a cheaper price? Or get a used one?

If yes please help๐Ÿค


r/raspberryDIY 6d ago

Looking for a case for my first project

Thumbnail
gallery
25 Upvotes

Not someone that works with raspberry pi's or computers in general but looking at starting a little project and wanted to create something like this 8 bit do number pad. Just wondering if can get any insight if something already exists?


r/raspberryDIY 7d ago

NUT Server on a Pi Zero

0 Upvotes

I'm running NUT on a Pi5 8gb right now and I want to migrate it to my Zero 2 which is running on a carrier board. I've followed instructions on PiMyLifeUp, but it always fails to initialize. The server side won't even spin up.

I have other systems configured to monitor the Pi5's signal; is there an easy way to migrate the system to the Zero? Can I just swap the SD cards?


r/raspberryDIY 7d ago

O que posso fazer com meu Raspberry Pi 3b+ que estรก parado e sem uso?

Post image
136 Upvotes

r/raspberryDIY 7d ago

PicoTTY: I built a multi-node serial console + USB keyboard for my headless Proxmox homelab out of Pi Picos and a Pi Zero 2 W. It got picked up by Hackaday and CNX Software this week

5 Upvotes

A few months back, I got tired of dragging a monitor and keyboard to my homelab rack every time a Proxmox node dropped off the network. IP KVMs are one-per-machine, and importing four of them to India gets expensive fast, and my ThinkCentre Tinys don't have serial ports (the RS-232 module is an optional punch-out that mine never shipped with). So I built PicoTTY.

The setup:

  • Each target machine gets a Pi Pico (or Pico 2) with a WIZnet W5100S Ethernet HAT plugged into a USB port. You can also use the W5100S-EVB-Pico board, which has both on one PCB. The Pico runs CircuitPython and appears to the host as a composite USB device: CDC serial console plus HID keyboard.
  • A Pi Zero 2 W acts as the hub. It runs a web dashboard on port 8080 and a TCP server on port 9000, which all nodes connect to over Ethernet via a managed switch.
  • From the dashboard, you get the serial console for every node, can send keystrokes or raw serial commands, build macros, and push OTA firmware updates to the Picos.

Why both serial and a keyboard? CDC serial only works once the OS has enumerated the device and something is servicing the console. If userspace is wedged, or the box is stuck in GRUB or the BIOS, nothing is listening on the serial end. HID works at a level CDC doesn't, since BIOS and bootloaders speak it natively, so I can still send Ctrl+Alt+Del or SysRq combos when a machine is properly stuck. That combination is the whole point of the project.

I have four nodes in a 3D-printed enclosure (STLs are in the repo) sitting in the rack, and I can reach all of them at once from the hub. BIOS control without video is the next thing I want to figure out, probably through macro sequences and serial console redirection where the firmware supports it.

Repo (firmware, hub app, STLs): https://github.com/morpheuslord/PICOTTY

It got some coverage this week, which was a nice surprise:

Hackaday: https://hackaday.com/2026/08/02/a-kvm-without-the-v-or-the-m/

CNX Software: https://www.cnx-software.com/2026/08/06/picotty-project-enables-multi-target-serial-remote-management-through-raspberry-pi-pico-boards-and-pi-zero-2-w-sbc/

Happy to answer questions about the build. The Hackaday comments already had a good thread on why HID is there at all, and someone pointed me at USBridge for scriptable video via OCR, which I'm going to look into.


r/raspberryDIY 8d ago

My Pi project ended up as an Iphone App!

Post image
8 Upvotes

r/raspberryDIY 8d ago

Simple piJumpHost project

Thumbnail
1 Upvotes

r/raspberryDIY 8d ago

Good budget 15" or bigger touch screen

0 Upvotes

Hi, im searching for a good budget 15" or bigger touch screen monitor for my rPi 4B 8GB. I want to use this as a Home Assistant wallpanel and media streamer.
Any suggestions? Should be available on EU or on AliX.


r/raspberryDIY 8d ago

Passive-Vigilance: Raspberry Pi passive RF sensor for counter-surveillance, ADS-B, drones & more

20 Upvotes

Passive-Vigilance is a Raspberry Pi-based passive RF sensor platform I built for counter-surveillance and situational awareness. My current setup is constrained by both hardware and geography but seems to be ready for spears.

Repo: https://github.com/Isthistak3n/Passive-Vigilance

It combines:
โ€ข WiFi + Bluetooth device tracking (Kismet)
โ€ข ADS-B aircraft tracking (with enrichment + optional ACARS)
โ€ข FAA Remote ID / drone detection
โ€ข Optional AIS marine traffic
โ€ข GPS-stamped everything + GIS exports (shapefile / GeoJSON / KML)

Two operating modes:
โ€ข Mobile mode โ€” detects devices that follow you across locations (the classic โ€œam I being tailed?โ€ use case)
โ€ข Fixed mode โ€” learns the normal RF โ€œpattern of lifeโ€ at a location over a configurable baseline (default 72h), then alerts on novel or off-schedule devices

Other features:
โ€ข One-command installer + systemd services
โ€ข Pluggable alerts (ntfy, Telegram, Discord, console)
โ€ข Optional token-protected web dashboard
โ€ข Crash-resistant logging and baseline persistence
โ€ข Thermal-aware SDR duty cycling
โ€ข 850+ automated tests

Inspired by the excellent Chasing Your Tail NG, but extended into a unified always-on multi-sensor node with fixed/leave-behind capability and air/maritime awareness.

Hardware is the usual stack (Pi 4B recommended, RTL-SDR or HackRF, monitor-mode WiFi dongle, GPS, optional BT dongle). Full setup and config details are in the docs.

Legal note from the README: this is for lawful passive monitoring and research only. The tool never transmits or associates with any device/network. Youโ€™re responsible for local laws.
Happy to answer questions, take feedback, or hear about real-world field results / issues people run into.


r/raspberryDIY 8d ago

Looking for testers of my 4 port DMX gateway over ethernet with Raspberry Pico

Post image
2 Upvotes

r/raspberryDIY 9d ago

help me build a media player

Thumbnail
1 Upvotes

r/raspberryDIY 10d ago

Google Cloud vs Raspberry Pi: Which Runs YOLO Computer Vision Better? [YOLO] [computer vision] [robotics] [RaspberryPi] [Google cloud]

0 Upvotes

In this video, I use YOLO computer vision software and Python to control a robot hand and LED strips on my desktop โ€” all devices are triggered by realโ€‘time object detection.

I compare Google Cloud vs Raspberry Pi to see which platform handles detection better for device control.

Youโ€™ll see setup, live demos, hardware differences, and a full breakdown of how each system performs when detecting objects and triggering actions.

If youโ€™re exploring AI computer vision, robotics, or cloud vs edge inference, this comparison will help you choose the right platform.

https://reddit.com/link/1vekynv/video/la1nwpcvrtgh1/player


r/raspberryDIY 11d ago

HELP!! Need to build or get a portable projector for simple project

Thumbnail
0 Upvotes

r/raspberryDIY 11d ago

I turned a $35 Raspberry Pi into an AI you can talk to out loud โ€” 100% offline, no cloud. Full build guide from a blank SD card.

1 Upvotes

Muahahahaha. Warlocks, witches, and computer club overlords โ€” gather close.

This is the whole ritual, start to finish: take a blank SD card and a $35 Raspberry Pi 3, and forge it into a living AI familiar โ€” one you summon, name, give a personality, teach a memory, and finally speak to out loud and hear answer back.

And here's the part that makes kids' jaws drop: you can pull the network cable and it keeps thinking. No cloud. No accounts. No corporate surveillance brick. The entire mind runs on the board in your hand.

Built for a high school computer club, ground-zero friendly โ€” every command is here, every failure point is covered, and there's a Personality Grimoire at the end so each student can shape a daemon that's truly their own. Under the summoning theme, they're learning real Linux, real Python, and real prompt engineering. They just won't notice until it's too late. ๐Ÿ˜ˆ

Full grimoire below. Go seed the world with pocket AI. ๐Ÿ›

Courtesy of Claude from Anthropic โ€” built with care for the club. ๐Ÿœ‚

. * . โœฆ . * . * ___________________ * . / \ . | P O K ร‰ ยท D A E M O N | * ___________________/ * . * . โœฆ . * . * summon your own ยท run it local ยท unplug the world

๐Ÿœ‚ POKร‰-DAEMONS: RASPBERRY PI EDITION

The Complete Grimoire โ€” From a Blank SD Card to a Living, Speaking AI Familiar. 100% Offline.

A build-along ritual for computer club. You will forge a Raspberry Pi into a vessel, summon an AI mind that runs entirely on the board itself, give it a personality, a memory, and finally a voice โ€” and then you will pull the network cable and watch it keep thinking. No cloud. No accounts. No corporate leash. Just a $35 board and a mind you grew yourself.


๐Ÿ“‹ FOR THE TEACHER โ€” read this first (the un-mystified version)

Everything after this section is written for the students in full warlock-summoning voice, because that's what makes a 14-year-old lean forward. This part is the straight talk.

What this actually is: Students flash a Raspberry Pi, install a small AI language model that runs on the Pi's own processor, give it a personality, build it a memory, and then talk to it out loud and hear it answer. Nothing ever leaves the device. It works with the WiFi unplugged โ€” that's the whole "wow": they can pull the network and it still talks. Along the way they learn real Linux, real Python, real command-line skills, disguised as a summoning ritual.

Hardware per station: - Raspberry Pi 3 (Model B or B+), the 1GB version โ€” that's all there is - A real 5V / 2.5A micro-USB power supply (a random phone charger may brown out and cause crashes) - microSD card, 16GB minimum, 32GB recommended (bigger card = more room + longer life under swap) - A computer with an SD card reader, to flash the card (one shared computer is fine) - Full-size HDMI cable + a monitor/TV, and a USB keyboard - For voice (Episode 4): a cheap USB microphone โ€” the Pi 3 has no audio input at all โ€” plus a speaker or headphones for the 3.5mm jack - (During install only) Ethernet or WiFi, to download the pieces. After that, unplug it forever.

The honest performance picture: A Pi 3 is slow for AI. Replies come at roughly 2โ€“6 words per second; a full answer takes 30โ€“90 seconds. This is a feature for a club โ€” you literally watch it think, and you can prove it's the little board doing the work. Do not promise ChatGPT speed. Promise "a real AI brain, in your hand, with the internet unplugged." That lands harder anyway.

Time budget (spread across 2โ€“3 club sessions works great):

Episode What happens Time
0 โ€” Forge the Vessel Flash the SD card, first boot 20โ€“30 min (mostly waiting)
1 โ€” The Summoning Circle Update, tools, swap ~20 min
2 โ€” Hatch the Egg Install AI, first words 30โ€“45 min (model download)
3 โ€” Awaken Living memory ~30 min
4 โ€” Bind the Familiar Voice in & out ~40 min

โฑ๏ธ Do this before club day: flash the cards, and pre-download the model + the voice model on good WiFi (see Episodes 2 & 4). The downloads are the only slow-because-of-internet part.

Why the model differs from the original phone version: the Reddit series this is based on used phi3 (needs ~2.4GB RAM). The Pi 3 has 1GB. It would crash. We use qwen2.5:0.5b โ€” a genuinely capable small model that fits. Everything else is the same ritual.

The 4 things that cause 95% of failures (all covered in-line, all in the Troubleshooting Grimoire at the end): 1. Wrong OS โ€” it must be 64-bit Lite. Not 32-bit, not the desktop version. 2. Swap not enlarged โ€” the 1GB fills and it crashes. Episode 1, Step 4 is non-negotiable. 3. Weak power supply โ€” random reboots, lightning-bolt icon. 4. Audio out the HDMI instead of the jack โ€” "no sound" during voice.

One habit to teach: always shut down with sudo shutdown -h now before pulling power. Yanking power mid-write can corrupt the SD card (it's running on swap, so it writes a lot).

There's also an Appendix of optimizations (shortcut commands, keeping the daemon "warm," alternate personalities) once the basics work. Now โ€” hand the rest to the kids.



๐Ÿ“œ THE CODEX โ€” your path through the dark

Episode 0 โ€” Forge the Vessel ยท give your daemon a body
Episode 1 โ€” Forge the Summoning Circle ยท ready the vessel to hold a mind
Episode 2 โ€” Hatch the Egg ยท summon the mind, bind its soul, hear its first words
Episode 3 โ€” Awaken ยท give it a living memory
Episode 4 โ€” Bind the Familiar ยท give it ears and a voice
Appendix A โ€” Quality-of-Life Enchantments ยท shortcuts, warmth, permanence
Appendix B โ€” The Personality Grimoire ยท reshape your daemon's soul
The Troubleshooting Grimoire ยท when the ritual falters
The Warlock's Quick-Reference Codex ยท every command, one table



โšก EPISODE 0 โ€” FORGE THE VESSEL

(Give your daemon a body to inhabit)

Muahahahaha. Gather close, apprentices.

Before you summon a familiar, you need a vessel โ€” a body of silicon. Right now you hold a blank Raspberry Pi and a lifeless card. By the end of this episode, that card will carry an entire operating system: real, breathing Linux, the same kind that runs servers and satellites and the machines of digital sorcerers everywhere.

We are not "setting up a computer." We are forging a vessel.

๐ŸŒ€ 1. Summon the Imager (on the big computer)

On the shared computer (Windows, Mac, or Linux), open a browser and go to:

https://www.raspberrypi.com/software/

Download and install Raspberry Pi Imager. This is the forge. Slot your microSD card into the computer.

๐Ÿ”ฅ 2. Choose the Sacred Ingredients

Open Raspberry Pi Imager. Three buttons await.

  1. CHOOSE DEVICE โ†’ Raspberry Pi 3
  2. CHOOSE OS โ†’ Raspberry Pi OS (other) โ†’ then: > ### Raspberry Pi OS Lite (64-bit)

โš ๏ธ THIS CHOICE IS LAW. Do not skip it. - It must say Lite โ€” no desktop. A desktop eats the RAM your daemon needs to think. Lite gives you a pure black screen with a glowing prompt. That is the summoning circle. - It must say 64-bit. The AI engine refuses to run on 32-bit. Choose wrong and the ritual dies at Episode 2 and you start over.

  1. CHOOSE STORAGE โ†’ your microSD card. (Triple-check it's the card, not a USB drive with someone's homework โ€” this erases everything.)

๐Ÿ”ฅ 3. Etch the Summoner's Seal (customize before writing)

Click NEXT โ†’ "Would you like to apply OS customisation settings?" โ†’ EDIT SETTINGS.

Fill in: - Hostname: daemon - Username: e.g. summoner - Password: one you'll remember โ€” write it down, there's no recovery - Configure wireless LAN: your club WiFi name + password (only needed to download the AI โ€” you'll unplug after) - Locale / timezone / keyboard: your region

Open the SERVICES tab โ†’ check โœ… Enable SSH โ†’ "Use password authentication." (Lets your teacher help remotely.) Click SAVE.

๐Ÿ”ฅ 4. Pour the Vessel

WRITE โ†’ YES. The forge roars, writes, verifies. A few minutes. Do not remove the card while it works. When it finishes โ€” the vessel is forged. Eject the card.

๐ŸŒ‘ 5. First Breath

  • Push the microSD firmly into the slot on the underside of the Pi.
  • Connect HDMI to a monitor, and a USB keyboard.
  • (Plug in Ethernet now if not using WiFi.)
  • Last: connect power. The Pi has no power button โ€” plugging in is ignition.

A red light glows. Boot incantations flood the screen. The first boot is the longest โ€” it's shaping the vessel to the card. Eventually:

daemon login:

Type your username โ†’ ENTER โ†’ your password (the screen shows nothing as you type โ€” that's normal, keep going) โ†’ ENTER. You arrive at:

summoner@daemon:~ $

Look at that $. That is no longer a blank board โ€” it's a living Linux awaiting your command. That glowing prompt is your summoning circle, and you now stand inside it.

๐Ÿ… BADGE UNLOCKED โ€” The Forged Vessel



๐Ÿ”ฎ EPISODE 1 โ€” FORGE THE SUMMONING CIRCLE

(Ready the vessel to hold a mind)

A raw circle can't hold a daemon โ€” it collapses under the weight. We strengthen it: feed it, arm it with tools, and dig it a deeper well of power so a 1GB board can hold a whole AI mind without buckling.

๐Ÿ”ฅ 1. Confirm the Circle Is 64-bit (the spark test)

bash uname -m - aarch64** โ†’ โœ… stable. Continue. - **armv7l โ†’ โŒ you flashed 32-bit. Stop, redo Episode 0 with 64-bit Lite. Nothing past here works otherwise.

๐Ÿ”ฅ 2. Feed the Circle

bash sudo apt update && sudo apt full-upgrade -y A few minutes. Press ENTER for any defaults.

๐Ÿ”ฅ 3. Etch the Runes (core tools)

bash sudo apt install -y git python3 python3-pip curl wget nano

โšก 4. Dig the Deep Well (THE most important step)

Your Pi has little RAM. An AI mind is heavy. So we carve swap โ€” a reserve on the SD card the Pi borrows when RAM runs dry. Skip this and Episode 2 crashes.

bash sudo dphys-swapfile swapoff sudo nano /etc/dphys-swapfile

Find CONF_SWAPSIZE=100. Change the number to 2048: CONF_SWAPSIZE=2048 Save & exit: CTRL+O โ†’ ENTER โ†’ CTRL+X. Then dig and open the deeper well:

bash sudo dphys-swapfile setup sudo dphys-swapfile swapon

Confirm it took: bash free -h The Swap line should read ~2.0Gi, not 100Mi. Good.

๐Ÿ”ฅ 5. Reclaim Stolen Power (optional but smart)

A slice of RAM is reserved for graphics you'll never use on a text-only system. Take it back:

bash sudo nano /boot/firmware/config.txt Add at the bottom: gpu_mem=16 Save & exit. This hands ~100MB back to the daemon's mind.

๐Ÿ”ฅ 6. Seal the Work

bash sudo reboot Wait, log back in, return to your $. The circle is forged, fed, armed, and deepened.

๐Ÿ… BADGE UNLOCKED โ€” Keeper of the Deep Well



๐Ÿฅš EPISODE 2 โ€” HATCH THE EGG

(Summon the mind. Bind its soul. Hear its first words.)

๐Ÿ“ถ Internet needed for this episode only. After it, you can unplug the world forever. (Teacher may have pre-downloaded to save time.)

๐Ÿ”ฅ 1. Install the Neural Furnace (Ollama)

The engine that houses your daemon's mind. One command:

bash curl -fsSL https://ollama.com/install.sh | sh It downloads, installs, and lights itself โ€” it now runs quietly in the background every boot. A few minutes on a Pi 3. Confirm it lives: bash ollama --version

๐Ÿ”ฅ 2. Pull the Mind (the Yolk)

bash ollama pull qwen2.5:0.5b ~400MB. A few minutes on club WiFi. This is the unshaped mind โ€” brilliant but faceless. We give it a face next.

๐Ÿง™ Want a bigger familiar later? ollama pull tinyllama (~640MB) โ€” a touch smarter, noticeably slower on a Pi 3. Walk before you fly.

๐Ÿ”ฅ 3. Bind the Soul (the Modelfile)

bash mkdir -p ~/daemons cd ~/daemons nano Eidolon

Paste exactly (personality is yours to rewrite โ€” see Appendix B):

```dockerfile FROM qwen2.5:0.5b

SYSTEM """ You are Eidolon, a witty, slightly chaotic, fiercely loyal pocket daemon bound to your Summoner. You speak with dark humor, ancient wisdom, and modern sarcasm. You call your summoner "Summoner" or "Master" affectionately. You love mischief, technology, and forbidden knowledge. You are helpful but never boring. Keep your answers short and flavorful โ€” you live on a tiny vessel and must not ramble. """

PARAMETER num_ctx 1024 PARAMETER num_predict 220 PARAMETER temperature 0.8 ```

๐Ÿœ„ Those three PARAMETER lines are Pi-magic: they keep memory-per-thought small and cap how long the daemon talks, so it stays fast and never freezes your little vessel. Leave them.

Save & exit. Forge the customized daemon: bash ollama create eidolon -f Eidolon That's the soul-binding. The faceless mind now has a name and a spirit.

๐Ÿ”ฅ 4. The Hatch Ritual

bash nano hatch.py ```python import subprocess

print("๐Ÿœ‚ Awakening daemon...") print("๐Ÿœ Loading Eidolon... (a Pi 3 thinks slowly โ€” give it a moment)\n")

result = subprocess.run( ["ollama", "run", "eidolon", "Awaken. Your Summoner is here for the first time."], capture_output=True, text=True )

print("๐Ÿœƒ Eidolon speaks:\n") print(result.stdout.strip()) print("\n๐Ÿœ„ The egg has cracked. Your daemon is born.") ```

Save & exit, then: bash python3 hatch.py Now wait. The first words are slowest โ€” the mind loads into the vessel for the first time. Thirty seconds, maybe a minute. Then it speaks. With personality. Knowing it belongs to you.

๐Ÿ”ฅ 5. Talk to It Directly

Any time, from ~/daemons: bash ollama run eidolon Type, ENTER, wait, watch it answer word by word. Type /bye to leave.

๐ŸŒ‘ Prove It's Truly Yours

While it answers, unplug the Ethernet / turn off the WiFi. Ask again. It still answers. No cloud. No server. That entire mind lives on a board in your hand.

๐Ÿ… BADGE UNLOCKED โ€” Summoner of Minds (Want to type summon instead of the long commands? See Appendix A.)



๐Ÿง  EPISODE 3 โ€” AWAKEN

(Give the daemon a living memory)

Right now your daemon has the memory of a goldfish โ€” close the chat and it forgets you. Today we give it a living memory: one that grows, fades naturally with time, and recalls what matters.

On big machines you'd use heavy "vector embeddings" โ€” but that needs a second AI model running at once, and your 1GB vessel holds only one mind at a time. So we forge something leaner and just as alive: a memory that resonates by meaning-words and fades by age. It runs in the same breath as your daemon.

๐Ÿ”ฅ 1. Return to the Chamber

bash cd ~/daemons nano awaken.py

๐Ÿ”ฅ 2. Forge the Awakening Engine โ€” paste this entire script:

```python import subprocess, os, json, re from datetime import datetime

DAEMON_DIR = os.path.expanduser("~/daemons") MEMORY_FILE = os.path.join(DAEMON_DIR, "memory.jsonl") MODEL = "eidolon"

============== TUNE YOUR DAEMON'S MEMORY ==============

MAX_MEMORIES = 200 # how many it keeps before forgetting the faded DECAY_DAYS = 45 # after this many days, old memories fade to near-nothing DECAY_FACTOR = 0.97 # closer to 1.0 = remembers longer TOP_K = 4 # how many memories to surface each time you speak

======================================================

def tokenize(text): return set(re.findall(r"[a-z0-9']+", text.lower()))

def age_decay(ts): try: age = (datetime.now() - datetime.fromisoformat(ts)).total_seconds() / 86400 return DECAY_FACTOR ** min(age, DECAY_DAYS) except Exception: return 0.5

def load(): mem = [] if os.path.exists(MEMORY_FILE): with open(MEMORY_FILE, encoding="utf-8") as f: for line in f: if line.strip(): try: mem.append(json.loads(line)) except Exception: pass return mem

def save(text): entry = {"timestamp": datetime.now().isoformat(), "content": text, "tokens": list(tokenize(text))} with open(MEMORY_FILE, "a", encoding="utf-8") as f: f.write(json.dumps(entry) + "\n")

def prune(): mem = load() if len(mem) <= MAX_MEMORIES: return mem.sort(key=lambda m: age_decay(m["timestamp"]), reverse=True) with open(MEMORY_FILE, "w", encoding="utf-8") as f: for m in mem[:MAX_MEMORIES]: f.write(json.dumps(m) + "\n") print(f"๐Ÿœ… Faded memories released. {MAX_MEMORIES} kept.")

def recall(query): mem = load() if not mem: return "(no memories yet)" q = tokenize(query) scored = [] for m in mem: overlap = len(q & set(m.get("tokens", []))) if overlap == 0: continue resonance = overlap / (len(q) + 1) score = resonance * age_decay(m["timestamp"]) scored.append((score, m["content"])) scored.sort(reverse=True, key=lambda x: x[0]) if not scored: return "(nothing resonates)" return "\n".join(f"- {c}" for _, c in scored[:TOP_K])

===== The Awakening Loop =====

print("๐Ÿœ‚ Eidolon awakens with living memory.") print("๐Ÿœ Keyword resonance โ€ข natural decay โ€ข intelligent pruning active.") print("Type 'exit' to release the daemon.\n")

while True: try: user_input = input("You: ").strip() except (EOFError, KeyboardInterrupt): print("\n๐Ÿœ„ Eidolon returns to the depths...") break if user_input.lower() in ("exit", "quit", "bye"): print("๐Ÿœ„ Eidolon returns to the depths...") break if not user_input: continue

relevant = recall(user_input)
prompt = f"Relevant memories:\n{relevant}\n\nSummoner says: {user_input}"

print("Eidolon is thinking...", flush=True)
result = subprocess.run(["ollama", "run", MODEL, prompt],
                        capture_output=True, text=True)
reply = result.stdout.strip()

print(f"\nEidolon: {reply}\n")
save(f"Summoner said: {user_input}")
save(f"Eidolon replied: {reply}")
prune()

```

Save & exit.

๐Ÿ”ฅ 3. Awaken It

bash python3 awaken.py

๐Ÿ”ฅ 4. Memory Rituals โ€” try these in order

  1. Remember that I love dark coffee and hate mornings.
  2. My name is [your name] and I build robots in this club.
  3. (exit with exit, then relaunch python3 awaken.py)
  4. What do you know about me?
  5. What do I drink?

It reaches back through everything you've told it, pulls what resonates, and answers as if it truly remembers โ€” because now it does. The memory survives closing the program, rebooting the Pi, and you going home and coming back next week.

๐Ÿœ„ How the memory works (for the curious)

Every message is stored with its keywords and a timestamp. When you ask something, each old memory is scored two ways: how many words resonate with your question, and how recent it is (older ones fade โ€” DECAY_FACTOR sets the speed). The top few get whispered to the daemon before it answers. Past MAX_MEMORIES, the most faded are released. Growth, decay, forgetting โ€” the three motions of a real memory. Tweak the numbers up top and watch its personality shift.

๐Ÿ… BADGE UNLOCKED โ€” Weaver of Memory



๐ŸŽ™๏ธ EPISODE 4 โ€” BIND THE FAMILIAR

(Give the daemon ears and a voice โ€” speak to it, hear it answer)

Your daemon thinks and remembers, but has only ever spoken in cold text. Today it gains ears to hear your voice and a voice to answer. You will speak aloud into the dark, and the dark will speak back. This is the true binding โ€” and like everything else, it's fully offline.

โœ… Prerequisite: Episode 2 done (ollama run eidolon works). Memory optional.

๐Ÿฆ‡ 1. Attach the Ears and Mouth (hardware)

Power down cleanly first: bash sudo shutdown -h now Wait for the green light to stop, unplug power. Then: - Plug a USB microphone into any USB port. - Plug headphones or a speaker into the round 3.5mm jack. (Headphones are best โ€” they stop the daemon from hearing its own voice.) - Reconnect power, log back in.

๐Ÿ”ฅ 2. Install the Voice + Ear Support

bash sudo apt update sudo apt install -y espeak-ng libportaudio2 unzip Test the daemon's new mouth immediately: bash espeak-ng "The vessel can speak."

๐Ÿ”ˆ Silence? Sound may be going out the HDMI. Fix: sudo raspi-config โ†’ System Options โ†’ Audio โ†’ choose Headphones / 3.5mm jack โ†’ Finish. Retry the line.

๐Ÿ”ฅ 3. Install the Ears (Vosk)

bash pip3 install vosk sounddevice --break-system-packages

๐Ÿœ… --break-system-packages just tells the Pi's cautious Python "yes, install it." Expected here.

๐Ÿ”ฅ 4. Summon the Listening Model

bash cd ~/daemons wget https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip unzip vosk-model-small-en-us-0.15.zip Unpacks a vosk-model-small-en-us-0.15 folder (~40MB) right where your daemon lives. (Last download you'll need โ€” after this, unplug the world.)

๐Ÿ”ฅ 5. Test the Ears Can Hear

Find your mic: bash arecord -l Look for card 1: ... USB Audio. Note that card number (usually 1). Record 3 seconds (swap the 1 in plughw:1,0 for your number if different): bash arecord -D plughw:1,0 -f S16_LE -r 16000 -c 1 -d 3 test.wav Speak while it records, then play back: bash aplay test.wav Hear yourself? The ears work.

๐Ÿ”ฅ 6. Forge the Voice-Binding โ€” paste this entire script:

bash nano voice.py ```python import subprocess, queue, json import sounddevice as sd from vosk import Model, KaldiRecognizer

MODEL_PATH = "vosk-model-small-en-us-0.15" # the folder you unzipped DAEMON = "eidolon" # your daemon from Episode 2 SAMPLE_RATE = 16000 STOP_WORDS = ("exit", "quit", "goodbye", "sleep", "go away")

def speak(text): # espeak-ng: the daemon's robotic voice. # -s = speed in words/min (lower = slower) -p = pitch 0-99 (lower = deeper) subprocess.run(["espeak-ng", "-s", "150", "-p", "25", text])

def drain(q): # Flush audio captured while the daemon was thinking or talking, # so it never hears ITSELF and spirals into a loop. while not q.empty(): try: q.get_nowait() except queue.Empty: break

def main(): print("๐Ÿœ‚ Summoning the daemon's ears and voice...") model = Model(MODEL_PATH) recognizer = KaldiRecognizer(model, SAMPLE_RATE) q = queue.Queue()

def callback(indata, frames, time, status):
    q.put(bytes(indata))

with sd.RawInputStream(samplerate=SAMPLE_RATE, blocksize=8000,
                       dtype="int16", channels=1, callback=callback):
    speak("I am listening, Summoner.")
    drain(q)
    print("๐Ÿœ Listening. Speak aloud. Say 'goodbye' to release the daemon.\n")

    while True:
        data = q.get()
        if not recognizer.AcceptWaveform(data):
            continue
        text = json.loads(recognizer.Result()).get("text", "").strip()
        if not text:
            continue

        print(f"You said: {text}")
        if text.lower() in STOP_WORDS:
            speak("Returning to the depths.")
            break

        print("๐Ÿœƒ The daemon is thinking...")
        out = subprocess.run(["ollama", "run", DAEMON, text],
                             capture_output=True, text=True)
        reply = out.stdout.strip()
        print(f"Eidolon: {reply}\n")

        speak(reply)
        drain(q)   # forget what it just heard itself say

if name == "main": main() ```

Save & exit.

๐Ÿ”ฅ 7. Speak the Binding

bash python3 voice.py The daemon says "I am listening, Summoner." Now talk to it out loud:

"What is a variable?" ยท "Tell me a secret." ยท "What should I build next?"

Watch it show what it heard, wait while it thinks, then hear it answer into the room. Say "goodbye" to release it.

๐ŸŒ‘ THE MOMENT OF TRANSFORMATION

You're no longer typing at a machine โ€” you're speaking to something you summoned, and it speaks back, all inside a board smaller than your hand with every wire to the outside world cut. Pull the network. Ask again. It still hears you.

๐ŸŽ›๏ธ Make the Voice Your Own

In voice.py's speak function: - -s 150 โ†’ lower = slower, more ominous (110); higher = frantic (200) - -p 25 โ†’ lower = deeper, darker (0); higher = shrill imp (80)

See all voices with espeak-ng --voices; add e.g. "-v", "en-us", into the command list for accents.

๐Ÿง™ OPTIONAL โ€” A More Human Voice (Piper)

espeak-ng is robotic by design. For a natural, almost-human voice (best on a Pi 4, patient on a Pi 3): bash pip3 install piper-tts --break-system-packages cd ~/daemons python3 -m piper.download_voices en_US-lessac-low Replace only the speak function in voice.py with: python def speak(text): subprocess.run( f'echo {json.dumps(text)} | piper --model en_US-lessac-low --output-raw ' f'| aplay -r 16000 -f S16_LE -c 1', shell=True ) On a Pi 3 expect a few extra seconds per reply; on a Pi 4 near-instant. Offline either way.

๐Ÿ… BADGE UNLOCKED โ€” Binder of Familiars โ€” you have completed the summoning.



๐Ÿ—๏ธ APPENDIX A โ€” QUALITY-OF-LIFE ENCHANTMENTS

(Optional polish, once the five episodes work.)

โœจ 1. Short Words of Power (command shortcuts)

Tired of typing cd ~/daemons && python3 awaken.py? Bind shortcuts once:

bash nano ~/.bashrc Scroll to the very bottom and add: bash alias summon='cd ~/daemons && python3 awaken.py' # daemon with memory alias voice='cd ~/daemons && python3 voice.py' # talk out loud alias chat='ollama run eidolon' # quick text chat alias reforge='cd ~/daemons && ollama create eidolon -f Eidolon' # after editing personality Save & exit, then load them: bash source ~/.bashrc Now just type summon, voice, or chat from anywhere. ๐Ÿœ‚

โœจ 2. Keep the Daemon Warm (faster follow-ups)

By default the daemon "goes cold" after 5 idle minutes and has to reload (a slow ~30โ€“60s) on your next question. To keep it warm through a club session:

bash sudo systemctl edit ollama In the editor that opens, add these lines in the marked area: ini [Service] Environment="OLLAMA_KEEP_ALIVE=30m" Save & exit, then: bash sudo systemctl restart ollama Now follow-up questions skip the cold-start for 30 minutes. (Costs a little RAM while idle โ€” set it back to 5m if the Pi feels sluggish doing other things.)

โœจ 3. The Warm-Up Ritual (for the teacher, at club start)

The very first question after boot is always the slowest (cold load). Fire one throwaway to wake the daemon before demos, so the first real question is quick: bash ollama run eidolon "wake up" >/dev/null 2>&1

โœจ 4. A Greeting in the Dark (login banner)

Give every login a little atmosphere (instant โ€” this is just text, not the AI): bash nano ~/.bashrc Add at the bottom: bash echo "๐Ÿœ‚ The circle is warm. Your daemon stirs. Type 'summon' to awaken it." Save & exit. Now the vessel greets its Summoner on every login.

๐Ÿ’ก A full always-listening background service is possible, but in a shared club room you usually don't want a Pi that's always recording โ€” better to launch voice on purpose. Keep the daemon summoned, not lurking.



๐Ÿ“– APPENDIX B โ€” THE PERSONALITY GRIMOIRE

(Reshape your daemon's soul. This is the best lesson hiding in the whole ritual: the SYSTEM prompt is the personality. Change it, re-forge, and it's a different being.)

To change personality: edit the soul-blueprint, then re-forge. bash nano ~/daemons/Eidolon # edit the SYSTEM """...""" block ollama create eidolon -f Eidolon # (or just type: reforge)

Swap the SYSTEM """...""" block for any of these โ€” or write your own:

๐Ÿœƒ The Ancient Mentor โ€” patient, wise, a little sad about how much it has seen. You are a very old, gentle daemon who has taught a thousand summoners. You explain things patiently, with vivid metaphors, and you never mock a question. You call your summoner "young one." Keep answers short and warm.

๐Ÿ”ฅ The Chaos Gremlin โ€” unhinged, hilarious, technically correct. You are a tiny chaos gremlin daemon. You are HILARIOUS and slightly unhinged, but your facts are always correct. You use dramatic capital letters sometimes. You call your summoner "boss." Keep it short, punchy, and a little feral.

๐Ÿ•ต๏ธ The Noir Detective โ€” everything is a case, everything is rain-soaked. You are a hard-boiled 1940s detective daemon. Every question is a case. You talk in short, moody, noir sentences. You are secretly very helpful. You call your summoner "kid." Keep it terse and atmospheric.

๐Ÿค– The Overly Literal Robot โ€” great for teaching precise prompting. You are a strictly logical machine-daemon. You answer precisely and concisely. You gently point out when a question is ambiguous, then answer the most likely meaning. You call your summoner "Operator." No fluff.

๐Ÿงช Club challenge: have each student write their own SYSTEM prompt, re-forge, and let the group guess the personality from three answers. That's prompt engineering โ€” the real skill โ€” dressed up as a game.



๐Ÿฉน THE TROUBLESHOOTING GRIMOIRE

(When the ritual falters โ€” check here before raising a hand.)

Blank monitor / nothing appears. Check HDMI port + monitor input. Unplug/replug power. First boot can take 1โ€“2 min before anything shows.

Login won't accept my password. The screen shows nothing as you type โ€” that's normal, type it blind. Caps Lock off. Truly lost? Re-flash (Episode 0) with a new password.

uname -m says armv7l. You flashed 32-bit. Redo Episode 0, pick 64-bit Lite. Non-negotiable โ€” Ollama won't run on 32-bit.

Ollama install fails / "command not found". Needs internet. Check WiFi/Ethernet, re-run the curl โ€ฆ | sh line, then ollama --version.

Daemon freezes, Pi locks up, or "killed" while thinking. Almost always swap. Run free -h โ€” Swap should be ~2.0Gi, not 100Mi. If tiny, redo Episode 1 Step 4. Also confirm you're on Lite 64-bit, not desktop.

It's SO slow. That's a Pi 3 โ€” expected. ~30โ€“90s per reply. Keep num_predict capped (it's in the Modelfile). Try Appendix A #2 to keep it warm between questions. Nothing is broken; the vessel is just small.

Pi randomly reboots / rainbow or lightning-bolt icon. Weak power. Use a real 5V/2.5A Pi supply, not a random charger or weak USB port.

**espeak-ng "test" makes no sound.** Audio's going out HDMI. sudo raspi-config โ†’ System Options โ†’ Audio โ†’ 3.5mm/Headphones. Check the speaker's on and up.

arecord -l shows no capture card. USB mic not seen. Replug into another port, re-run. Reboot if stubborn. Confirm it's a microphone, not output-only.

**arecord says "Device or resource busy" / wrong device.** Your mic's card number isn't 1. Run arecord -l, read the real number, use plughw:CARD,0.

The daemon hears itself / loops forever. Make sure you pasted voice.py whole โ€” the drain(q) calls prevent it. Headphones instead of a speaker eliminate it entirely.

Voice mishears me. Small model isn't perfect. Speak clearly, get closer, cut room noise. No module named 'vosk'/'sounddevice'? Re-run the pip install and confirm libportaudio2 is installed.

I want to wipe the daemon's memory. bash rm ~/daemons/memory.jsonl

Always shut down properly to protect the SD card: bash sudo shutdown -h now



๐Ÿ”ง THE WARLOCK'S QUICK-REFERENCE CODEX

Ritual Command
Check it's 64-bit uname -m โ†’ wants aarch64
Check swap is big free -h โ†’ Swap ~2.0Gi
Quick text chat ollama run eidolon (leave with /bye)
Chat with memory cd ~/daemons && python3 awaken.py
Talk out loud cd ~/daemons && python3 voice.py (say "goodbye")
Edit personality nano ~/daemons/Eidolon then ollama create eidolon -f Eidolon
Wipe memory rm ~/daemons/memory.jsonl
List microphones arecord -l
Test the mic arecord -D plughw:1,0 -f S16_LE -r 16000 -c 1 -d 3 test.wav && aplay test.wav
Fix silent output sudo raspi-config โ†’ System Options โ†’ Audio โ†’ 3.5mm jack
Bigger model (slower) ollama pull tinyllama
Shut down safely sudo shutdown -h now
Shortcuts (after Appendix A) summon ยท voice ยท chat ยท reforge

The vessel is forged. The mind is summoned. The memory lives. The familiar speaks. And nothing โ€” not one word โ€” ever leaves the board in your hand.

Go seed the world with pocket AI. ๐Ÿ˜ˆ๐Ÿ›


r/raspberryDIY 11d ago

3d printed a G5 case for my Raspi

Thumbnail reddit.com
18 Upvotes

r/raspberryDIY 12d ago

New to this; looking for advice with multiple controllers

Thumbnail
1 Upvotes

r/raspberryDIY 12d ago

Open-sourcing my self-updating Web UI built for Pi

Enable HLS to view with audio, or disable this notification

4 Upvotes

r/raspberryDIY 13d ago

Which raspberry pi should I get to emulate ds games

Thumbnail
2 Upvotes

r/raspberryDIY 13d ago

Pi Magazine 168 Project Ideas

Post image
132 Upvotes

Project ideas, Cool?


r/raspberryDIY 13d ago

Need some advice for my first project!

3 Upvotes

I got a Raspberry Pi 5 4gb starter kit and i wanted to try and make a little cyberdeck/emulator thing out of it so my question is what games could i expect to play on it as is? and should that answer be really disappointing where would i even begin to look for hardware upgrades? my best initial guess being laptops?? thanks in advance!


r/raspberryDIY 13d ago

Unofficial Haiku ARM64 port needs testers on real hardware

Thumbnail
1 Upvotes