Brain Fog Insight Companion

A desktop host plus wearable band that reads simple fatigue signals, runs a short intervention, and lets the user see whether anything changed.

Wellness and behavior-support prototype only. Not a medical diagnostic device.

Why this project

Design intent

I started this because brain fog shows up in my own study sessions. The screen is on, I'm at the desk, but reading takes longer and I'm not sure if I need water, a walk, or just more coffee. A watch might show heart rate. A meditation app can run a breathing exercise. Neither answers the boring question: did the break I just took change anything?

The first idea was a single base station that watches a few cheap signals, suggests a short fix when things look off, and keeps measuring afterward. I did not want another phone app next to the laptop. I wanted something I could power on, use without a serial monitor, and leave on the desk between sessions.

What it is for

Brain Fog Insight Companion targets everyday cognitive fatigue, not clinical diagnosis. It runs a small loop: notice a possible slump, try an intervention (40 Hz audio, a voice prompt, a pause), then look at the same signals again. The output I care about is not a perfect score. It is whether something moved after I acted.

I also needed the Fab Academy weekly skills to end up in one object: laser-cut platform, printed shell, custom PCB, networking between boards, and a touch UI that works with no laptop attached. That pushed the form early. One desk unit, one charging spot for the band, not a breadboard demo with a poster.

The direction was clear before midterm. Week 13 is when I wrote the build passes down and admitted integration would take longer than the sensor tests. The goal did not change; the schedule got more realistic.

Cloud voice

Aquarius (cloud AI)

The spoken dialogue path runs on Alibaba Bailian over WiFi: microphone capture, speech recognition, a language model reply, then text-to-speech back through the host speaker. I named the cloud agent Aquarius after the water-bearer sign (水瓶座).

Aquarius is usually drawn as someone pouring water. In that image the water is shared, not hoarded: something stale gets replaced by something that flows again. Brain fog, for me, is the opposite feeling. Thoughts stick. Reading the same line twice still does not stick. The name is a reminder of what I want this voice layer to do: not diagnose me, but pour a little clarity into a static moment. A short question, a plain answer, then back to the sensors.

I split the AI work on purpose. Blink open/closed classification stays on the XIAO ESP32S3 Sense camera board because it is small, repeats every frame, and never leaves the desk. Voice chat needs a bigger model and a network link, so it lives in the cloud. Aquarius handles talk; the local model handles blinks. That split also kept debugging sane when BLE and WiFi fought on one WROOM chip (the C3 bridge fix is in Week 11).

Local eye model

I trained a two-class image model in Edge Impulse (open / closed, 96×96 grayscale, transfer learning). About 2,270 labeled frames from the XIAO camera, export as int8 TFLite, then flash through SenseCraft as the Brainfog model. The XIAO runs inference locally and sends state over UART to the WROOM; no raw video leaves the camera board. Step-by-step screenshots are on Week 18.

How a voice session works

The user presses the left button on the host to start proactive dialogue. The INMP441 microphone records speech, Bailian Fun-ASR turns it into text, the Aquarius agent returns a short reply, and CosyVoice TTS plays it on the MAX98357A speaker path. The cloud app Brainfog insight companion is configured in the Bailian multimodal kit; console screenshots and a breadboard test clip are on Week 18.

I wrote the agent instructions to stay in wellness language: suggest breaks, hydration, pacing, and simple resets. No disease claims, no prescription talk. Aquarius is a desk companion voice, not a clinician. If the sensors and the voice disagree, I trust the sensors for numbers and treat Aquarius as optional spoken coaching.

Brain Fog Insight Companion integrated desktop product
Integrated prototype: 3D printed host shell, laser-cut platform, camera tower, front controls, and wearable charging position.
Presentation

Slide and Video

Fab Academy asks for presentation.png (1920×1080) and presentation.mp4 (about one minute, under 25 MB) in the site root. Mine are linked from Week 20 and embedded below.

Final presentation slide
Summary slide: project name, lab, one product photo, short description, license notice.
One-minute project video. More detail on packaging and live operation is in the Week 16 integration test clip.
What does it do?

Project overview

Brain fog is the everyday name people use for slow thinking, attention drop, eye fatigue, and the feeling that normal work takes more effort than it should. I can feel it, but I usually cannot tell which signal changed first or whether a break actually helped.

This project runs a closed loop on the desk: sense a few simple inputs, show state on the host screen, offer a short intervention, then keep sensing so the user can compare before and after. The loop is sense → estimate → intervene → re-test.

The desktop host handles the screen, speaker, microphone, SD logging, and cloud voice path. A XIAO ESP32S3 Sense on a small tower runs the local eye open/closed model and sends blink state to the host over GPIO. The wearable band sends heart rate and SpO₂ over BLE. A XIAO ESP32-C3 bridge forwards those packets to the host over UART so the WROOM is not doing BLE scan work while WiFi voice is active.

Who has done what beforehand?

Prior art

I looked at HRV papers for stress and fatigue timing, blink-rate papers for sustained attention, and 40 Hz stimulation work starting from Iaccarino et al. (Nature, 2016). I also checked consumer watches, meditation apps, and EEG headbands. They each cover one piece of the problem. None gave me the desk host + wearable + intervention loop I wanted to build with Fab lab tools.

The full reference table and planning notes are on Week 18.

What sources did you use?

References

What did you design?

System design

Mechanical and packaging

I designed the laser-cut platform, camera tower, front control layout, 3D printed host shell, and the front charging position for the wearable. The goal was one base station, not two loose prototypes sitting beside each other. Details and photos are on Week 16.

Electronics

I designed the host PCB in KiCad after the breadboard wiring was stable enough to commit. The board carries the WROOM host stack: display, microphone, SD card, speaker path, buttons, and links to the XIAO S3 eye-state board and the C3 UART bridge. The wearable uses a Beetle ESP32-C6 with a MAX30102 on I2C.

Firmware split

BoardJob
WROOM hostUI, intervention logic, I2S audio, SD logs, WiFi voice client.
XIAO ESP32S3 SenseLocal eye open/closed model; GPIO state to WROOM.
XIAO ESP32-C3BLE scan and UART forward of wearable packets.
Beetle ESP32-C6MAX30102 read and BLE advertisement of HR / SpO₂ / temp.

Interaction

The touch screen shows live vitals and intervention options. The left button starts proactive voice dialogue. The speaker can play 40 Hz audio, SD-card PCM tracks, or cloud TTS replies. I dropped screen flicker at 40 Hz and kept audio-only stimulation to reduce photosensitivity risk.

Materials and cost

Bill of materials

Prices are approximate purchase costs in CNY (June 2026). The full line-item table is on Week 18. Prototype total is about ¥779 for qty 1.

PartQtyPriceSource
ESP32-S3 WROOM host module1¥96Taobao
4.3″ touch screen + SPI adapter1¥56Taobao
XIAO ESP32S3 Sense1¥101Seeed
XIAO ESP32-C3 BLE bridge1¥34Seeed
Beetle ESP32-C6 + MAX30102 wearable1¥195DFRobot
INMP441, MAX98357A, speaker, SD module + 16 GB TF1 set¥124Taobao
LiPo, custom PCB, buttons, Type-C, magnets, wire1 set¥143JLCPCB / Taobao
PLA, plywood/acrylic, small passiveslab stock¥30Chaihuo / lab
Total (prototype)~¥779
What was made?

Parts, processes, and tools

ProcessWhat I made with it
2D design + laser cuttingPlatform base, camera tower, control layout.
3D design + FDM printingHost shell and fit tests for screen and speaker.
Electronics design + PCB milling/productionHost PCB in KiCad; prototype fab and hand solder.
Embedded programmingWROOM, C3 bridge, Beetle, and XIAO S3 firmware.
Interface programmingTouch UI, serial debug, voice pipeline, local eye model path.
NetworkingBLE advertisement wearable link and UART bridge to host.
System integrationPower routing, buttons, charging dock, internal wiring, final assembly.
System integration

How the subsystems connect

  1. Beetle broadcasts BrainFog_Beetle with HR/SpO₂/temp in manufacturer data.
  2. C3 scans and forwards JSON lines to WROOM UART at 115200 baud, plus a BAND,LINK status line.
  3. XIAO S3 Sense sends eye state over GPIO; WROOM never handles raw camera frames.
  4. WROOM runs UI, intervention, I2S audio, SD logging, and Bailian voice over WiFi.

Program flow

Four boards run in parallel. The band reads the pulse oximeter and sends vitals over BLE. The C3 bridge turns those packets into UART lines for the host. The camera board runs the local eye model and sends open/closed state only. The WROOM ties everything together on the touch screen.

A typical session on the host goes: home screen with live data → user starts a 60-second detection → host logs blink rate plus heart rate and SpO₂ once per second → result page with a rule-based Brain Fog score and short advice → optional intervention (40 Hz audio and green flash for about three minutes) → sensors keep running so the user can compare before and after. The left button can start a cloud voice session at any time. Past results can be saved to the SD card.

More detail on pages, intervention steps, and band protocol is on Week 16 and Week 11.

The hardest integration change was moving BLE off the WROOM. Direct BLE plus WiFi voice on one ESP32 made the host stall. The C3 bridge fixed that without changing the packet format. On the wearable, a 100 µF cap on 3.3 V stopped brownout resets during BLE startup on battery.

Integration test before closing the platform base. Power, screen, and wiring checked in final positions.
Evaluation

What worked and what did not

What worked

What did not

How I judged success

I treated the Fab prototype as successful when it ran as one system, not as separate demos. Minimum bar: host powers up, eye state arrives from the XIAO S3, wearable data arrives through the C3 bridge, the screen shows useful state, audio intervention plays, and one voice exchange completes without rewiring.

Implications

What are the implications?

The useful part is not a perfect brain-fog score. It is a cheap desk loop that helps someone notice fatigue early and try a short intervention without opening a clinical workflow. That matters for students and desk workers who feel the symptom often but do not have EEG gear at home.

The same architecture could be reused for stress logging or focus breaks by swapping sensors and intervention rules. Any health-facing version would need clearer validation, consent design, and professional review. Until then I keep calling it a wellness-support build.

License, dissemination, income plan, and remaining tasks are documented on Week 19.

Files

Design and source files

Weekly work

Relevant assignment pages

Acknowledgements

Work by others

License

Project license

Code: MIT License. Firmware and software may be reused with the copyright notice preserved.

Documentation, CAD, PCB docs, photos, and videos: CC BY-NC-SA 4.0.
creativecommons.org/licenses/by-nc-sa/4.0