Skip to content

feat: add blog post — Building FOFOCA: An Open-Source AI Robot with ESP32, ESP8266, and Edge AI#703

Open
thinkneo-ai wants to merge 533 commits intoespressif:mainfrom
thinkneo-ai:blog/fofoca-esp32-ai-robot
Open

feat: add blog post — Building FOFOCA: An Open-Source AI Robot with ESP32, ESP8266, and Edge AI#703
thinkneo-ai wants to merge 533 commits intoespressif:mainfrom
thinkneo-ai:blog/fofoca-esp32-ai-robot

Conversation

@thinkneo-ai
Copy link
Copy Markdown

Summary

  • New blog article: Building FOFOCA: An Open-Source AI Robot with ESP32, ESP8266, and Edge AI
  • ESP32 firmware for real-time motor control (PWM via HW130), sensor polling (HC-SR04, DHT22, PIR), Bluetooth Serial link to Raspberry Pi 5, and MQTT telemetry publishing
  • ESP8266 firmware driving a 0.96" SSD1306 OLED status display, subscribing to MQTT topics via Mosquitto for live robot state, active task, battery level, and AI model in use
  • Full system architecture: RPi5 (brain) + ESP32 (physical control) + ESP8266 (display) + Dell R210 (edge AI server with NVIDIA Nemotron Nano 8B) + ThinkNEO (AI governance)
  • Complete Bill of Materials, wiring reference, MQTT topic map, and ASCII architecture diagram
  • Author entry for Fabio Rosa (ThinkNEO) added

Context

FOFOCA (Fully Operational Feline-free Omniscient Companion Assistant) is an autonomous household robot operating 24/7 in a residential environment. It is the first public study case for ThinkNEO, an AI governance platform and NVIDIA Inception member. The article focuses specifically on the Espressif components (ESP32 + ESP8266) and their integration with the broader system.

Checklist

  • Article follows Espressif Developer Portal structure and tone
  • Frontmatter includes title, date, tags, authors, summary
  • Author files created (content + data JSON)
  • Code examples are complete and compilable
  • All images are referenced but not yet included (WebP format needed — will add featured image on review)
  • Featured image (featured.webp) — to be provided

Note

Author avatar image (assets/img/authors/fabio-rosa-thinkneo.webp) and article featured image (featured.webp) will be added in a follow-up commit once the image assets are prepared in WebP format as required by the portal guidelines.

🤖 Generated with Claude Code

marekmatej and others added 30 commits June 12, 2025 16:30
Fix address typo in the images.

Signed-off-by: Marek Matej <marek.matej@espressif.com>
…rtcaddr

esp32 memory map: fix rtc iram addr
…ad_recognition

Sync Merge: blog/add_espdl_touchpad_recognition
* Added the Espressif Summit Brazil event

* Apply suggestions from code review

Co-authored-by: Euripedes <rocha.euripedes@gmail.com>
Co-authored-by: Tiago Medicci Serrano <tiago.medicci@gmail.com>

* Changes to the summary and added the link for registration

---------

Co-authored-by: Euripedes <rocha.euripedes@gmail.com>
Co-authored-by: Tiago Medicci Serrano <tiago.medicci@gmail.com>
The article about the concept called Simple Boot that allows to make
single image builds for the ESP32 family of microcontrollers.

Signed-off-by: Marek Matej <marek.matej@espressif.com>
Co-authored-by: Marek Matej <marek.matej@espressif.com>
…io_effects

Sync Merge: blog/brief_on_esp_audio_effects
…rol-sensing

feat: blogpost: NuttX motor control and sensing part 2/2 (imu and wir…
…tion

Sync Merge: blog/add_cdp_introduction
…e-july25

Updated the featured articles for July 2025
…duction

Sync Merge: blog/update_cdp_introduction
…fication-updates

blog: RED-DA compliance part 2
FBEZ and others added 13 commits April 7, 2026 08:18
…c-add-s3-for-purdue

Sync Merge: workshop/esp-idf-basic-add-s3-for-purdue
…onment (replacement for espressif#669) (espressif#692)

* Version 1.5.1 - after rearrangement of GitHub repositories

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

missing comma added

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

* Version 1.5.2 - changes after review of @f-hollow

* Update content/blog/2026/04/cpp-components-for-esp-idf/index.md

Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>

---------

Co-authored-by: Christoph.Oberle.ext <christoph.oberle.ext@shbversicherung.de>
Co-authored-by: ESP-Kirill <f-hollow@yandex.ru>
…ion_based_on_tflite

Sync Merge: docs/gesture_recognition_based_on_tflite
…erver_gif

Sync Merge: blog/update_doc_mcp_server_gif
* Added Maker Faire event and updated the upcoming event on the landing page

* Fix underscore in filename

* Apply 2 suggestion(s) to 1 file(s)

Co-authored-by: Kirill Chalov <kirill.chalov@espressif.com>

* Changed the date and location format

---------

Co-authored-by: pedrominatel <pminatel@gmail.com>
Co-authored-by: Pedro Minatel <pedro.minatel@espressif.com>
Co-authored-by: Kirill Chalov <kirill.chalov@espressif.com>
* feat: add author Fabio Rosa and related blog post on ESP32 TagoTip cloud connectivity

* chore: address review - move article to April, update date, remove showAuthor
…SP32, ESP8266, and Edge AI

New article covering the FOFOCA autonomous household robot project:
- ESP32 as real-time physical controller (motor PWM, sensors, Bluetooth)
- ESP8266 as MQTT-driven OLED status display
- Full system architecture with edge AI (Nemotron Nano 8B)
- Complete BOM, wiring reference, and firmware examples
@pedrominatel pedrominatel added the needs review Needs someone to be assigned to review label Apr 17, 2026
- Update article date from 2026-04-15 to 2026-04-18 (CI requires present/future date)
- Rename author from 'Fabio Rosa' to 'Fabio Bastos' (correct name)
- Rename author files: fabio-rosa-thinkneo → fabio-bastos-thinkneo
- Update LinkedIn URL to correct profile
{
"name": "Fabio Bastos",
"type": "partner",
"image": "img/authors/fabio-bastos-thinkneo.webp",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't forget to upload your author image.

Comment on lines +30 to +57
```
┌─────────────────────────────────────────────────────────────────┐
│ ThinkNEO Control Plane │
│ AI governance, routing, audit, guardrails │
└──────────────────────────┬──────────────────────────────────────┘
│ HTTPS (API gateway)
┌──────────────────────────▼──────────────────────────────────────┐
│ Dell R210 — Edge Server │
│ Nemotron Nano 8B (Ollama) · ChromaDB · PostgreSQL · MinIO │
│ FastAPI · Mosquitto (MQTT broker) · Grafana │
└────────┬────────────────────────────────────┬───────────────────┘
│ REST API (FastAPI) │ MQTT (Mosquitto)
┌────────▼────────────┐ ┌──────────▼──────────────────┐
│ Raspberry Pi 5 │ │ ESP8266 — Status Display │
│ Brain: vision, │ │ OLED 0.96" SSD1306 │
│ speech, decisions, │ Bluetooth │ Subscribes to robot/status │
│ orchestration ├────────────┤ Shows: state, task, │
│ 8 GB RAM │ Serial │ battery, AI model │
└────────┬────────────┘ └─────────────────────────────┘
│ Bluetooth Serial
┌────────▼────────────────────────────────────────────────────────┐
│ ESP32 — Physical Controller │
│ Tank tread motors (PWM via HW130 driver) │
│ Ultrasonic sensor (HC-SR04) · Temperature (DHT22) │
│ PIR motion sensor · Battery voltage (ADC) │
│ Telemetry publisher (MQTT) │
└─────────────────────────────────────────────────────────────────┘
```
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can improve the render if you decrease line spacing and line up the vertical bars on the right:

Suggested change
```
┌─────────────────────────────────────────────────────────────────┐
│ ThinkNEO Control Plane │
│ AI governance, routing, audit, guardrails │
└──────────────────────────┬──────────────────────────────────────┘
│ HTTPS (API gateway)
┌──────────────────────────▼──────────────────────────────────────┐
│ Dell R210 — Edge Server │
│ Nemotron Nano 8B (Ollama) · ChromaDB · PostgreSQL · MinIO │
│ FastAPI · Mosquitto (MQTT broker) · Grafana │
└────────┬────────────────────────────────────┬───────────────────┘
│ REST API (FastAPI) │ MQTT (Mosquitto)
┌────────▼────────────┐ ┌──────────▼──────────────────┐
│ Raspberry Pi 5 │ │ ESP8266 — Status Display │
│ Brain: vision, │ │ OLED 0.96" SSD1306 │
│ speech, decisions, │ Bluetooth │ Subscribes to robot/status │
│ orchestration ├────────────┤ Shows: state, task, │
│ 8 GB RAM │ Serial │ battery, AI model │
└────────┬────────────┘ └─────────────────────────────┘
│ Bluetooth Serial
┌────────▼────────────────────────────────────────────────────────┐
│ ESP32 — Physical Controller
│ Tank tread motors (PWM via HW130 driver) │
│ Ultrasonic sensor (HC-SR04) · Temperature (DHT22) │
│ PIR motion sensor · Battery voltage (ADC) │
│ Telemetry publisher (MQTT) │
└─────────────────────────────────────────────────────────────────┘
```
<pre style="line-height: 1.1;">
┌─────────────────────────────────────────────────────────────────┐
│ ThinkNEO Control Plane │
│ AI governance, routing, audit, guardrails │
└──────────────────────────┬──────────────────────────────────────┘
│ HTTPS (API gateway)
┌──────────────────────────▼──────────────────────────────────────┐
│ Dell R210 — Edge Server │
│ Nemotron Nano 8B (Ollama) · ChromaDB · PostgreSQL · MinIO
│ FastAPI · Mosquitto (MQTT broker) · Grafana
└────────┬────────────────────────────────────┬───────────────────┘
│ REST API (FastAPI) │ MQTT (Mosquitto)
┌────────▼────────────┐ ┌──────────▼──────────────────┐
│ Raspberry Pi 5 │ │ ESP8266 — Status Display │
│ Brain: vision, │ │ OLED 0.96" SSD1306 │
│ speech, decisions, │ Bluetooth │ Subscribes to robot/status │
│ orchestration ├────────────┤ Shows: state, task, │
│ 8 GB RAM │ Serial │ battery, AI model │
└────────┬────────────┘ └─────────────────────────────┘
│ Bluetooth Serial
┌────────▼────────────────────────────────────────────────────────┐
│ ESP32 — Physical Controller │
│ Tank tread motors (PWM via HW130 driver) │
│ Ultrasonic sensor (HC-SR04) · Temperature (DHT22) │
│ PIR motion sensor · Battery voltage (ADC) │
│ Telemetry publisher (MQTT) │
└─────────────────────────────────────────────────────────────────┘
</pre>

@thinkneo-ai
Copy link
Copy Markdown
Author

Hi @f-hollow,

Thanks again for the careful review — the feedback on both the author
metadata and the ASCII diagram was valuable.

I need to put this PR on hold indefinitely. Company priorities have shifted
and I can't commit to a timeline for completing the physical build that
would back this article properly.

I'd rather pause this with integrity than rush something to merge that
isn't fully validated on real hardware.

Happy to convert the PR to Draft or close it — whatever keeps the portal's
workflow cleanest on your end. Just let me know your preference and I'll
act accordingly.

If and when I'm able to return to this, I'll ping you here.

Really appreciate the engagement and the time you put in.

Best,
Fabio

@thinkneo-ai thinkneo-ai marked this pull request as draft April 24, 2026 09:56
@thinkneo-ai
Copy link
Copy Markdown
Author

Quick follow-up, @f-hollow

After a couple of hours of thinking about this properly, I found a
better path than an indefinite pause.

I genuinely love this kind of hands-on work (soldering, wiring,
debugging ESP32 on a Saturday — it's what got me into this field).
But honestly, my calendar this quarter has turned into a wall of
partnership meetings, enterprise prospecting, and platform work that
I can't step away from: Anthropic, NVIDIA, Tencent Cloud, Yahboom, and
a few others, all in parallel.

So rather than keep this paused, I'm contracting a professional maker
to execute the physical build exactly as the article describes. I'll
provide the full build spec, firmware skeleton, and acceptance
criteria; they deliver the assembled robot with photos and video.
Same architecture, same integrity — just not my hands on the
screwdriver this round.

Realistic timeline: a few weeks once the maker is engaged and
components are sourced. I'll keep the PR in Draft until then and ping
you the moment the build is validated and ready for the final commits
(author image, featured image, ASCII diagram suggestion accepted).

Thanks again for being patient with the iterations here. Really glad
this piece will land on the portal when it's right.

Best,
Fabio

@georgik
Copy link
Copy Markdown
Collaborator

georgik commented Apr 27, 2026

Side note: ESP8266 is NRND https://products.espressif.com/#/product-selector?names=&filter={%22Series%22:[%22ESP8266%22]}

Consider upgrading to C3 or other more modern version. Even John Teel mentions it in his video: https://youtu.be/igQEP52DvfU?si=afmOiTRNTRtNTqED&t=39

@thinkneo-ai
Copy link
Copy Markdown
Author

@georgik thanks for the heads-up — appreciated, and the John Teel reference is solid.

Honest context: this article documents the FOFOCA v1 reference architecture — the open hardware design and software stack the project is built around. The full physical assembly is being coordinated through a manufacturing partner, and the article is intended as the design reference rather than a finished-build photo essay. I've just pushed an update to the post to make this framing explicit and to reflect Espressif's NRND guidance on ESP8266.

That said, your point lands cleanly for what comes next:

FOFOCA v2 is already in motion — pivoting the chassis to a Yahboom ROSMASTER M3 Pro with Jetson Orin onboard, and a refresh of the supporting microcontrollers toward the ESP32-C3 family. I'll write v2 up as a follow-up post when the new build is running.

Thanks again for the review.

@thinkneo-ai
Copy link
Copy Markdown
Author

@f-hollow author image is now committed at assets/img/authors/fabio-bastos-thinkneo.webp, and the diagram suggestion is applied (wrapped in

 with the alignment corrections). Latest commit: 120bd52. Thanks for the review.

@thinkneo-ai thinkneo-ai marked this pull request as ready for review April 28, 2026 15:32
The "Check article details" workflow requires the frontmatter date to be
today or in the future. Updated from 2026-04-28 to 2026-04-30.
@github-actions
Copy link
Copy Markdown

🎉 A preview for this PR is available at: https://preview-developer.espressif.com/pr703/

Copy link
Copy Markdown
Collaborator

@f-hollow f-hollow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@thinkneo-ai Thank you for updating the article!

Please also add a feature image that will show up at the top of the article.


This article documents the FOFOCA v1 reference architecture — the open hardware design and software stack the project is built around. Physical assembly is being coordinated through a manufacturing partner; the article serves as the design reference, not a finished-build photo essay.

A v2 build is already in motion, pivoting the chassis to a Yahboom ROSMASTER M3 Pro with Jetson Orin onboard, and refreshing the supporting microcontrollers toward the ESP32-C3 family for new builds (per Espressif's NRND guidance on ESP8266). v2 will be written up as a follow-up post when running.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A v2 build is already in motion, pivoting the chassis to a Yahboom ROSMASTER M3 Pro with Jetson Orin onboard, and refreshing the supporting microcontrollers toward the ESP32-C3 family for new builds (per Espressif's NRND guidance on ESP8266). v2 will be written up as a follow-up post when running.
A v2 build is already in motion, pivoting the chassis to a Yahboom ROSMASTER M3 Pro with Jetson Orin onboard, and refreshing the supporting microcontrollers toward the ESP32-C3 family for new builds (per Espressif's [NRND guidance on ESP8266](https://products.espressif.com/#/product-selector?names=&filter={%22Series%22:[%22ESP8266%22]})). v2 will be written up as a follow-up post when running.

@thinkneo-ai thinkneo-ai force-pushed the blog/fofoca-esp32-ai-robot branch from 4498de5 to 19d65f1 Compare May 3, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs review Needs someone to be assigned to review

Projects

None yet

Development

Successfully merging this pull request may close these issues.