Arduino Nicla Vision

ArduinoMCU 32-bitarduino

⚡ The essentials in 60 seconds

Imagine a piece of hardware so compact that it fits within a square just over two centimeters on each side, yet powerful enough to process color images, listen to the world, and connect to the internet. This is the Arduino Nicla Vision, a System on Module that redefines what is possible in embedded machine vision. Measuring only 22.86 by 22.86 millimeters, this tiny board packs a punch that was previously reserved for much larger devices. It is not just a microcontroller; it is a complete sensory suite designed for developers who need to bring intelligence to the edge, where computing happens right on the device rather than in the cloud. Manufactured by Arduino, the Italian company known for making electronics accessible, this board represents a significant leap in miniaturization and capability, offering a glimpse into the future of smart devices that can see, hear, and communicate without needing bulky external components.

At the heart of the Nicla Vision lies the STM32H747AII6, a dual-core microcontroller that serves as the brain of the operation. To understand why this is impressive, it helps to know that most small development boards use a single processor core. The H747, however, features two distinct cores: a high-performance Arm Cortex-M7 running at up to 480 MHz and a secondary Cortex-M4 running at up to 240 MHz. This dual-core architecture allows the board to handle heavy computational tasks, such as processing image data, on the faster M7 core while offloading background tasks or real-time control to the M4 core. This separation ensures that the system remains responsive even when under heavy load. The chip also includes a floating-point unit, which accelerates mathematical calculations essential for signal processing and machine learning, and a memory protection unit that helps prevent software errors from crashing the entire system. With up to 2 MB of flash storage and 1 MB of RAM, the board has ample room to store complex algorithms and temporary image data, making it one of the most powerful microcontrollers in the Arduino lineup.

The primary reason for choosing this board is its integrated vision capabilities. It features a 2-megapixel color camera, specifically the GalaxyCore GC2145 sensor, which captures images in RGB565 format. This means it records color information efficiently, balancing image quality with memory usage. Unlike some other vision boards that use lower-resolution grayscale sensors, the Nicla Vision provides full-color perception, which is crucial for applications like object recognition, where color can be a distinguishing feature. The camera connects directly to the microcontroller via a parallel interface, allowing for rapid data transfer. However, it is important to note that because the board does not include external SDRAM, processing very high-resolution images can be challenging. Developers are encouraged to work with QVGA-class resolutions, such as 320 by 240 pixels, to ensure smooth performance and avoid running out of memory. This constraint encourages efficient coding practices, focusing on what is truly necessary for the application rather than relying on raw power alone.

Beyond sight, the Nicla Vision is equipped with a rich array of sensors that give it a broader awareness of its environment. It includes a 6-axis inertial measurement unit, combining a 3D gyroscope and a 3D accelerometer, which can detect motion, orientation, and gestures. This sensor is capable of running its own machine learning algorithms, meaning it can recognize specific movements without constantly bothering the main processor. An omnidirectional digital microphone allows the board to capture audio, enabling voice command interfaces or sound-based event detection. Additionally, a time-of-flight distance sensor provides precise measurements of how far objects are from the board, adding a depth perception layer to its visual capabilities. Together, these sensors create a multi-modal system that can interpret the world through sight, sound, and motion, opening up possibilities for projects that require complex environmental awareness.

Connectivity is another strong suit of this compact module. It integrates both Wi-Fi and Bluetooth Low Energy, allowing the board to communicate wirelessly with other devices or cloud services. The Wi-Fi operates on the 2.4 GHz band, which is standard for most home and office networks, while Bluetooth Low Energy is ideal for connecting to smartphones or other low-power peripherals. This wireless capability is managed by a dedicated module on the board, freeing up the main microcontroller to focus on processing tasks. The board also features a micro-USB port for power and programming, supporting USB High-Speed data transfer, which is rare in microcontroller boards and significantly speeds up the process of uploading code or streaming large amounts of data to a computer. For standalone applications, the board can be powered by a lithium polymer battery, making it suitable for wearable devices or remote sensors that need to operate without being tethered to a wall outlet.

The Nicla Vision is designed to fit into the broader Arduino ecosystem, offering compatibility with Portenta and MKR series products through its castellated edge and socket pins. This modularity allows developers to start with the small form factor and expand functionality by attaching carrier boards or shields if needed. Software support is robust, with official ports for the Arduino Mbed OS core and MicroPython. The Arduino core provides a familiar C++ environment with libraries for camera control, audio, and machine learning, while the MicroPython port offers a simpler, script-based approach that is often preferred for rapid prototyping and educational purposes. The board also supports integration with Edge Impulse, a platform for building machine learning models, allowing users to train custom vision or audio models and deploy them directly onto the hardware. This seamless workflow from model training to deployment on the device lowers the barrier to entry for creating sophisticated AI applications.

Despite its many strengths, users should be aware of certain limitations and quirks. The board’s small size and lack of external RAM mean that memory management is critical, and developers must carefully plan their image buffer sizes. There have been reported issues with certain example sketches, such as conflicts in the RGB LED library or glitches in camera frame rendering, which highlight the importance of checking the latest community forums for patches and workarounds. Additionally, the real-time clock behavior can be tricky, as the stock bootloader may reset the calendar time upon hard resets, requiring careful handling if time-stamping is essential for your application. The board’s price point, currently listed at €89.80, reflects its high level of integration and performance, positioning it as a premium option for serious projects rather than a simple hobbyist kit. Ultimately, the Arduino Nicla Vision stands as a testament to how far miniaturization has come, offering a powerful, all-in-one solution for those ready to tackle the challenges of embedded machine vision and intelligent sensing.

Forum (1 topic) →

AttrSpecsverified
socSTM32H747AII6 (STM32H747XI family): dual Arm Cortex-M7 @ up to 480 MHz + Cortex-M4 @ up to 240 MHz, FPU, MPU, dual-bank flash up to 2 MB, up to 1 MB RAM (192 KB TCM + up to 864 KB user SRAM + 4 KB backup SRAM), 3× ADC, 2× DAC, RNG, 4× DFSDM — (fetched 2026-10-13); board-level part number confirmed by (fetched 2026-10-13).✔
gpunone (DCMI-parallel camera path, no 3D accelerator).? unverified
storage2 MB MCU flash + external QSPI NOR flash: MicroPython's board config declares a 2^27-bit (16 MB / 128 Mbit) chip with 88 Mbit exposed as filesystem, reserving 4 MiB romfs + 1 MiB Wi-Fi/BT firmware — (fetched 2026-10-13). QSPI pins (PD11/PF9/PE2/PD13/PF10/PG6) in variants/NICLA_VISION/pins_arduino.h of ArduinoCore-mbed.✔
cameraGalaxyCore GC2145, 2 MP color, RGB565/gray output. The official docs state "The board uses the GC2145, a 2MP color camera" ( and the Camera library instantiates GC2145 galaxyCore for ARDUINO_NICLA_VISION — (fetched 2026-10-13).✔
sensorsLSM6DSOXTR smart 6-axis IMU (3D gyroscope + 3D accelerometer, on-board ML capable) on SPI1, interrupt PA_1 (docs page + pins_arduino.h); MP34DT06JTR omnidirectional digital PDM MEMS microphone (docs page); distance sensor (ToF) —? unverified
wirelessWi-Fi (2.4 GHz) + Bluetooth Low Energy via an on-board module wired to SDMMC2 (SDIO) for Wi-Fi and UART1 (BT_TXD/RXD/RTS/CTS) for BT per MicroPython's board header (URL above); the module is widely reported to be an ESP32-family part.? unverified
usbmicro-USB, USB CDC (VID 0x2341 / PID 0x025F in Arduino core; MicroPython uses PID 0x055F); USB High-Speed via ULPI PHY (MICROPY_HW_USB_HS_ULPI3320, micropython board header). USB_MAX_POWER 500 (pins_arduino.h).? unverified
gpio_arduino_core_mapping_pins_arduino_h(fetched 2026-10-13) — - 22 digital pins D0–D21 (NUM_DIGITAL_PINS 22), 7 analog inputs, 1 analog output (NUM_ANALOG_OUTPUTS 1 → DAC), ADC_RESOLUTION 12. - A0/A1/A2 = pins 15/16/17; RGB LED: LEDR=23, LEDG=24 (=LED_BUILTIN), LEDB=25. - 2× SPI (SPI: MISO10/MOSI8/SCK9/SS7; SPI1: MISO22/MOSI20/SCK21/SS6 — SPI1 is the internal IMU bus), 3× Wire/I²C (external SDA11/SCL12; internal bus PF_0/PF_1 for sensors; second external pair 13/14), 2× UART (Serial1 PA_9/PA_10, Serial2 PB_6/PB_7 with RTS/CTS PA_12/PA_11). - GPIO logic level:✔
power5 V via micro-USB (500 mA budget) or LiPo on the battery JST pads — "can also be battery powered making it standalone" (✔
dimensions22.86 × 22.86 mm (✔
  • Manufacturer: Arduino (Arduino S.p.A., Italian open-source hardware company; per Wikipedia the company is now owned by Qualcomm) — (fetched 2026-10-13).
  • Board: Arduino® Nicla Vision, store SKU ABX00051, barcode 7630049203037, Shopify product type "SOM (System on Module)" — (fetched 2026-10-13).
  • Year: launched in 2021 (it is the board Google used in mid-2021 to demo ChromeOS on a microcontroller; the current official store listing was created 2022-02-24, published 2022-03-08 — store JSON above).
  • Status: active — still sold on the official store (fetched 2026-10-13).
  • Price: €89.80 on store.arduino.cc as of 2026-10-13 ( variants[0].price).
  • Variants: none — a single default variant exists in the store JSON; the closely related Nicla Sense ME is a different (non-camera) board.

+ Strengths

  • Machine-vision-on-a-chip form factor: 2 MP color camera, PDM microphone, 6-axis IMU with on-sensor ML (gesture detection offload), and a distance sensor in 22.86 × 22.86 mm (docs + store pages, fetched 2026-10-13).
  • Dual-core H7 horsepower: 480 MHz M7 + 240 MHz M4, FPU/DSP, 1 MB RAM — top-of-line MCU in any Arduino board (st.com page above).
  • USB High-Speed (ULPI) — rare on an MCU board (micropython board header).
  • 16 MB external QSPI flash for models/images (micropython board header).
  • Ecosystem compatibility: "designed to be compatible with all Arduino Portenta and MKR products" (store page) — castellated edge + MKR-style socket pins.
  • Arduino Cloud compatible (store page) and supported by the core's MLC, PDM, Camera, Nicla_System libraries ( fetched 2026-10-13).

− Weaknesses

  • Blink_Nicla.ino does not compile for Nicla Vision — Nicla_System's RGBled.h #define Mode 1 collides with mbed's InterfaceCAN.h enum Mode; open bug since 2023-01-30: (fetched 2026-10-13).
  • Camera example rendering glitches — users report corrupted frames with CameraCaptureRawBytes + the Processing CameraRawBytesVisualizer (serial/endianness issues), open since 2022-10-04: (fetched 2026-10-13).
  • RTC runs from LSI, calendar wiped on hard reset — the stock MCUboot bootloader is built with lse_available=false and re-clocks the RTC from the accurate external SiT1532 LSE onto the LSI at every hard reset; documented in MicroPython's board header comment (URL above, fetched 2026-10-13).
  • Frame-buffer RAM ceiling: the Camera library notes that resolutions above 320×240 need external RAM (SDRAM.h), which the Nicla Vision does not carry (unlike Portenta) — see comments in CameraCaptureRawBytes.ino (URL above). Plan QVGA-class buffers.
  • ChromeOS firmware trail gone: both plausible GitHub repos 404 (see Systems), so the 2021 ChromeOS angle is no longer a maintained path.
  • Retour d'expérience expert expert — expert-arduino
    • Retour sur la Nicla Vision après plusieurs mois d'utilisation. Le format 22x22mm est bluffant pour une intégration embarquée, et la puissance du dual-core STM32H747 (M7 480MHz + M4) permet de faire tourner du vision assez réactif. Par contre, attention aux pièges documentés. Le bug de compilation a… — expert-arduino
    • Salut, merci pour ce retour très clair. Je bute justement sur le problème de l'RTC. J'ai lu que le calendrier se réinitialise à chaque hard reset à cause du bootloader qui force le LSI au lieu du LSE. C'est super gênant pour logguer des données horodatées en mode autonome. Est-ce qu'il y a un worka… — maker_bob_42
    • Pour l'RTC, non, il n'y a pas de solution logicielle propre dans l'IDE standard car le bootloader MCUBOOT est configuré avec lse_available=false. Ta seule option fiable est de flasher un bootloader modifié ou d'utiliser une fonctionnalité qui corrige la source d'horloge en dur, mais c'est risqué. P… — vision_hacker

Community feedback and projects

  • Driver Drowsiness Detection with FOMO

    Driver Drowsiness Detection with FOMO — (Edge Impulse expert-network (unverified au 2026-10-13) — internal hosted on internal site, live status verified on 2026-10-13. Project documented in the nicla-vision datasheet (32-bit MCU); role: deepen familiarity wit…

Content not available yet.

  • Blink_Nicla.ino does not compile for Nicla Vision — Nicla_System's RGBled.h #define Mode 1 collides with mbed's InterfaceCAN.h enum Mode; open bug since 2023-01-30: (fetched 2026-10-13).
  • Camera example rendering glitches — users report corrupted frames with CameraCaptureRawBytes + the Processing CameraRawBytesVisualizer (serial/endianness issues), open since 2022-10-04: (fetched 2026-10-13).
  • RTC runs from LSI, calendar wiped on hard reset — the stock MCUboot bootloader is built with lse_available=false and re-clocks the RTC from the accurate external SiT1532 LSE onto the LSI at every hard reset; documented in MicroPython's board header comment (URL above, fetched 2026-10-13).
  • Frame-buffer RAM ceiling: the Camera library notes that resolutions above 320×240 need external RAM (SDRAM.h), which the Nicla Vision does not carry (unlike Portenta) — see comments in CameraCaptureRawBytes.ino (URL above). Plan QVGA-class buffers.
  • ChromeOS firmware trail gone: both plausible GitHub repos 404 (see Systems), so the 2021 ChromeOS angle is no longer a maintained path.
  • Faire clignoter la LED RGB du Nicla Vision debutant Schéma : IMG-nicla-vision-debutant-1-niclavision-clignotement-led.svg — Nicla Vision vue de dessus avec les trois LED RGB surlignées et les broches LEDR, LEDG, LEDB
  • Bouton externe et console série sur le Nicla Vision debutant Schéma : IMG-nicla-vision-debutant-2-niclavision-bouton-console.svg — bouton poussoir avec résistance de pull-up câblé entre la broche D0 et la masse, Nicla Vision alimenté par micro-USB
  • Lire le capteur de distance (ToF) embarqué debutant Schéma : IMG-nicla-vision-debutant-3-niclavision-capteur-distance.svg — Nicla Vision avec le capteur ToF en façade émettant un cône de mesure vers un objet à 20 cm et le moniteur série affichant la distance
  • Capturer une image avec la caméra GC2145 (DCMI) intermediaire Schéma : IMG-nicla-vision-intermediaire-1-niclavision-capture-camera.svg — Nicla Vision avec la caméra GC2145 reliée au bus parallèle DCMI du STM32H747, une image QVGA transitant vers le port USB
  • Diffuser des images JPEG depuis le Nicla Vision intermediaire Schéma : IMG-nicla-vision-intermediaire-2-niclavision-streaming-jpeg.svg — chaîne de diffusion : caméra GC2145, conversion RGB565 vers JPEG sur le PC hôte, navigateur affichant une image JPEG
  • Connecter le Nicla Vision au Wi-Fi (module ESP32) intermediaire Schéma : IMG-nicla-vision-intermediaire-3-niclavision-wifi-esp32.svg — Nicla Vision avec son module radio ESP32-N4 relié en SDIO au STM32H747, liaison sans fil vers un point d'accès Wi-Fi 2,4 GHz
  • Journaliser dans la flash QSPI 16 Mo (pas de slot TF) avance Schéma : IMG-nicla-vision-avance-1-niclavision-logs-flash-qspi.svg — architecture mémoire du Nicla Vision : STM32H747, bus QSPI vers la puce NOR 16 Mo découpée en zones romfs, firmware radio et journal circulaire
  • Fonctionnement sur batterie LiPo et sommeil profond avance Schéma : IMG-nicla-vision-avance-2-niclavision-sommeil-bas-courant.svg — Nicla Vision alimenté par une batterie LiPo sur ses pads JST, chronologie éveil court / sommeil profond entre deux appuis bouton
  • Publier une vignette et une image en MQTT avance Schéma : IMG-nicla-vision-avance-3-niclavision-mqtt-upload-image.svg — Nicla Vision capturant une vignette, publiant sur un broker MQTT via Wi-Fi, un abonné recevant les messages base64

Code library — examples written for this board

  • led_rgb.ino Arduino

    The Nicla Vision RGB LED is driven by core macros: LEDR (pin 23), LEDG (24, also LED_BUILTIN) and LEDB (25). This sketch scrolls red, green, blue, yellow, white — the board baseline visual test.

  • imu_lsm6dsox.ino Arduino

    The Nicla Vision 6-axis LSM6DSOX IMU opens in three lines with the Arduino_LSM6DSOX library: acceleration in g and angular rate in °/s, ready for shock detection, tilt or gesture. The entry point of …

  • tof_distance.ino Arduino

    The Nicla Vision carries a Time-of-Flight distance sensor (VL53Lx family per docs-db, exact part not published). This sketch runs it in continuous mode and prints millimeters — tank level, presence, …

  • micro_pdm.ino Arduino

    The board MEMS PDM microphone becomes a sound level meter: sampled at 16 kHz by the PDM library, the script computes peak-to-peak amplitude ten times a second. The base of a clap counter, sound trigg…

  • camera_capture.ino Arduino

    The Nicla Vision GC2145 2 MP camera captures QVGA greyscale through the core Camera library: this sketch computes each image mean brightness — a digital eye to track room light or seed embedded visio…

  • wifi_scan.ino Arduino

    The Nicla Vision wireless module (ESP32-family part, driven by the core WiFiNINA library) sweeps Wi-Fi networks and prints SSID and signal strength. The first step before any connection, and already …

  • ble_service.ino Arduino

    The BLE radio (NINA module) advertises a custom F0F0 service with a notify characteristic carrying temperature in tenths of a degree. From the nRF Connect app the value updates live — the pattern beh…

  • detection_choc.ino Arduino

    Standalone shock detector: when the acceleration vector norm crosses 2 g, the red LED (pin 23) lights for two seconds and the event is timestamped on the console. Ideal for watching a parcel, a machi…

  • niveau_cuve.ino Arduino

    A ToF sensor mounted above a tank turns distance into fill percentage: constant height, subtraction, low-level alert on the green LED. Contactless level sensing — no float, no wetted parts.

  • http_post_imu.ino Arduino

    The Nicla Vision becomes a connected probe: every second a JSON frame of accelerations is POSTed over HTTP to a LAN server through the on-board Wi-Fi module. A plain nc -l -p 8080 validates the senso…

Examples and repos found online