Your First TinyML Project — What to Build and Where to Start
The first edge ML project that works builds confidence faster than any tutorial
The toolchain for running machine learning on microcontrollers has improved dramatically in the past few years. Edge Impulse in particular has made the collect-label-train-deploy cycle accessible to people without ML expertise. You can go from raw sensor data to a deployed model in an afternoon if you pick the right project.
The key to a successful first TinyML project is choosing something with enough signal that the model learns reliably, and enough simplicity that debugging is tractable when things go wrong. The projects that fail aren't usually failing because TinyML doesn't work — they fail because the signal isn't strong enough, the data collection wasn't thorough, or the hardware doesn't match the data the model was trained on.
The right first project
Gesture recognition with an IMU (accelerometer/gyroscope) is the standard recommendation, and for good reason. The signal-to-noise ratio for distinct gestures is high. A shake looks nothing like a tilt, which looks nothing like a tap. The model can learn these distinctions reliably with a few hundred samples per gesture.
The Arduino Nano 33 BLE Sense is the most common hardware for this entry point — it has a 9-axis IMU, BLE, and enough flash and RAM for a small TinyML model. Edge Impulse supports it natively.
Keyword spotting is the other popular entry point. "Yes/No" or similar two-word classification is achievable with under 100KB of model size on current microcontrollers. The Nano 33 BLE Sense has an onboard microphone. Edge Impulse handles the MFCC feature extraction and CNN architecture automatically.
Anomaly detection from vibration data is excellent for industrial applications but requires more data collection context. Good second or third project.
The Edge Impulse workflow
Edge Impulse's workflow is: collect data → define signal processing → design neural network architecture → train → evaluate → deploy.
Collect data: connect your device and use Edge Impulse's data acquisition tool to stream sensor data directly to the platform. Label it by class (gesture A, gesture B, idle). Aim for at least 100 samples per class, more if possible. Variety matters — collect data from different people, different positions, different speeds of the gesture.
Define signal processing: for IMU data, Edge Impulse's default spectral analysis block works well. For audio, MFCC. Accept the defaults for a first project.
Train: Edge Impulse trains a neural network for you. Start with their "Keras" CNN architecture. Tune epochs and learning rate if the default accuracy is poor.
Deploy: Edge Impulse generates an Arduino library that you add to your sketch. Import it, call the inference function, and read the result.
The whole pipeline is achievable in an afternoon.
What trips people up
Data quality: the most common reason a first TinyML project doesn't work well is insufficient or inconsistent training data. 20 samples per class isn't enough. 50 is a start. 200+ per class with genuine variation (different people, different speeds) produces reliable models.
Hardware mismatch: if you collect data on a Nano 33 BLE Sense and deploy on a different board with a different IMU, the model will perform poorly because the sensor characteristics differ. Collect and deploy on the same hardware.
Latency expectations: neural network inference takes time, even on hardware. On a Nano 33 BLE Sense, inference for a gesture model might take 5–15ms per window. Plan your data window and inference cycle accordingly.
Overfitting: if training accuracy is high but validation accuracy is low, you have too little data. Collect more. Don't just train more epochs.
RoboDIB stocks Arduino Nano 33 BLE Sense, ESP32-S3, and IMU sensors for TinyML projects.
More from the blog
RoboDIB
Solve these problems yourself
AI inventory, component map, 3D printing, and circuit design tools — all built for India's maker community.