
Smu main
PaulBichl/vibepcb-smu
VibePCB example: 4-quadrant SMU (+-30 V / +-1 A, USB-C PD, Ethernet) designed with an LLM

LOAF (Local Observations and Atmospheric Forecasting) is an open source hyperlocal weather forecasting combining gridded forecasts with local station observations using machine learning and open-source hardware.
U anemometer is an open-source printed circuit board by PandoroML, from the PandoroML/LOAF repository on GitHub, published under the MIT licence. It is a 4-layer board of 46 × 46 mm with 144 parts on 131 nets, routed with 1,277 tracks and 201 vias.
It is built around the STM32L476RGT6, LMV358B-VR and BMI270, with the TMUX4052PWRQ1, XC6206P332MR and 1.25T-14AW among its other parts. Its parts include 46 capacitors, 41 resistors, 21 diodes, 8 ICs and 2 transistors. It belongs with the sensors and measurement boards and the STM32 boards of this library.
Open source hyperlocal weather forecasting combining machine learning forecast models with local station observations.
If you answered yes to all of the above, then LOAF is for you.
Part of Pandoro — Bread Board Foundry's open science ML tools for climate and environmental research.
This is definitely a work in progress, so stay tuned!
┌─────────────────┐ ┌─────────────────────────────────────┐ ┌─────────────────┐
│ DIY Sensors │ ──── │ Raspberry Pi │ ──── │ Home Assistant │
│ (Anemometer, │ │ • Data storage │ │ │
│ Temperature, │ │ • ML forecast processing │ │ Weather entity │
│ etc.) │ │ • Local prediction generation │ │ integrations │
└─────────────────┘ └─────────────────────────────────────┘ └─────────────────┘Data Flow:
The first of the ultrasonic transducers have arrived!
Standard weather forecasts operate on 3km grids. That resolution can't capture the wind patterns at your specific site—whether it's a backyard wind turbine, a fire-prone hillside, or a remote research station.
Recent ML research shows that fusing gridded forecasts with local sensor data via transformers can reduce prediction error by up to 80%. Commercial services like Tomorrow.io offer this, but they're proprietary and subscription-based. The academic code exists, but there's no easy way to go from "I have a Raspberry Pi" to "I have an improved local forecast."
LOAF bridges that gap: open source hardware, open source models, no vendor lock-in. Build a sensor, train a model for your region, run inference locally.
LOAF generates hyperlocal weather forecasts for locations without nearby weather stations by combining:
Built on research from MIT Earth Intelligence Lab:
LOAF uses open source hardware with no vendor lock-in:
See the full documentation here: https://pandoroml.github.io/LOAF/
The pipeline is: download data → train a model → serve forecasts over REST. Commands
below assume you're in the repo root and have installed the package (pip install -e ".[dev]").
They use config/arlington.yaml (DCA, IAD, BWI, HEF, MRB stations); swap in
config/seattle.yaml for the PNW region instead.
loaf-pipeline chains download → train → serve for you:
loaf-pipeline --config software/config/arlington.yaml \
--start-date 2024-10-01 --end-date 2024-12-31 --year 2024 --port 5000It blocks on the running server at the end, so leave it running and query it from another terminal (see step 4 below). Useful flags for resuming a partial run:
--skip-download — reuse whatever's already in data/--skip-train --checkpoint <path> — skip straight to serving an existing checkpoint--no-serve — stop after training, print the checkpoint path, and exit--use-hrrr / --use-era5 — also download and fuse gridded forecasts (see step 1)Run loaf-pipeline --help for the full flag list (it's the union of the three commands below).
Run loaf-report-summary --runs-dir runs after any batch of training runs to summarize results all modeling attempts in /runs.
Useful if you want to inspect data between steps, retrain from already-downloaded data, or swap in a different checkpoint without retraining.
1. Download station observations (IEM/ASOS — no registration required):
loaf-download-iem --config software/config/arlington.yaml \
--start-date 2024-10-01 --end-date 2024-12-31This is the minimum needed to train. Optionally fuse gridded forecasts too — HRRR needs no
auth (AWS S3), ERA5 needs a free CDS API key in
~/.cdsapirc:
loaf-download-hrrr --config software/config/arlington.yaml \
--start-date 2024-10-01 --end-date 2024-12-31
loaf-download-era5 --config software/config/arlington.yaml \
--start-year 2024 --end-year 2024All three write into data/ in the current directory by default.
2. Train a model (MPNN or ViT backbone):
loaf-train --config software/config/arlington.yaml --year 2024
# add --model-type vit, --epochs N, --use-hrrr, or --use-era5 as neededWrites best.pt / last.pt checkpoints and a train_log.csv to runs/arlington_<timestamp>/.
3. Serve forecasts over REST:
loaf-serve --checkpoint runs/arlington_<timestamp>/best.pt --port 50004. Query it (e.g. Reagan National Airport, Arlington VA):
curl "http://localhost:5000/api/forecast?lat=38.8512&lon=-77.0402"
curl http://localhost:5000/api/forecast/all # every station in the graph
curl http://localhost:5000/healthEach response includes multi-horizon u/v wind predictions plus derived wind_speed and
wind_direction, ready to wire into a Home Assistant REST sensor.
MIT
If you find this project useful for your research or applications, please kindly cite using this BibTeX::
@software{Johnson_LOAF_Local_Observations_2026,
author = {Johnson, Keenan and Kim, Susie},
month = jan,
title = {{LOAF (Local Observations and Atmospheric Forecasting)}},
url = {https://github.com/PandoroML/LOAF},
year = {2026}
}Built by Bread Board Foundry
The first pcb went to fab for our ultrasonic anemometer build inspired by QingStation. The first version is very similiar to the Ultrasonic Anemometer in QingStation, but it simplified by removing parts we don't need for now and updated to included parts that are easily purchaseable, as some parts in Qing have gone end of life.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | 1N4148WS T4 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOD-323_L1.8-W1.3-LS2.5-RD | D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19 |
| 15 | 10K | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0402 | R2, R13, R14, R17, R18, R19, R20, R22, R23, R27, R28, R29, R37, R38, R41 |
| 12 | 100nF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0402 | C8, C17, C18, C19, C21, C26, C33, C35, C40, C46, C51, C52 |
| 10 | 100K | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0402 | R3, R8, R9, R11, R15, R25, R30, R34, R35, R39 |
| 10 | 2.2uF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0603 | C25, C27, C28, C29, C30, C37, C38, C41, C42, C43 |
| 9 | 4.7K | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0402 | R12, R16, R21, R26, R31, R32, R33, R36, R40 |
| 5 | 4.7uF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0603 | C4, C14, C16, C36, VBAT1 |
| 4 | 1.25T-1-4A | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:CONN-TH_1.25T-1-4A | CAN1, I2C1, UART1, UART2 |
| 4 | 1.25T-2P-DP | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:CONN-TH_2P-P1.25_1.25T-2P-DP | EAST1, NORTH1, SOUTH1, WEST1 |
| 4 | 10pF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0402 | C3, C5, C6, C7 |
| 4 | 1uF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0603 | C24, C32, C34, C44 |
| 4 | 1uF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0402 | C1, C2, C13, C22 |
| 3 | 10nF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0402 | C9, C15, C23 |
| 3 | 33 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0402 | R4, R5, R24 |
| 2 | 1K | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0603 | R6, R7 |
| 2 | 4pad | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:PAD 4 | SWD1, UART3 |
| 2 | B3U-1000P | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:KEY-SMD_B3U-1000PM | RST1, SW1 |
| 2 | MAX3222EIPWR | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:TSSOP-20_L6.5-W4.4-P0.65-LS6.4-BL | U4, U6 |
| 2 | SI2301CDS-T1-GE3 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOT-23-3_L3.0-W1.7-P0.95-LS2.9-BR | Q1, Q2 |
| 1 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:Pad_e1544 | ||
| 1 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:Pad_e1542 | ||
| 1 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:Pad_e1543 | ||
| 1 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:Pad_e1541 | ||
| 1 | 0 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0402 | R10 |
| 1 | 1.25T-8A_C722648 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:CONN-TH_1.25T-8A | SPI1 |
| 1 | 100nF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0603 | C31 |
| 1 | 100uF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:CAP-SMD_L3.5-W2.8 | C12 |
| 1 | 120 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:R0603 | R1 |
| 1 | 22pF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0402 | C39 |
| 1 | 2328702-8 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:23287028 | DEBUG1 |
| 1 | 25M | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:OSC-SMD_4P-L3.2-W2.5-BL | X2 |
| 1 | 32.768KHz | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:OSC-SMD_L2.0-W1.2 | X1 |
| 1 | 4.7uF | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:C0402 | C45 |
| 1 | 47346-0001 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:MICRO-USB-SMD_47346-0001 | USB1 |
| 1 | B2B-XH-A-GU | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:CONN-TH_B2B-XH-A-GU | BAT1 |
| 1 | B5819W_C8598 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOD-123_L2.8-W1.8-LS3.7-RD | D3 |
| 1 | BMI270 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:LGA-14_L3.0-W2.5-P0.50-BL | U9 |
| 1 | KT-0603R | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:LED0603-R-RD | LED2 |
| 1 | LMV358B-VR | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:MSOP-8_L3.0-W3.0-P0.65-LS5.0-BL | U7 |
| 1 | NUP1105LT1G | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR | D1 |
| 1 | SDCARD MOLEX 1040310811 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:1040310811 | SD1 |
| 1 | SN65220DBVR | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BR | D2 |
| 1 | STM32L476RGT6 | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:LQFP-64_L10.0-W10.0-P0.50-LS12.0-BL | U2 |
| 1 | TCAN330GDCNR | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOT-23-8_L3.0-W1.7-P0.65-LS2.8-BL | U1 |
| 1 | TMUX4052PWR | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:TSSOP-16_L5.0-W4.4-P0.65-LS6.4-BL | U5 |
| 1 | XC6206P332MR | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR | U3 |
| 1 | XL-1608UBC-06A | ProDoc_1-PCB_PCB_2021-01-26_22-01-27_2026-01-16:LED0603-R-RD | LED1 |
The 141 most common of 144 parts.
It measures 46 × 46 mm and has 4 copper layers, 1.6 mm thick.
144 parts, built around the STM32L476RGT6, LMV358B-VR, BMI270 and TMUX4052PWRQ1. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the PandoroML/LOAF repository on GitHub, at the commit this page was made from: the board is hardware/anemometers/ultrasonic/pcb/u_anemometer.kicad_pcb and its schematic hardware/anemometers/ultrasonic/pcb/1_mcu.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

PaulBichl/vibepcb-smu
VibePCB example: 4-quadrant SMU (+-30 V / +-1 A, USB-C PD, Ethernet) designed with an LLM

PubInv/high-amp-controller-board
A PCB assembly for controlling up to 60 amps of power for electolysis of electroplating

ToonVanEyck/OpenFlap
The OpenFlap project aims to create a open source, affordable split-flap display for the makers and tinkerers of the world.

JasonHEngineering/DIY-Robot-Arm-V3
1) Along with using with TMC2209 motor drivers, I have removed R8, R15, R16, R17, R18, R19 because the R value was accidentally too high. I have shorted R8, R16, R17, and left open R15, R18, R19.

schrodlm/nxp_hal
In this assignment the target platform changes from the STM32F407 to the NXP S32K118, an Arm Cortex‑M0+ microcontroller from the S32K1xx automotive family.

aaronsilinskas/aura-prototype
A monorepo to prototype Aura Game Engine core features.

deltabeard/DBGC
A Game Boy cartridge using the Raspberry Pi RP2040 with RTC and MBC support.

eurovibes/rack-ser-adapter
rack-ser-adapter is provided under the terms of the CERN-OHL-S license version 2 as provided in the LICENSES/CERN-OHL-S-2.0 file.