Mise à jour le 11/11/2021 : Cet article traite du changement du mode d’algorithme de la camera SEN0305 ou de la SEN0336 version pro
Sommaire :
- Information technique
- Tuto sur le changement de mode d’algorithme
- Code Arduino boucle principal : Changement de mode de vision
- Onglet 01 : 01 verification type de cam
- Onglet 02 : 02 reconnaissance d’objet
- Onglet 03 : 03 reconnaissance de visage
- Pour tout probléme
.l
Information technique |
.
HuskyLens est un capteur de vision artificielle AI facile à utiliser avec 7 fonctions intégrées : reconnaissance faciale, suivi d’objet, reconnaissance d’objet, suivi de ligne, reconnaissance de couleur, reconnaissance de balise et classification d’objet.
Grâce au port UART / I2C, HuskyLens peut se connecter à Arduino et micro:bit pour vous aider à réaliser des projets très créatifs sans jouer avec des algorithmes complexes.
- Processeur : Kendryte K210
- Capteur d’images :
- Objectif Husky SEN0305 : OV2640 (appareil photo 2,0 mégapixels)
- SEN0336 HuskyLens PRO : OV5640 (caméra 5,0 mégapixels)
- Tension d’alimentation : 3,3 ~ 5,0 V
- Consommation : 320 mA à 3,3 V , 230 mA à 5,0 V (mode de reconnaissance faciale ; luminosité du rétroéclairage à 80 % ; lumière d’ appoint éteinte)
- Port de communication : UART ; I2C
.
Tuto sur la changement de mode |
.
- Dans cette vidéo vous trouverez toutes les explications relatives à l’utilisation du changement de mode de fonctionnement de la caméra SEN0305 pour la reconnaissance faciale et la reconnaissance d’objet
- Le HuskyLens Gravity est un capteur visuel intelligent, simple d’utilisation basé sur une caméra OV2640 associée à un afficheur 2″ IPS et à un processeur Kendryte K210. Grâce au port UART / I2C, HuskyLens peut se connecter à Arduino pour vous aider à réaliser des projets très créatifs sans jouer avec des algorithmes complexes.
.
.
Code Arduino boucle principal : Changement de mode de vision |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
// // // ********************************************* // // controle du type de camera // Changement de mode // reconnaissance de visage // reconnaissance d'objet // // Arduino avec la Camera Sen0305 // // // Code: Mazelin Herve // RedOhm // Le 28/09/2021 // ********************************************* #include "HUSKYLENS.h" #include "SoftwareSerial.h" HUSKYLENS huskylens; SoftwareSerial mySerial(10, 11); // RX, TX //Cablage pour la connexion serie //HUSKYLENS vert / green line -> Pin 10; bleu / blue line -> Pin 11 // //Cablage pour la connexion en I2c //HUSKYLENS vert / green -> SDA ; bleu / blue -> SCL //----- Variable de recherche ---- // int objet = 0 ; int visage = 0; int boucle_objet = 0 ; int boucle_visage = 0; // ********************************************************************** // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // ********************************************************************* void setup() { Serial.begin(115200); mySerial.begin(9600); while (!huskylens.begin(mySerial)) { Serial.println(F("Échec du démarrage!")); Serial.println(F("1.Veuillez revérifier le \"Type de protocole\" dans HUSKYLENS (Paramètres généraux -> Type de protocole -> Série 9600)")); Serial.println(F("2.Veuillez revérifier la connexion.")); delay(100); } delay(500); // Appel du sous programme controle du type de camera controle_du_type_de_camera (); } // ********************************************************************** // Le programme principal s’exécute par une boucle infinie appelée Loop () // ********************************************************************** void loop() { // ****** Procedure de recherche organique ******* // // initialisation de la variable a 0 boucle_objet = 0; // tant que la variable [boucle] est inferieur à 100 while ( boucle_objet < 25) { // Appel du sous programme de reconnaissance des objets reconnaissance_objet(); boucle_objet++; // j'increment ma variable de 1 } objet = 0 ; // ****** Procedure de reconnaissance faciale ******* // boucle_visage = 0; while ( boucle_visage < 25) { // Appel du sous programme de reconnaissance de visage reconnaissance_visage(); boucle_visage++;// j'increment ma variable de 1 } visage = 0 ; } |
.
Onglet 01 : 01_verification_type_de_cam |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// // // void controle_du_type_de_camera () { /***** Vérifie si le modèle est Pro ou Standard *******/ Serial.println (""); Serial.println ("-------------------------------------"); bool isPro; isPro = huskylens.isPro(); if (isPro) { Serial.println(" Modèle professionnel détecté"); } else { Serial.println(" Modèle standard détecté"); } Serial.println ("-------------------------------------"); Serial.println("Verification camera terminé"); int boucle_tempo = 0 ; // creation d'une attente while ( boucle_tempo < 4) { Serial.print("."); delay(1000); boucle_tempo++; } delay (1000); Serial.println("."); } |
.
Onglet 02 : 02 reconnaissance d’objet |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
// // // void reconnaissance_objet() { if ( objet == 0 ) { Serial.println ("++++++++++++++++++++++++++++++++++++++++++++++++++"); Serial.println (" Reconnaissance des objets "); Serial.println (" Activé "); Serial.println ("++++++++++++++++++++++++++++++++++++++++++++++++++"); Serial.println (""); //Basculez l'algorithme sur la reconnaissance des objets huskylens.writeAlgorithm(ALGORITHM_OBJECT_RECOGNITION); objet = 1 ; } // latence de reponse de la camera delay(500); if (!huskylens.request()) Serial.println(F("Échec de la demande de données à HUSKYLENS, revérifiez la connexion!")); else if (!huskylens.isLearned()) Serial.println(F("Rien appris, appuyez sur le bouton d'apprentissage sur HUSKYLENS pour en apprendre un!")); else if (!huskylens.available()) Serial.println(F("Aucun bloc ou objet !")); else { // Serial.println(F("###########")); while (huskylens.available()) { HUSKYLENSResult result = huskylens.read(); if (result.command == COMMAND_RETURN_BLOCK) { // Variable contenant les informations de l'emplacement des objets // // variable -> result.xCenter contenant -> X Centre du bloc // variable -> result.yCenter contenant -> y Centre du bloc // variable -> result.width contenant -> la largeur du bloc // variable -> result.height contenant -> la hauteur du bloc // variable -> result.ID contenant -> 1,2,3,xxx element appris est détecté // 0 element est detecté mais pas appris if (result.ID == 0) { Serial.println("Forme inconnu"); } else if (result.ID == 1) { Serial.println("chat"); } else if (result.ID == 2 ) { Serial.println("humain detecte"); } else if ( result.ID == 3) { Serial.println("chien"); } } else if (result.command == COMMAND_RETURN_ARROW) { Serial.println(String() + F("Arrow:xOrigin=") + result.xOrigin + F(",yOrigin=") + result.yOrigin + F(",xTarget=") + result.xTarget + F(",yTarget=") + result.yTarget + F(",ID=") + result.ID); } else { Serial.println("Object unknown!"); } } } } |
.
.
Onglet 03 : 03 reconnaissance de visage |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
// // // void reconnaissance_visage() { if ( visage == 0 ) { Serial.println ("++++++++++++++++++++++++++++++++++++++++++++++++++"); Serial.println (" Reconnaissance des visages "); Serial.println (" Activé "); Serial.println ("++++++++++++++++++++++++++++++++++++++++++++++++++"); Serial.println (""); //Basculez l'algorithme sur la reconnaissance des objets huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION); visage = 1; } // latence de reponse de la camera delay(500); if (!huskylens.request()) Serial.println(F("Échec de la demande de données à HUSKYLENS, revérifiez la connexion!")); else if (!huskylens.isLearned()) Serial.println(F("Rien appris, appuyez sur le bouton d'apprentissage sur HUSKYLENS pour en apprendre un!")); else if (!huskylens.available()) Serial.println(F("Pas de detection de forme humaine!")); else { Serial.println(F("###########")); while (huskylens.available()) { HUSKYLENSResult result = huskylens.read(); if (result.command == COMMAND_RETURN_BLOCK) { // Variable contenant les informations de l'emplacement des objets // // variable -> result.xCenter contenant -> X Centre du bloc // variable -> result.yCenter contenant -> y Centre du bloc // variable -> result.width contenant -> la largeur du bloc // variable -> result.height contenant -> la hauteur du bloc // variable -> result.ID contenant -> 1,2,3,xxx element appris est détecté // 0 element est detecté mais pas appris // affectation du resultat a un prenom ( a une personne ) if (result.ID == 0) { Serial.println ("Humain detecte non connu"); } else if (result.ID == 1 ) { Serial.println ("Louis"); } else if (result.ID == 2 ) { Serial.println ("Timeo"); } else if (result.ID == 3 ) { Serial.println ("Herve"); } else if (result.ID == 4 ) { Serial.println ("Johann"); } else if (result.ID == 5 ) { Serial.println ("Marie"); } } else if (result.command == COMMAND_RETURN_ARROW) { Serial.println(String() + F("Arrow:xOrigin=") + result.xOrigin + F(",yOrigin=") + result.yOrigin + F(",xTarget=") + result.xTarget + F(",yTarget=") + result.yTarget + F(",ID=") + result.ID); } else { Serial.println("forme inconnu!"); } } } } |
.
Pour télécharger le code.
Pour tout problème |
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celles qui vous intéressent .
.