🛠 Diffuser des images JPEG depuis le Nicla Vision

Arduino 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

Objectifs

Transformer les captures QVGA du Nicla Vision en images JPEG exploitables : soit par encodage logiciel embarqué, soit (recommandé) en streamant le RGB565 brut et en encodant le JPEG sur le PC hôte.

Matériel

Code complet

// Trame RGB565 + en-tete binaire pour que l'hote encode le JPEG
// Hote Python : numpy + Pillow -> Image.frombytes("RGB", (320,240), data)
#include "camera.h"
#include "gc2145.h"

GC2145 galaxyCore;
Camera cam(galaxyCore);
FrameBuffer fb;
const uint8_t MAGIC[4] = {0xAA, 0x55, 0x01, 0x01}; // magic+version

void setup {
  Serial.begin(2000000);
  if (!cam.begin(CAMERA_R320x240, CAMERA_RGB565, 15)) { // 15 FPS = marge USB
    pinMode(LED_BUILTIN, OUTPUT);
    while (true) { digitalWrite(LED_BUILTIN, LOW); delay(100);
                   digitalWrite(LED_BUILTIN, HIGH); delay(100); }
  }
}

void loop {
  if (cam.grabFrame(fb, 3000) != 0) return;
  Serial.write(MAGIC, 4);                        // synchronisation trame
  Serial.write(fb.getBuffer, cam.frameSize); // 320*240*2 = 153600 o
}

Côté hôte, lire 4 octets de magic, puis 153600 octets, convertir RGB565 → RGB888, et img.save("frame.jpg", quality=85) pour obtenir un JPEG.

Vérification attendue

Le script hôte écrit ~15 JPEG/s dans un dossier ou les sert sur un port HTTP ; les images sont nettes en QVGA. Si des trames manquent, baisser les FPS caméra avant de toucher au débit série.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels