Recent ESP32 Projects: Vector Search, Video Fingerprints and Off-Grid LoRa Text
Over the last months I have been experimenting with a few ESP32 projects around one recurring idea: what can still be done locally, on small and cheap hardware, without depending on a server or cloud service?
This post collects the latest projects: nn20db SDK, a Word2Vec vector-search demo on ESP32-S3, a video fingerprinting demo, and a LoRa / TrailText messaging project.
1. nn20db SDK
nn20db is my small persistent vector-search SDK for Linux and embedded devices. The main idea is to search a database far larger than available memory, directly from persistent storage.
The SDK is aimed at experiments where the index can be built on Linux and then searched on-device, for example on ESP32-S3 or ESP32-P4. It is not meant to beat server vector databases on raw QPS. It is about making useful vector search possible where RAM, CPU and storage are limited.
ESP32-S3 ESP32-P4 HNSW persistent storage offline search
2. Word2Vec Search on ESP32-S3
This demo uses a Word2Vec index and lets an ESP32-S3 perform nearest-neighbour search locally. The Linux side does the word lookup and vector arithmetic, then sends a single 300-dimensional float32 query vector to the ESP32-S3. The ESP32-S3 searches the index on the SD card and returns the nearest words.
Example queries include simple word lookups and classic vector arithmetic such as:
king - man + woman.
3. Video Fingerprinting on ESP32-S3
This is a visual demo of local video fingerprinting on an ESP32-S3. The device captures frames from a screen, creates fingerprints, and searches locally to identify the matching video/time.
What I like about this demo is that it makes vector search very tangible: the ESP32 is not just running a toy example, it is matching real visual input against a local database.
4. LoRa Experiments and TrailText
The LoRa project contains two practical ESP32-S3 + SX1262 experiments: a simple Ping-Pong range/radio sanity test, and TrailText, a BLE-to-LoRa text messenger.
TrailText is meant for situations where normal networks are not available. A phone connects to the ESP32 over BLE, the ESP32 handles the LoRa side, and messages are sent to another device.
LoRa Ping-Pong
The Ping-Pong firmware is the first thing to flash when testing boards, antennas, frequency, RSSI and SNR. It keeps the radio path simple before moving on to encrypted messaging.
TrailText app screenshots
```
```
What connects these projects?
For me, these are all experiments in the same direction: making small devices do more useful work locally. Sometimes that means searching a large vector index from SD card. Sometimes it means recognizing video frames. Sometimes it means sending text without mobile coverage.
The ESP32 is obviously not a server, and that is exactly what makes these experiments interesting. You have to think about RAM, storage layout, latency, power, radio range and the real limits of the hardware. But when it works, it opens up a lot of fun edge-computing use cases.
More details and source code are available here:
No comments:
Post a Comment