Raspberry Pi 5 as a Local LLM Server

A practical, measured look at running local language models on a Raspberry Pi 5: which model sizes and quantization levels are realistic, what power and thermal limits to expect, and when a mini-PC is the better call.

Raspberry Pi Observability at Home

Building home observability on Raspberry Pi without drowning the SD card: what to collect, what to skip, and how to keep the stack lighter than the workloads it watches.

Debugging Noisy I2C Buses on Arduino

I2C works great on a breadboard demo and then starts failing once real cable lengths and motor noise show up. I now treat I2C reliability as a physical-layer problem first and a software problem second.

Low-Power Sleep Patterns for Arduino Field Nodes

Battery-powered Arduino projects fail in two ways: unstable wake cycles and hidden current draw. I start by listing every component in active and sleep state, then I budget power in milliamp-hours before writing firmware.

Building a Modbus Greenhouse Controller with Arduino

For greenhouse automation, I wanted a protocol that survives long cable runs and noisy environments. Modbus RTU over RS485 is still one of the best options for this type of deployment.

Reliable SD Card Data Logging on Arduino

Writing to SD cards looks straightforward until you hit power interruptions. I lost enough logs to treat write integrity as a first-class feature. My format is append-only CSV with periodic file sync.

Tuning PID Motor Control on Arduino Without Guesswork

PID tuning by trial-and-error is slow and inconsistent. I now tune from measured step responses and keep every run logged. First, I characterize the motor and load using open-loop PWM sweeps.

Versioned EEPROM Settings on Arduino

As firmware evolves, stored settings formats change. If EEPROM layout is not versioned, upgrades can silently load garbage and produce hard-to-diagnose behavior.

Raspberry Pi Kiosk Mode for Reliable Signage

A kiosk device needs predictable behavior after power cuts and network drops. My Raspberry Pi setup starts from a minimal OS image with only the packages required for display and remote maintenance.

Running an MQTT Edge Broker on Raspberry Pi

Cloud-only IoT pipelines are brittle during connectivity outages. I prefer running a local MQTT broker on Raspberry Pi and forwarding data upstream when possible.

A Raspberry Pi Camera Timelapse Pipeline

Timelapse projects become messy when image capture, storage cleanup, and rendering are manual. On Raspberry Pi, I run the whole flow as scheduled services.

Raspberry Pi Homelab Observability Stack from Zero

Most Raspberry Pi projects run fine until they do not. Without metrics and logs, troubleshooting becomes guesswork. This post describes a minimal but production-like observability stack that fits on Pi hardware.

Rust Tokio Gateway Architecture for Device Fleets

A gateway service sits between unreliable devices and downstream reliable infrastructure. If the gateway collapses under burst load or network instability, the whole system suffers.

Building Fast Serial CLI Tools in Rust

Serial debugging is still central in embedded work, and Rust is excellent for building reliable terminal tooling. I structure serial utilities as pipelines: read bytes, frame messages, parse the protocol, then route structured events out.

Rust no_std Patterns for Embedded Systems

Writing `no_std` Rust firmware requires different habits than server Rust. Memory is constrained, timing is strict, and panic strategy must be deliberate.

Embedded State Machines in Rust

Many firmware bugs are actually invalid state transitions. Rust helps by making state explicit and hard to misuse, modelling each controller state as an enum variant with transitions that consume the old state and return the next one.

A Lightweight IoT API in Rust with Axum

For small IoT backends, Axum provides enough structure without heavy framework overhead. My baseline service exposes ingestion, latest status, and historical query endpoints.

Error Handling Patterns in Rust: anyhow + thiserror

A common mistake in Rust projects is mixing application and library error styles. I use `thiserror` for typed library errors and `anyhow` for top-level binaries. Libraries expose specific variants so callers can branch by cause.

Rust Cross-Compilation for ARM Targets

Cross-compiling Rust is easy to start and hard to standardize across teams. I treat toolchains as part of the project, not local machine state. Target triples, linker config, and environment variables live in versioned project files.

Testing Hardware Abstractions in Rust

Hardware abstraction layers are where embedded code often becomes difficult to test. I design traits around capabilities, then keep business logic independent from concrete drivers.

Raspberry Pi Edge AI Camera Pipeline: Practical Design

Running AI inference on Raspberry Pi is possible, but stable operation needs careful pipeline design. Most failures come from bottlenecks in capture, preprocessing, or storage, not from the model itself.

Special Project: RiverSentinel Water Quality Mesh

RiverSentinel was designed for environmental monitoring teams that need faster incident detection than manual sampling can provide, but also need evidence quality high enough for response workflows.

ESP32 Wi-Fi Recovery Patterns for Unstable Networks

Many ESP32 projects run perfectly on a developer desk and collapse once deployed in apartments, offices, or industrial spaces with noisy Wi-Fi conditions. The main mistake is treating every disconnect as an exceptional event.

Special Project: AquaForge Aquaponics Digital Twin

AquaForge started as a home-scale aquaponics controller and evolved into a real digital twin platform. The core idea was to move from reactive control to predictive operation: detect chemistry drift early and simulate intervention outcomes.

Home Assistant + MQTT Device Modeling Done Right

The quickest way to create a messy smart home stack is to publish raw topics without a clear model. Home Assistant integration works best when device identity, telemetry, and commands are explicitly designed.

Special Project: Frostwatch Vineyard Frost Defense Network

Frostwatch is one of the most practical systems I have built: a distributed frost-risk platform for vineyards where timing matters more than dashboards. If you detect frost risk 20 minutes too late, the damage is already done.

LoRa Sensor Node Power Budgeting in Practice

LoRa is chosen for range and efficiency, but many nodes still miss battery targets by a large margin. The reason is usually poor budgeting assumptions and missing field validation.

Linux Edge Device Hardening Checklist

Edge devices frequently run with broad network exposure and weak maintenance. Security hardening has to be practical, repeatable, and automation-friendly.

MQTT Topic Design and Governance for Growing Projects

MQTT starts simple and becomes chaotic quickly if naming, ownership, and evolution rules are not defined. Topic governance is not bureaucracy. It is how teams avoid accidental coupling and fragile integrations.

IoT Telemetry Schema Versioning Strategies

Telemetry schema changes are inevitable: new sensors, renamed fields, unit corrections, derived metrics. If evolution is unmanaged, dashboards break silently and analytics lose trust.