Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Capteurs > Autres caméras > Caméras et Arduino

Caméras et Arduino

dimanche 20 mars 2011, par Julien H.

On nous demande souvent si une Arduino peut "envoyer des informations" d’une caméra ou traiter les informations de deux caméras pour faire un algorithme de reconnaissance 3D ou bien d’autres traitements complexes de ce genre.

Préambule

Il faut rappeler qu’une Arduino est un micro-contrôleur (famille AVR) et qu’il existe des modèles de caméras pilotées par AVR. Donc rien d’infaisable. Mais il faut aussi dire qu’il y a différents types de caméra, donc la question nécessite un peu de précision avant de pouvoir y répondre.

Il faut savoir ce qu’on entends par "envoyer des informations" et de quel modèle de caméra on parle.

Caractéristiques d’une caméra

On va distinguer trois caractéristiques :

 le type de connexion
 le flux vidéo
 les fonctionnalités avancées

Connexion entre Arduino et caméra

Si vous avez une webcam USB, passez votre chemin : l’Arduino ne permet pas de piloter un périphérique USB car s’il est vrai qu’il y a une prise USB sur l’Arduino, la puce ne fait pas "hôte" (ou USB host en anglais). Il existe des puces permettant de piloter des périphériques USB qu’on peut trouver comme extension, mais les fonctions supportées sont plutôt des accès lecture/écriture vers une unité de stockage (clé USB) ou des données d’interface de contrôle comme une souris, un joystick, etc.. (en anglais HID pour Human Interface Device).

Si vous avez une caméra avec un signal analogique ou un flux vidéo composite pour chaque couleur, la tâche sera également difficile.

Les seules caméras vraiment pratiques pour interfacer avec un micro-contrôleur sont celles qui mettent à disposition chaque image dans un format numérique via une interface sérielle ou parallèle. On trouve plus facilement des caméras (celles qui équipent les téléphones portables par exemple) qui ont à la fois un port de communication série pour les signaux de contrôle (allumer, éteindre, calibrage, ordre d’envoi) et une communication parallèle pour transmettre les pixels qui forment l’image.

Le flux vidéo

Qui dit caméra dit vidéo et qui dit vidéo dit flux important. Qui dit flux important dit grande rapidité et qui dit grande rapidité dit Lucky Luke, pas Arduino. Relire Le Daily Star pour comprendre l’allusion.

En clair, une Arduino n’est pas faite pour lire un flux vidéo (certains disent qu’elle n’est même pas faite pour de la robotique...). Mais bien sûr tout dépend du flux : la résolution de chaque image et la fréquence de lecture de chaque image.

Si votre objectif est de transmettre par la liaison série de l’Arduino le flux d’image d’une caméra connectée à l’Arduino qui en plus contrôle votre robot, revoyez votre conception et choisissez une autre solution.

Voici un exemple concret d’un calcul du transfert d’une image :

Une image 320 x 240 en RGB fait environ 230koctets
Si tu la transfères à 115200 bauds sur la liaison série de l’arduino il te faut un peu plus de 15s pour l’envoyer.

Si votre objectif est de lire cette image de 320 x 240 mais uniquement pour faire un calcul sur la totalité des pixels à la vitesse d’une image toutes les deux secondes, et que l’Arduino ne fait que ça, alors pourquoi pas. Encore plus pour une caméra linéaire avec seulement 128 pixels. Il y a caméra et caméra donc pas de réponse unique.

Les fonctionnalités avancées

Certains modèles de caméra dédiées à la robotique contiennent un contrôleur qui fait un traitement préalable des images (pré-programmé ou bien que vous pouvez développer) afin de laisser un micro-contrôleur indépendant (votre Arduino ou n’importe quel autre) accéder aux résultats de calculs complexes : détection de forme, détection de couleur, valeur moyenne pour chaque couleur primaire, etc..

Ce sont ces modèles vers lesquels vous devez vous diriger : CMUCam, Pob-Eye. Si le prix vous déroute, essayez de reproduire cette architecture : une caméra numérique / une puce dédiée / votre Arduino. La puce dédiée peut être une autre Arduino si le traitement n’est pas trop gourmand en ressource et si la caméra est interfaçable avec.

Citations et sources

Voici quelques discussions sur le sujet :

 Caméra CMOS sur le forum Arduino
 La caméra C328R

Vos commentaires

  • Le 24 janvier 2017 à 15:59, par Martin En réponse à : Caméras et Arduino

    Bonjour,
    Dans le cadre d’un projet pour mes études, je voulais savoir si il était possible de "commander" la caméra d’un smartphone avec une arduino uno, un gyroscope et un module bluetooth, en faisant en sorte d’envoyer un signal si le gyroscope détecte une certaine vitesse d’accélération, et ce signal doit déclencher la caméra (mode vidéo) pendant un certain temps puis l’arrêter. Si cela vous semble possible, de tels codes existent-ils déjà ?
    Je vous remercie de votre réponse
    Martin

    • Le 17 février 2017 à 14:41, par Eric P. En réponse à : Caméras et Arduino

      Bonjour,
      La seule option est de développer une application sur le smartphone qui va communiquer avec l’Arduino via le Bluetooth et contrôler la caméra en fonction des commandes envoyées par le programme qui tourne sur l’Arduino.
      Quant à savoir si quelqu’un l’a déjà fait... Très probablement. Google est ton ami ;)
      Cordialement

    Répondre à ce message

  • Le 25 janvier 2016 à 15:18, par Titou En réponse à : Caméras et Arduino

    bonjour,
    j’ai comme projet de filmer une petite éolienne sur le toit de mon lycée grâce a une camera arduino et un arduino mega, et je dois retranscrire l’image de la camera sur un ecran lcd 2.8’ compatible avec arduino aussi. Qui pourrai m’aider ?
    merci d’avance

    • Le 25 janvier 2016 à 21:14, par Julien H. En réponse à : Caméras et Arduino

      Les Arduino ont très peu de ressources pour pouvoir acquérir un signal vidéo et l’afficher sur un écran. Pourquoi le choix de ce matériel ? Quelle est la caméra utilisée ?
      Bon courage et n’hésitez pas à nous contacter directement pour exposer le contexte de ce projet et ses contraintes.

    • Le 14 juin 2017 à 06:36, par myra En réponse à : Caméras et Arduino

      bonjour, je veux un peu savoir sur les Arduinos. monsieur julien nous a dit que les Arduinos ont tres peu de ressources pour acquérir un signal video et l’affiche sur l’ecran. alors quelle carte utilise hors cette carte ?

    • Le 28 septembre 2017 à 23:49, par Eric P. En réponse à : Caméras et Arduino

      Bonjour,
      La Raspberry est capable de faire ce genre de chose, avec sa propre caméra par exemple. Ensuite, tout dépend du type de traitement que vous souhaitez faire et des contraintes (FPS, taille d’image,...)
      Cordialement

    Répondre à ce message

  • Le 20 décembre 2016 à 00:47, par Idrissi En réponse à : Caméras et Arduino

    Salut tout le monde ,
    je veux envoyer des photos capturer de la CMUCam4 en utilisant un arduino via reseau zigbee s’il vous plait est ce que vous pouvez m’aider ??

    • Le 18 mars 2017 à 13:52, par Eric P. En réponse à : Caméras et Arduino

      Un module Zigbee risque d’offrir un débit trop faible pour ce genre d’utilisation.
      Ceci étant, la CMUcam pouvant communiquer par une liaison série, une paire de XBee configurés pour établir une liaison en point à point peut faire office de connexion série sans fil. Mais ne soyez pas trop pressés pour le transfert.
      Cordialement.

    Répondre à ce message

  • Le 15 février 2017 à 10:04, par dominique En réponse à : Caméras et Arduino

    Bonjour
    Je voudrais savoir s’il est possible de gérer un caméra style web cam usb avec un arduino, la gestion serais la détection de la couleur verte avec un data loggeur qui gère les information à partir de perception de la couleur .
    merci

    • Le 17 février 2017 à 14:00, par Eric P. En réponse à : Caméras et Arduino

      Bonjour,
      Une carte Arduino n’a pas du tout la puissance nécessaire pour faire du traitement d’image.
      Il faut soit passer à un modèle de carte plus puissant et capable de faire tourner un OS tel que Linux afin de bénéficier de bibliothèques comme OpenCV, ou bien bien utiliser une caméra embarquant des capacités de traitement d’image. Une CMUCam ou une de ses semblables (ex : http://cmucam.org/projects/cmucam5/wiki) est capable de détecter en temps réel des couleurs qu’on lui a apprises et envoyer en temps réel via liaison série les coordonnées des rectangles englobants. Il peut alors être envisageable de traiter ces informations avec une Arduino (sous réserve qu’on ne lui fasse pas faire trop d’autres choses en même temps).
      Cordialement.

    Répondre à ce message

  • Le 20 octobre 2016 à 17:56, par zdoucha En réponse à : Caméras et Arduino

    Bonjour à tous,
    Je travaille sur un projet qui consiste à envoyer une photo stocké dans une carte micro sd vers un smartphone android en utilisant module bluetooth HC-05
    Je dispose d’une carte arduino UNO+ module sd card et module bluetooth HC-05
    est ce possible avec ce hardware ?

    • Le 23 novembre 2016 à 13:47, par Eric P. En réponse à : Caméras et Arduino

      Bonjour,
      Par défaut, je répondrais que oui car la communication BT n’est rien d’autre qu’une communication série, supportée nativement par l’environnement Arduino. Quant à la carte SD, l’utilisation de la bibliothèque correspondante permet d’aller en manipuler le contenu.
      Ceci étant je ne peux pas en dire plus, n’étant pas particulièrement Arduiniste, homis quelque bidouilles pontuelles par curiosité.
      Si vous habitez dans notre secteur, le mieux est de venir faire votre projet au sein de l’association. Vous y trouverez des adeptes beaucoup plus accros à l’Arduino que je ne le suis.
      Cordialement

    Répondre à ce message

  • Le 17 septembre 2016 à 12:55, par sam En réponse à : Caméras et Arduino

    Bonjour à tous
    j’ai besoin de détecter le survol du point d’entrée d’une piste atterrissage par des aéronefs d’envergure au moins 2 m, vitesse de l’ordre de 60 à 70
    km/h, hauteur par rapport au capteur entre 4 et 9 m, décalage horizontale par rapport au centre de la piste et du capteur +/-3 m
    est il possible de mettre une mini caméra ou caméra linéaire avec un angle de vision fermé 30° afin de voir de façon grossiere ce qui se passe au dessus. un arduino sait il gérer une micro caméra ?
    j’ai besoin de détecter une image vraiment différente (le passage du zing) sous fond de ciel peu changeant, une cadence de 5 images secondes serait suffisante j’imagine

    • Le 16 octobre 2016 à 16:40, par Eric P. En réponse à : Caméras et Arduino

      Détecter ce genre de chose avec une caméra est tout à fait possible, mais une Arduino n’est pas du tout assez puissante pour effectuer le traitement nécessaire.
      Le problème est d’autant plus délicat que les conditions d’éclairement sont changeantes en extérieur, ce qui rend les traitements à faire plus complexes pour être robustes.
      Quant à la cadence d’image minimale, il suffit de faire le calcul du temps que mettra l’objet à traverser le champ de la caméra en fonction de sa vitesse et de son altitude. Si on prend la situation la plus critique (vitesse maxi de 70 km/h et altitude mini de 4m) la traversée du champ de 30° dure :
      t = 4 x rd(30) / 70000 x 3600 = 0.11 secondes.
      Si on veut détecter à coup sûr, il faut donc une période au maximum égale à la moitié de cette durée (théorème de Shannon), soit 50ms, ce qui fait 20 images par seconde. Votre estimation est donc bien trop faible (sauf erreur dans mon calcul).

    Répondre à ce message

  • Le 3 octobre 2016 à 13:15, par Jacky J. En réponse à : Caméras et Arduino

    Bonjour,
    A lire ce blog, j’ai bien compris qu’il fallait prendre plutôt un Rapsberry Pi qu’un Arduino pour traiter la vidéo. Cependant, quelques points m’interpellent :
     Pour le WiFi, je connecte mon Arduino Méga 2560 à une carte HUZZAH ESP8266. Cette carte est plus puissante que l’Arduino me semble-t-il. Est-il possible de capturer le flux en SPI et de l’envoyer par WiFi au serveur directement de cette carte sans passer par l’Arduino ?
     115200 bauds correspond à une liaison série asynchrone. Jusqu’où peut-on aller en liaison série synchrone comme le SPI ?
     Il est certainement possible de connecter la caméra en parallèle soit sur le port parallèle d’un Arduino quelconque, soit sur celui d’un ESP8266. Ca ira beaucoup plus vite. Le problème est le format des données qu’il faut gérer. J’ai regardé sur le Github et, apparemment, rien... Existe-t-il qqchose dans ce sens.
     Enfin, pour les caméras sophistiquées comme la CMUcam5, le traitement d’image change-t-il la vidéo à transmettre ? Un traitement d’image en local détecte les objets, d’accord, mais il faut quand même transmettre le flux vidéo, et là, je ne vois pas ce qui change. Si un Arduino bloque avec une petite caméra ordinaire, il bloquera de même avec une caméra à traitement d’images me semble-t-il.
    Merci de vos réponses.

    • Le 16 octobre 2016 à 16:28, par Eric P. En réponse à : Caméras et Arduino

      Nous ne connaissons pas la carte Wifi mentionnée. Donc impossible de répondre sur ce point.
      Concernant le SPI, la vitesse dépend du hardware. Par exemple on peut monter jusqu’à 5MHz sur Raspberry. Pour connaitre la limite sur une Arduino, se reporter à la documentation technique de l’AVR qui l’équipe. Ca peut donc varier selon le modèle d’Arduino.
      Concernant la CMUCam5 (ou la PixyCam), le traitement de la vidéo est fait sur le module caméra lui-même par le processeur qui y est embarqué. Le flux vidéo n’est donc pas transmis, et ce qui est envoyé au MCU est un flus contenant les caractéristiques géométriques (bounding box) des blobs détectés. Ce flux étant nettement moins lourd qu’un flux vidéo, un Arduino peut le supporter.
      D’ailleurs, notre robot Coupe de France 2006 (http://www.pobot.org/-Coupe-2006-Funny-Golf-.html) utilisait une CMUCam de l’époque (version 2 si je me souviens bien) et son flux série était traité par ce qui aurait pu être l’Arduino qu’on connait aujourd’hui si nous avions eu l’idée de diffuser notre carte maison (cf http://www.pobot.org/10-Architecture-generale.html).

    Répondre à ce message

  • Le 2 janvier 2016 à 19:25, par pj rauch En réponse à : Caméras et Arduino

    Bonjours
    Je comme projet de fair un robot qui suis avec sa tête un objet mais je ne sais pas quel caméra choisire Ps j’utilise une carte arduino uno
    Merci de votre attention

    • Le 5 janvier 2016 à 19:14, par Eric P. En réponse à : Caméras et Arduino

      La plus connue pour ce genre de chose et qui puisse être utilisée avec la puissance limitée d’une Arduino est la CMUCam.
      Attention cependant, il n’est possible à ce niveau que de faire du tracking de couleur, et non pas de forme, de visage ou autre. Ce genre de suivi nécessite de traiter de la vidéo en temps réel, tâche totalement hors de portée d’une Arduino.

    Répondre à ce message

  • Le 29 novembre 2013 à 10:31, par florent En réponse à : Caméras et Arduino

    Bonjour,
    mon projet est de filmer un match de foot de robot. La caméra utilisé est la pob eye, et je voudrais si l’on peut la relier à une carte arduino (UNO) et surtout comment ? merci

    • Le 8 décembre 2013 à 10:26, par Julien H. En réponse à : Caméras et Arduino

      Bonjour,

      La PobEye est incapable de filmer, elle fait uniquement de la reconnaissance de forme. On peut la connecter à une Arduino mais uniquement pour échanger des trames d’octets concernant les formes vues par la caméra.

      Pour filmer un match de foot de robot, il faut une webcam HD + une carte Linux comme la PCduino ou la Raspberry Pi et un logiciel pour Linux qui enregistrera sur la carte SD.

    • Le 4 janvier 2014 à 14:28, par florent En réponse à : Caméras et Arduino

      bonjour désolé du retard et merci pour votre réponse.
      En fait j’aimerais utilisé la POB EYE pour faire de la reconnaissance de formes puis que la arduino les traites et les envoie a une autre caméra pour les enregistrer et pour ensuite les retranscrire.. Voyez vous ce que je veux dire ? Pouvez-vous m’aider ?
      Merci

    • Le 8 janvier 2014 à 23:02, par Eric P. En réponse à : Caméras et Arduino

      >>
      Voyez vous ce que je veux dire ?
      <<

      Pas du tout :(

      Vous voulez envoyer quoi à une caméra ? Pas des images j’imagine, car en général une caméra fonctionne dans l’autre sens :) Lui envoyer les informations sur les formes détectées lui fera une belle jambe également d’ailleurs. Et pour ce qui est d’enregistrer, là encore ce n’est pas le bon cheval, car la caméra n’a aucune possibilité en la matière.

      Donc tout cela n’est pas très clair, et il est assez difficile de vous aider dans ces conditions.

    Répondre à ce message

  • Le 14 juillet 2015 à 19:50, par Indian2142 En réponse à : Caméras et Arduino

    Bonjour,
    Pour un de mes projet je souhaiterait utilisé deux camera sur un module arduino une camera infrarouge pour filmé et retranscrire sur un petit écran ainsi qu’une autre camera de préférence avec un maximum de résolution pour de jours y a t’il possibilité de trouvé tout cela ou du moins cela existe t’il ?
    Petite précision tout cela si il était possible serait enregistré sur SD et bien-sur les deux caméra ne tournerait pas ensemble le pauvre contrôleur ne serait plus coi faire ^^
    Cordialement

    • Le 15 juillet 2015 à 22:43, par Eric P. En réponse à : Caméras et Arduino

      Et tout ça avec un Arduino ?
      Non sérieusement, faut pas rêver. C’est absolument impossible.

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.