Blog Home

This system classifies different types of clouds using tinyML

Arduino TeamDecember 6th, 2021

At the basis of each weather forecast is data — and a lot of it. And although the vast majority of atmospheric data collection is fully automated, determining cloud volumes and types are still done manually. This problem is what inspired Swapnil Verma to create a project that utilizes machine learning to categorize six different classes of clouds.

The hardware for this system consists of an Arduino Portenta H7 due to its powerful processor and array of connectivity features, along with a Portenta Vision Shield for the camera. Both of these boards were mounted to a custom base on top of a tripod and powered by a battery bank over USB-C. 

The MicroPython software installed on the Portenta H7 relies on the OpenMV library for capturing images from the Vision Shield and performing a small amount of processing on them. From there, Verma trained an image classification model on nearly 2,100 images of various labeled cloud types — clear sky, patterned cloud, thin white cloud, thick white cloud, thick dark cloud, and veil cloud — using Edge Impulse and deployed it back to the board. As the Portenta runs, it collects an image, classifies it locally, and then sends the result via MQTT to client devices, which lets them read the incoming data remotely. Verma even included a mode that takes images at a slow rate and sleeps in between to save battery power. 

To read more about the Verma’s cloud classifier project, you can visit its writeup here on and watch the demo below.