L'aventure d'un débutant qui voit trop grand! (L'automation de mes studios vidéos)

Tu aimerais voir le côté backstage de mon projet de studios intelligents? Buckle up! Parce que j’ai tout un post pour toi. (2000 mots+)

Même s’il est long, je passe vite sur la majorité du contenu. Si tu as des questions sur certains éléments, lâche-toi lousse! Ça va me faire plaisir d’y répondre.

Si tu as des idées de choses que je pourrais implémenter, je serais vraiment reconnaissant du partage!

Bref, attache ta tuque avec des thight wrap, verse-toi un redbull bien froid et assied-toi, ça va brasser!


Les studios LesBunkers.com possèdent déjà une bonne dose d’automation, ce qui permet de simplifier les procédures au point de pouvoir facilement s’enregistrer seul et sans supervision.

Par contre, ces automations se limitent à ce qui est disponible sur le marché! Je peux ouvrir les portes, caméras, lumières & micros à l’aide d’un serveur d’automation (j’utilise Home Assistant), je peux créer et exécuter des scripts sur l’ordinateur à l’aide de IoTLink et je peux communiquer directement avec le logiciel de capture grâce à l’API de vMix.

Rendue-là, on atteint pas mal la limite de ce qui est possible avec les logiciels & appareils commercialement disponibles.

C’est “bien”, mais j’ai toujours eu une vision beaucoup plus grandiose pour mes studios! Je rêve d’un système où absolument TOUT est automatisé!

Puisque c’est un projet qui sort de l’ordinaire et qui me force à apprendre ÉNORMÉMENT de choses, je me suis dit que ce serait intéressant de documenter le tout ici! Qui sait, peut-être que ça va en inspirer un ou deux à sortir des sentiers battus pour innover et redéfinir les limites de ce qui est possible dans leur industrie.

Puisque mon projet est déjà bien avancé, je vais commencer par définir la situation actuelle, expliquer ma vision, faire un récapitulatif de mon parcours jusqu’à présent et vous parler des prochaines étapes sur ma liste!

La situation actuelle & pourquoi est-ce que j’aime autant les robots?

Présentement, je dois faire 2 séances d’onboarding avec les gens. Un appel avec le client pour apprendre à connaître ses besoins et lui présenter le portail & la documentation et une formation à distance où la personne utilise le studio de façon semi-supervisée.

Bien que les studios soient excessivement plus abordables que les alternatives, j’aimerais quand même continuer à réduire les prix & ouvrir de nouveaux studios. Pour ça, je dois minimiser la maintenance et simplifier les procédures pour accélérer la prise en main.

J’aimerais que ce soit possible pour un nouveau client de maîtriser le studio moins de 30 minutes.

Présentement, je passe environ 5 heures par client. Certes, ce n’est pas “tant que ça”. Par contre, c’est surtout au point de vue “expérience utilisateur” que ça accroche.

Ma méthode pour enseigner l’usage du studio fonctionne bien et la documentation est très complète.

Par contre, le problème auquel je fais face est que beaucoup n’aiment simplement pas apprendre.

Quand on arrive dans un univers complètement nouveau, c’est normal de se sentir incompétent et d’être submergé par les informations.

Personnellement, j’adore ce sentiment! Je prends ça comme un défi et ça me stimule et j’assume (souvent à tort) que mes clients vont avoir la même attitude que moi.

Plusieurs clients me font le commentaire lors de leurs premières visites que ça leur prend environ 30 minutes et plus faire le “setup” du studio. Personnellement, ça m’en prend moins de 5 alors je sais qu’il ne s’agit que d’une question d’habitude.

Après 4 ou 5 visites, les membres finissent par bien intégrer les procédures et je n’ai que des commentaires positifs par la suite.

Par contre, quelques membres se sont découragés après la 2 ou 3e fois et ont arrêté de venir!

Je crois qu’un changement majeur s’effectue au moment où la personne “accepte” qu’elle doive prendre le temps de lire la documentation et d’écouter les vidéos.

C’est comme quand monte un meuble Ikea tout en s’obstinant à ne pas suivre les instructions. Après quelques longues & douloureuses heures, la plupart des gens finissent par se faire à l’idée qu’ils devront ouvrir le foutu manuel. Quand ils font ça, 30 minutes plus tard, tout est terminé!

C’est facile de mettre la faute sur le client et je le sais très bien. C’est pour cette raison que je travaille constamment pour simplifier et améliorer les processus.

Cependant, dans un monde parfait, les gens devraient pouvoir prendre en main le studio de façon complètement intuitive (sans avoir besoin du manuel).

Le studio parfait…

Tu entres dans le studio et non seulement tout s’ouvre tout seul, mais l’angle, la hauteur et le zoom des caméras, la couleur et l’intensité de chaque lumière, la hauteur des bureaux et la configuration de vMix se changent automatiquement pour que le studio soit identique à ta dernière visite.

Tu peux utiliser l’application web pour contrôler chaque aspect individuellement (caméras, éclairage, bureaux, micros) et enregistrer la configuration.

Tu as accès à une liste de preset publics que j’ai fait pour toi, mais tu peux également créer les tiens.

L’application est intuitive et tu n’as pas besoin d’apprendre quoi que ce soit.

Il y a même une option pour que la caméra détecte ton visage et te suive d’elle-même!

Tout ce qu’il te reste à faire, c’est d’appuyer sur “enregistrer”.

Où j’en suis rendue avec cette utopie?

Avant de lire ce qui suit, c’est important de comprendre que je n’ai AUCUNE expérience en design & impression 3d ou encore en électronique.

Je suis débutant, mais je suis motivé et j’aime ça! Si un ingénieur lit ça, j’espère juste qu’il va trouver ça plus cute que cringe. :crossed_fingers:

Je n’ai peut-être pas d’expérience, mais ça fait LOOOOONGTEMPS que je rêve de développer ces compétences.

Mon premier projet d’entrepreneuriat était un thermomètre de piscine intelligent!

J’avais dépensé un paquet d’argent pour les pièces! Par contre, mes efforts ont arrêté là! Je n’ai jamais passé près de le réaliser.

Ça ne m’a pas empêché de me faire n’approcher par nul autre que Oracle qui en voulait pour la gestion de leurs serveurs!

Bref, fastforward en 2020. Ma résolution de l’année était justement d’apprendre comment ces bébelles-là fonctionnent. Le 27 décembre 2019, j’achète donc ce kit arduino sur Amazon pour 40$:

Je me souviens quand j’ai reçu mon kit. @Sabrina était en train d’écouter la télé dans le salon. Quand j’ai enfin réussi à faire allumer une LED, j’ai crié:

“Regarde, regarde! C’est moi qui fais flasher la lumière!” :joy:

Le 26 janvier 2020, j’achète ma première imprimante 3D. Je prends le meilleur modèle pour me forcer à apprendre comment ça fonctionne.

J’étais tanné de ne voir aucun progrès alors je me suis dit que ça allait me donner la motivation d’apprendre!

Après tout, je pense qu’il vaut mieux s’équiper et apprendre sur le tas que de passer 4 ans sur les bancs d’école à accumuler des montagnes de dettes.

La journée même, j’ai créé mon compte Fusion360 pour commencer à apprendre la modélisation 3d.

À cette époque, j’étais vraiment débordé avec la refonte du site web et la création du premier studio de Trois-Rivières.

Sans projet concret et immédiat, je n’avais pas la motivation d’apprendre… Même après avoir dépensé près de 10 000$. :sweat_smile: Mon imprimante servait de décoration et je ne vous cacherai pas que ça me dérangeait “un brin”.

Le 22 avril 2020, je décide donc de créer ma tête de caméra intelligente. Après quelques recherches Google, je tombe sur ce produit que j’achète instantanément! (Un autre 600$ qui s’envole)

Maintenant que j’avais tout ce qu’il fallait pour partir, je n’avais plus d’excuses!

Ce qui explique pourquoi je n’ai rien fait pendant 2 ans!

Ce n’est qu’après être tombé sur la chaîne YouTube de Michael Reeves que je décide que j’en ai assez de la procrastination!

Si un p’tit kid asiatique plein d’acné est capable, moi aussi! Le 9 août, j’annonce mon projet sur Instagram et je commence à me mettre au travail…

J’achète un actuateur linéaire pour me permettre de contrôler la hauteur de la caméra et je design un socle pour me permette d’attacher ma tête de caméra et d’y fixer mon board arduino.

Après avoir passé quelques heures à essayer de comprendre comment Arduino fonctionne, je réussis à faire un petit script qui me permet de contrôler le tout!

J’étais complètement fou de joie. :grin: Je me sentais comme un ado dans un cours de robotique lol.

Malheureusement, ma célébration a été coupée court…

Je ne comprenais pas pourquoi, mais mes commandes ne me permettaient pas de contrôler la tête avec précision. Pour l’utiliser avec un joystick, c’était correct, mais pour répéter des mouvements précis, ça ne fonctionnait pas!

Après plusieurs heures de gossage, je découvre que le moteur utilisé dans la tête que j’ai acheté n’est tout simplement pas très précis. Normalement, les moteurs de type SERVO permettent un mouvement sur 180 degrés. Plus l’amplitude est élevée, moins c’est précis. Celui-là permettait de faire plus de 5 tours sur lui-même alors le moteur n’est pas capable de suivre la position du mécanisme avec précision.

Je l’ai donc mis de côté et je me suis résigné à créer ma propre tête. Elle va être moins cool, mais elle va fonctionner!

Le 24 août, j’achète 2 nouveaux moteurs.

Je les assemblent un sur l’autre pour me permettre d’obtenir mes 2 axes de rotation.

Je design un nouveau socle:

Et je créer une boîte pour y insérer les électroniques.

Après de NOMBREUX essais… :joy:

Je finis par avoir un premier design fonctionnel.

J’ai dû apprendre plusieurs choses pour réussir à faire fonctionner le tout!

Un sonar capte la hauteur de l’actuateur:

Pour contrôler l’actuateur, j’avais commencé par utiliser un relais:

Finalement, j’ai appris qu’il existe des contrôleur faits pour ça (L298N)!

Pour faire mes tests, ça me prenait une source de courant! Je me suis donc acheté un power supply ajustable.

Puisque le L298N permet de prendre du 12v et de sortir du 5v, je me suis dit que j’allais être correct!

Par contre, j’avais un paquet de bogues dont je ne comprenais ABSOLUMENT RIEN. Je me suis dit que c’était probablement causé par le manque d’ampérage du convertisseur alors j’ai acheté convertisseur à part pour transformer le circuit 12v requis pour l’actuateur en 5v requis pour les composantes électroniques.

Eurêka! C’était bien ça. J’ai ensuite remplacé mon power supply par un adaptateur 12v qu’on peut brancher directement dans le mur.

Et finalement le arduino que j’ai choisi contient une puce wifi qui va me permettre de lui envoyer des commandes.

Une fois que c’est en place, il me restait à créer mon circuit… Chose que je n’ai jamais faite!

Je me suis acheté [un petit fer à souder]…(Amazon.ca):

… et je me suis rendu compte que j’étais INCAPABLE de faire quoi que ce soit. :sweat_smile: J’ai donc acheté une petite station pour me simplifier la vie…

… et un paquet de fils, breadboard, aimants & autres accessoires.

Après quelques heures et un énorme mal de dos, je finis par réussir mon circuit.

JaysonTatumBostonCelticsGIF

Jusque là, tout fonctionne, mais j’utilise le petit joystick qui venait avec mon premier kit pour faire bouger la caméra. Il me reste à trouver un moyen fiable et robuste de communiquer avec mon invention sans fil.

J’ai essayé un paquet de choses… Il faut comprendre qu’Arduino n’est pas comme JavaScript, Python ou Php! Programmer sur cette plateforme n’est pas la même chose du tout. Le contenu de ton script s’exécute dans une “loop” où tu dois décoder chaque byte une à une.

J’aurais pensé que ça aurait été facile de faire un API REST où la tête “écoute” et “attends” les commandes.

Je n’ai pas été capable de faire fonctionner ça… J’ai donc essayé de faire en sorte que la tête effectue 2 requêtes par secondes à mon serveur qui va ensuite communiquer l’état désiré de l’appareil.

Ça a fonctionné pendant un certain temps, mais aussitôt que la connexion était perdue, le script plantait et la tête arrêtait de fonctionner.

Finalement, la solution aura été d’utiliser le protocole MQTT.

C’est similaire à une requête HTTP (de l’API REST), mais je n’ai pas besoin de spammer mon serveur ou mon appareil d’information. L’appareil “s’abonne” à un “sujet” sur le serveur et, dès que le sujet change, l’appareil reçoit l’information.

J’ai tweaké le code, créé un script qui s’assure de se reconnecter au WiFi en cas de déconnexion et de se reconnecter au serveur MQTT s’il se déconnecte. Je l’ai testé pendant une semaine et je n’ai eu aucun bogue!

Le script ressemble à ça:

#include <SPI.h>
#include <PubSubClient.h>
#include <WiFiNINA.h>
#include <ArduinoJson.h>
#include <Servo.h>
#include "variables.h"

char ssid[] = SECRET_SSID;    // Network SSID
char pass[] = SECRET_PASS;    // Network password 
char host[] = HOST;           // MQTT HOST
char clientid[] = CLIENT_ID;  // MQTT Client ID
char username[] = USERNAME;   // MQTT Credentials
char password[] = PASSWORD;   // MQTT Credentials
char outTopic[] = TOPIC;      // MQTT Topic
int timer = 0;                // To print out state

// Control variables
int pan = 70;
int tilt = 70;
int height = 0;
bool heightOk = true;
int panTarget = 70;
int tiltTarget = 70;

// Actuator, Sonar & Servo config
int motorPin1 = 4;
int motorPin2 = 5;
Servo Tilt;
Servo Pan;
long duration;                // Variable for the duration of sound wave travel
int distance;                 // Variable for the distance measurement

//receive data
void callback(char* topic, byte* payload, unsigned int length) {
  char str[length + 1];
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  int i = 0;

  for (i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
    str[i] = (char)payload[i];
  }

  str[i] = 0;  // Null termination
  Serial.println();

  StaticJsonDocument<256> doc;
  deserializeJson(doc, payload);

  const char* sensor = doc["sensor"];
  panTarget = doc["pan"];
  tiltTarget = doc["tilt"];

  height = doc["height"];
  heightOk = false;
}

WiFiClient wifiClient;
PubSubClient client(host, 1883, callback, wifiClient);

void setup() {
  pinMode(trigPin, OUTPUT);  // Sets the trigPin as an OUTPUT
  pinMode(echoPin, INPUT);   // Sets the echoPin as an INPUT

  // Linear Actuator
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);

  // Pan // Tilt
  Tilt.attach(10);
  Pan.attach(9);

  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ;  // wait for serial port to connect. Needed for native USB port only
  }
  connectToWifi();
  connectToMqtt();
}

void connectToWifi(){
 // attempt to connect to Wifi network:
  Serial.print("Attempting to connect to WPA SSID: ");
  Serial.println(ssid);
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
    // failed, retry
    Serial.print(".");
    delay(5000);
  }
  Serial.println("You're connected to the network");
  Serial.println();
}

void connectToMqtt(){
  if (client.connect(clientid, username, password)) {
    Serial.print("Connected to ");
    Serial.println(host);
    Serial.println();
    boolean r = client.subscribe(outTopic);
    Serial.print("Subscribed to ");
    Serial.println(outTopic);
    Serial.println();
  } else {
    // connection failed
    Serial.println("Connection failed ");
    Serial.println(client.state());
    Serial.println();
  }
}

void loop() {
  if(timer > 200){
    timer = 0;
  }

  // Clears the trigPin condition
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // Sets the trigPin HIGH (ACTIVE) for 10 microseconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);

  // Calculating the distance
  distance = duration * 0.034 / 2;  // Speed of sound wave divided by 2 (go and back)

  if (!heightOk){
    if (distance > height) {
      // Go down
      digitalWrite(motorPin2, HIGH);
      digitalWrite(motorPin1, LOW);
    } else if (distance < height) {
      // Go up
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin1, HIGH);
    } else {
      heightOk = true;
      // Do nothing
      digitalWrite(motorPin2, LOW);
      digitalWrite(motorPin1, LOW);
    }
  }

  if (tilt > 0 && tilt > tiltTarget) {
    tilt -= 1;
    Tilt.write(tilt);
    delay(1);
  }

  if (tilt < 80 && tilt < tiltTarget) {
    tilt += 1;
    Tilt.write(tilt);
    delay(1);
  }

  if (pan > 0 && pan > panTarget) {
    pan -= 1;
    Pan.write(pan);
    delay(1);
  }

  if (pan < 180 && pan < panTarget) {
    pan += 1;
    Pan.write(pan);
    delay(1);
  }

  if(timer == 200){
    // Print state
    Serial.print("WiFi Status: ");  Serial.print(WiFi.status());  Serial.print(" | Distance: ");  Serial.print(distance); Serial.print(" | Height: ");  Serial.print(height); Serial.print(" | Pan: "); Serial.print(pan);  Serial.print(" | Tilt: ");  Serial.println(tilt);
    
    // If not connected to WiFi
    if(WiFi.status() != 3){
      connectToWifi();
    }

    // If not connected to MQTT
    if(WiFi.status() == 3 && client.connected() != 1){
      connectToMqtt();
    }
  }

  timer += 1;
  delay(5); // To slow down motors.
  client.loop();
}

Il me restait donc à trouver un moyen simple de fixer les caméras aux murs. J’avais des “Varipole” de lousse alors je me suis dit que j’allais utiliser ça!

varipole

Je me design donc des supports qui vont permettre de faire glisser l’appareil le long du poteau…

Ce qui a donné le résultat suivant:

J’ai fait quelques tweaks sur ce modèle avant de juger que c’était suffisant! Je l’ai installé la semaine passée dans le studio de Sherbrooke.

Entre-temps, j’ai refait l’application web pour me permettre de contrôler la caméra. J’ai détaillé le processus ici:

Grosso-moddo, j’utilise Vue-MQTT pour permettre à un utilisateur de se connecter au serveur MQTT via WebSocket (MQTT n’est pas possible à travers un navigateur).

La semaine passée, j’ai installé cette première version ça dans mon studio de Sherbrooke et tout fonctionne très bien! :grinning: Voici un petit aperçu du studio de Sherbrooke:

Je l’ai presque terminé, je vais vous envoyer des photos dès que c’est prêt!

Où j’en suis aujourd’hui?

Le design avec la grosse boîte est loin d’être esthétique ou efficace. La majorité des pièces que j’ai utilisées sont vieilles et trop grosses pour rien.

Je vais donc redésigner à partir de zéro pour que ce soit plus compact et professionnel! Voici la liste des nouvelles pièces:

VL53L0X (Le sensor de distance)

image

Arduino nano 33 IoT

image

Contrôleur de l’actuateur

image

Je suis également en train de refaire la boîte pour les composantes à même le support qui tient la tête:

(J’ai conservé le vieux sensor de distance sur ce modèle)

Ce qui donne ça:

Bien sûr, je vais fermer la boîte! Mais il faut avouer que c’est vraiment plus “propre” comme résultat!

Je termine de faire ça le plus rapidement possible. J’aimerais énormément intégrer un module pour zoomer la lentille de la caméra. Pour faire ça, j’ai acheté ce “follow focus” cheapo sur Amazon.

v

Je l’ai désassemblé et je vais pouvoir l’ajouter à ma tête. Je ne sais pas si je vais avoir le temps de le faire pour la version 2, mais c’est une priorité!

Ce n’est que le début!

Je ne fais que commencer à être à l’aise avec tout ça et j’ai énormément de choses à apprendre! Après les caméras, il va me rester 2 autres gros morceaux à automatiser:

  1. Les lumières.

  2. Les bureaux.

Les lumières.

Présentement, les lumières se contrôlent à partir d’une manette rouge qui est tout SAUF intuitive…

image

Tous les clients la détestent. C’est pourquoi ça va être important de trouver une solution qui va me permettre de contrôler les lumières à partir de l’application web.

Pour faire ça, je me suis assuré d’avoir des lumières avec des connecteurs DMX. Il s’agit du protocole utilisé pour contrôler les lumières de stage pendant les spectacles.

En prévision que j’allais avoir ce problème à régler, je me suis acheté des adaptateurs DMX/ARTNET.

ArtNet est un protocole qui permet de contrôler un réseau DMX par Internet.

Honnêtement, c’est absolument HORRIBLE comme expérience de développement. Il n’y a aucune documentation nulle part, mais j’ai fini par réussir à faire fonctionner une lumière, ce qui prouve le concept.

Par la suite, je vais devoir configurer un point MQTT/ARTNET. Heureusement pour moi, je ne semble pas avoir été al première personne a vouloir faire ça alors il y a quelques projets sur GitHub sur lesquels je vais pouvoir me baser.

Comment faire bouger les bureaux maintenant???

Dans mes studios de Sherbrooke, Montréal et Trois-Rivières, j’utilise des standing desk Ergonofis.

Initialement, mon idée avait été de m’intégrer directement avec le contrôleur. J’ai donc acheté un contrôleur de remplacement pour analyser comment il était fait.

Dès que je l’ai ouvert, j’ai réalisé que je n’avais pas les moyens de mes ambitions!

J’ai écrit au président d’Ergonofis. Je lui ai déjà parlé plusieurs fois alors je me suis dit qu’il serait réceptif à l’idée de m’aider. Malheureusement, il m’est revenu en me disant que c’était de la “propriété intellectuelle” et qu’il ne voulait pas me partager les protocoles de communications utilisées.

Pour décoder tout ça, j’aurais besoin d’apprendre à me servir d’un truc comme ça:

image

NO THANK YOU! Peut-être dans 2 ou 3 ans. :rofl:

La solution que j’envisage est donc de créer une boîte par-dessus la boîte qui contrôle le bureau et d’utiliser des Solenoids pour appuyer sur les boutons et simuler un humain.

Je n’aurai qu’à prendre un sensor de distance pour indiquer à mon robot sur quel bouton appuyer.

Par contre, pour le studio de Sherbrooke, j’ai opté pour des bureaux UpLift.

La raison principale étant qu’ils offrent des standing desk à 4 pattes, ce qui est beaucoup plus robuste!

Les bureaux Ergonofis que j’ai montrent déjà des signes d’usage. Surtout celui de Montréal qui a été démonté/remonté plusieurs fois.

Bref, c’est tout un hasard, mais il semblerait que la communauté de HomeAssistant ait déjà créé un script qui permet de contrôler les bureaux UpLift!

Si je suis chanceux, ça devrait être * relativement * simple!

Je vais quand même devoir créer la solution pour les bureaux Ergonofis puisque je n’ai pas trop envie de changer 6 bureaux à ~2500$ chacun. :sweat_smile:

2 ans & 15 000$ plus tard…

Je sais que c’est super technique comme post et que ça n’intéressera pas tout le monde! Si vous avez lue jusqu’ici, félicitations! Voici une surprise:

TurtleHappyGIF

Probablement que vous avez compris 10% de tout ce que j’ai dit et c’est correct comme ça. Dites-vous que je ne comprends pas plus moi-même!

Ça fait 2 ans que j’avance à pas de tortue. C’est frustrant par bout, mais je dois admettre que c’est incroyablement gratifiant! En ayant cette compétence, ça me donne une quantité phénoménale de nouvelles idées pour mes projets.

Avez-vous des questions? D’autres membres s’intéressent à ce genre de projet? Let me know! :slight_smile:

7 « J'aime »

Respect!

J’ai pas tout comprit… en fait j’ai pas comprit grand chose à part qu’est-ce qui fait quoi mais certainement pas qu’est-ce qui fait quoi comment!!

Ça me rappelle quand je gossais dans Linux dans le temps que tout s’installait en ligne de code :joy:

Je peux pas t’aider ben ben là-dessus mais… Wow! C’est impressionnant! Ça donne envie de se dépassé!

1 « J'aime »

Nice Olivier, un gros 1000% pour la passion de creuser et la volonté d’apprendre…

Perso, je suis Technologue Avionique et je fais de l’intégration sur nos bon vieux avions de chasse CF-18, donc bidouiller de la technologie des années 1970 avec des computer de 2021, on fais ça a la journée longue (ce gratté le coco… :grin:). Le seul bout sur lequel je ne joue pas, c’est la programmation (sur les composants de l’avion, fait par CAE).
Mais nous avons des outils, je programme donc un wiring analyser pour valider l’état du filage (branchement adéquat, résistivité, impédance, fonctionnalité des composants genre relais, coupe-circuit, etc…), mais sa reste de la programmation très basic (Language propriétaire de la machine)…

Du côté perso, un de mes hobby étant l’astronomie, je te pose la question a savoir si tu as déjà regarder de ce côté pour contrôler ta caméra, ton focuser et autres… Car j’ai une petite boite qui ce branche sur ma monture équatorial (RS-232) et qui me donne du WIFI autour du télescope. Avec mon cell, je me branche sur ce réseau et avec l’application je contrôle tout les mouvements de la monture (donc du télescope) via ce beau petit bidule…

Si jamais sa rencontre des besoins autres, mais que sa fait le travail de façon simple et efficace pour toi… Détourné de la technologie pour arriver a ces fins, j’appel ça innover!

Très intéressant, merci pour ce partage d’infos sur ton super projet…

Malheureusement, les miens (au boulot) son top secret!!! :see_no_evil:

A+

3 « J'aime »

Je suis très admirative de ce que tu fais. Vraiment.

Alors, tant qu’à être utopique, je te propose cette idée : pourquoi ne pas faire intervenir un IA pour guider ton client? Par exemple, quand j’ai transformé les lumières en stroboscope et ton studio en discothèque :joy: (ça m’est vraiment arrivé), j’aurais pu demander au AI de m’aider à remettre la bonne configuration en place. Ça demanderais de programmer toutes les expériences possibles. Idéalement, ça pourrait être une sorte de Dis Siri, ou Alexa, ou autre. Sinon un Robolivier sur le bureau de l’ordi. Ça serait vraiment cool! Évidemment, tes vidéos m’ont aidée, mais j’ai dû me taper toute la vidéo pour arriver au point que j’avais besoin. Et l’IA aurait pu arrêter le foutu stroboscope en attendant de changer le set up.

Aussi, pourquoi ne pas faire remplir un questionnaire de besoin au départ et de programmer le vidéo avant l’arrivée de la personne, qui pourrait utiliser un preset personnalisé.

Par exemple, dans mon cas, je fais mes enregistrements assise. Je mesure 5 pi 7 po, donc, tu pourrais avoir une hauteur de table idéale dans ce cas, J’utilise NDI pour connecter mon PPT à ton vMix. Je suis en technologie Mac. Je pourrais donner mon code Hexa de mon branding pour la couleur de l’arrière-plan. J’utilise que 2 caméras. Etc.

Avec cette base, le client part avec un set-up vraiment complet. Et quand il a besoin d’un set up différent, le IA pourrait lui dire quoi et comment changer. La courbe d’apprentissage serait beaucoup moins grande à avaler au départ.

Évidemment, mes idées sont peut-être complètement farfelues, mais si ça te donne des idées plus réalistes, tant mieux. Mais je voulais te faire part de mon idéal d’expérience.

1 « J'aime »

Vraiment impressionnant, mais surtout très inspirant.

J’en reviens pas de ce que tu as réussi à faire juste en « voulant » et en travaillant fort pour apprendre. En même temps, j’étais content de lire que ce que tu essayais ne fonctionnait pas toujours du premier coup… ça me rassure un peu sur le fait que t’es encore un humain :sweat_smile:

On a tendance à croire, en voyant uniquement le résultat, que tout se fait facilement pour des personnes, mais en réalité ça cache énormément de travail

2 « J'aime »

Pour être une utilisatrice des studios, en fait j’ai seulement été à celui de Trois-Rivières, celui avec la caméra au-dessus de la table et celui pour podcast qu’il y avait dans les débuts au sous-sol.

Effectivement, pour ma part ça me prend aussi environ 30 minutes me « setter ».

Mais la raison principale, n’est pas ton fonctionnement. C’est mon fonctionnement. Celui de sortir mes choses, de retrouver la couleur de fond que je veux et de mettre la caméra de côté à l’angle que je veux.

En fait, ton principe est vraiment simple, comme tu le dis, à quiconque veut apprendre un peu. Si tout semble déréglé, un reset et le tour est joué!

En tout cas bravo pour tout ce travail complexe qui permet de simplifier le tout. :star2:

Avec les contrôles à partir de l’application web, ça va être difficile de faire une discothèque hahaha!

Bonne idée pour le questionnaire!

C’est intéressant! Le problème avec ces montures, c’est que ce n’est pas évident de s’intégrer avec. Ça se fait quand on connait ça, mais c’est un peu comme le controlleur de mes standing desk, c’est au dessus de mes compétences. :frowning: Par contre, le prix est bas alors c’est quand même intéressant!

By the way, J’ADORE l’astronomie!

Si jamais ça t’intéresse, je te recommande fortement ce petit audio book! :slight_smile:

Inquiète toi pas lol! Je me suis juste tappé la tête plus d’heures que les autres contre mon clavier. :stuck_out_tongue: Le processus est le même!

C’est exactement ça que je veux automatiser! J’aimerais que vous puissiez enregistrer les configurations des lumières la hauteur du bureau où le téléprompteur se trouve.

À Montréal et Québec, on peut faire des podcast alors c’est un peu plus compliqué. Les gens déplacent souvent la caméra principale alors ça fait ça à gérer en plus du reste. :confused: Idéalement, ça prendrait des studios JUSTE podcast et JUSTE debout face à la caméra.

2 « J'aime »

J’ai quand même fait un peu de progrès! Avec le studio de Sherbrooke, j’ai officiellement installé mes 2 caméras contrôlés par ordinateur. Le setup est encore loin d’être optimal et j’aimerais changer pour quelque chose de plus robuste avant de partir en voyage 3 mois! :stuck_out_tongue:

Dans tous les cas, voici à quoi ressemble la version 1:

J’ai utilisé de plus petites pièces pour rendre ça plus compact, ce qui m’a permis de faire la version 2:

Comme vous pouvez voir, j’ai mis du carton avec du duct tape en dessous! :laughing: C’est pour le sensor de distance. En prenant un plus petit sensor, j’en ai aussi pris un qui n’est pas assez précis de loin.

J’ai corrigé dans la nouvelle version et j’en ai profité pour me prendre un actuateur noir, ça fait plus propre je trouve!

La partie du haut est plus élevé! C’est parce que j’ai créé une gearbox pour que la caméra ne repose pas directement sur la pin du moteur.

Je me suis même fait un système de roulement à bille pour que l’engrenage roule bien sur lui-même. :smirk:

Mais, dans tous les cas, je penses bien recommencer le design au complet… Puisque le poteau est en rond, ça fait en sorte que la caméra « branle » facilement.

Pour avoir une solution rapide, j’ai commandé ces rail de CNC sur Amazon:

Comme ça, je vais fixer la caméra directement au mur et ça va être beaucoup plus stable. Je devrais être capable de faire ça d’ici mon départ!

À mon retour de voyage, je compte bien me faire une structure au mur à l’aide de ce genre de poteaux:

4 Pcs 2020 CNC 3D Printer Parts European Standard Anodized Linear Rail Aluminum Profile Extrusion for DIY 3D Printer (400mm) : Amazon.ca: Industrial & Scientific

L’idée serait d’avoir un rectangle de 2 mètre de haut par 4 mètres de large avec un poteau dans le centre qui peut se déplacer horizontalement.

La caméra serait fixé sur ce poteau et pourrait monter et descendre à l’aide d’un moteur auto-stoppant et d’un système de poulie.

J’ai tout acheté pour faire mon prototype… Ça me gosse juste de devoir attendre 3 mois avant de pouvoir le faire! :laughing:

Bref, encore beaucoup de travail à l’horizon. Par contre, c’est vraiment motivant de voir la qualité de mes produits s’améliorer d’une itération à l’autre.

Si tout fonctionne bien, on va pouvoir contrôler la position de la caméra comme si elles étaient sur des sliders automatisés (les 2 caméra de chaque côté vont être installé sur ce système), la hauteur, le zoom ainsi que l’angle et la rotation. D’après-moi, je devrais être bon pour implémenter tout ça cet été dans tous les studios!

J’ai aussi une bonne nouvelle pour les utilisateurs! J’ai réussis à automatiser les lumières à l’aide de ArtNet/DMX.

J’ai utilisé un convertisseur DMXKing et j’ai installé ce module sur le serveur d’automation.

À Sherbrooke, les clients ont maintenant une superbe interface tactile pour gérer les lumières!

Je vais devoir changer les lumières des autres studios pour pouvoir implémenter ça, mais je pense bien le faire parce qu’il s’agit d’un très gros « pain point ». Je vais commencer avec le studio de Montréal puisque j’ai déjà 2 lumières de compatibles avec ce système. Bien sur, ce sera à mon retour donc il ne faut pas s’attendre à un changement avant Mai ou Juin.

2 « J'aime »

:tada: Je viens de terminer l’interface du site pour contrôler les caméras!

Pour y accéder lors d’une réservation en cours, simplement se rendre à l’accueil:

image

oh wow! Ça c’est génial. Ça vaut la peine d’attendre.

Petit update! J’ai eue tout une fin de janvier… J’ai quitté mon appartement le 31 janvier (j’ai tout mis dans un storage) et je suis partit en voyage le 2 février. Il y avait beaucoup de logistique à gérer en plus du déménagement.

À travers tout ça, j’ai refait 2 nouvelles têtes de caméras!

(On peut voir les sacs remplis de stock dans le background :sweat_smile:)

J’ai imprimmé jusqu’à la dernière seconde que j’avais mon appartement :laughing: j’ai été la porter dans mon entrepot à 3h30 du matin! J’ai même dû aller faire mes circuits sur place au studio de Sherbrooke. :stuck_out_tongue:

Ça me fait un peu de peine de partir parce que je ne pourrai plus continuer de travailler là-dessus. :worried: J’ai une foule d’idée pour les prochaines versions!

J’aime bien le système de contrepoids que cette personne a utilisé pour faire sa « crane »:

Et j’aime bien comment cette personne a installé la rotation de sa caméra:

Puisque toute la base tourne, ça lui permet de ranger les 2 moteurs dans la base.

J’aimerais aussi passer de moteurs type « servo » à des « step motors » puisque ça va être 1) moins bruillant et 2) plus fluide. Ça permetterait donc de faire comme je faisais dans mes premiers podcast et d’avoir la caméra qui bouge subtilement de gauche à droite pendant l’enregistrement.

Petit throwback pour ceux qui n’ont jamais écouté ces épisodes:

Bref, je ne vais pas mettre à jour ce journal de progrès pendant les 3 prochains mois, mais ce n’est pas par manque d’envie!!

Bon, je réalise que ça fait déjà presque 6 mois depuis ma dernière mise à jour! Ne vous inquiétez pas, je n’ai pas chômé. J’ai voyagé de février à mai alors je n’ai pas pu avancer ça trop trop, mais depuis mon retour, j’ai eu le temps d’avancer sur plusieurs fronts!

Têtes de caméras intelligentes

J’ai pas mal terminé de faire le fonctionnement de base! Voici mon CAD:

Et ce que ça donne une fois assemblé:

Le système de contre-poids fonctionne SUPER bien. Le mouvement est smooth et silencieux.

On entend le moteur sauter quelques steps, c’est simplement parce que le poids que j’ai mis dans ce test n’est pas très scientifique: 1 cube de tungsten et 4 sous-verres. :joy:

Il me reste encore à ajouter de petits sensors pour que la tête de caméra puisse se calibrer lorsqu’on la branche et finalement lier tout ça à l’interface Home Assistant des studios via MQTT.

Je devrais avoir terminé le premier prototype fonctionnel en août et en installer au studio de Québec en septembre!

Automation des lumières

Dès mon retour de voyage, j’en ai profité pour changer toutes les lumières du studio de Montréal et Québec pour avoir le même système qu’à Sherbrooke. Jusqu’à présent, les clients ADORENT. C’est franchement plus simple et rapide à opérer.

Tout ça a rendu l’onboarding beaucoup plus rapide!

Voici mon choix de lumières:

J’ai montré un peu ce que ça donne dans cette vidéo:

Automation du son

Pour simplifier les choses, j’ai retiré les consoles Rodecaster Pro et j’ai branché les micros dans des interfaces Dante!

https://www.bhphotovideo.com/c/product/1427031-REG/rdl_av_xmn4_microphone_to_network_interface.html

De cette façon, il n’y a plus de confusion face à ce que les gens doivent faire pour activer ou désactiver un micro. Il n’ont qu’à monter/baisser le slider de son dans vMix:

Ce qu’il reste à automatiser

Après avoir terminé les têtes de caméras, il va me rester 2 gros éléments:

  • Le bureau d’ordinateur: j’aimerais qu’on puisse le monter/baisser à partir de la même interface qu’on contrôle les lumières. C’est surtout pour ajuster la hauteur de la caméra principale que ça serait pratique!

  • L’enregistrement simultané des caméras: présentement, on est limité à 3. Ça ajoute donc une étape au début de chaque période d’enregistrement où les gens doivent choisir ce qu’ils veulent enregistrer. Quand les utilisateurs sélectionnent plus que 3 feeds, ça introduit des problèmes (dropped frames) dans les enregistrements. J’aimerais investir dans de nouveaux processeurs pour qu’on puisse enregistrer 5 feeds (les 4 caméras individuels + le mix out). De cette façon, TOUTES les caméras enregistreraient en tout temps (en plus d’un fichier à part où on peut choisir les angles), ce qui enlèverait un point d’échec potentiel pour les clients.


Bref, je continue de travailler là-dessus et de vous tenir à jour! :wink:

2 « J'aime »

Yo ho ho!

Ça fait un certain temps que je n’ai pas fait de suivi sur le projet. Rassurez-vous, ce n’est pas parce que c’est mort.

Dans le dernier sujet, j’ai mentionné qu’il me restait à permettre l’enregistrement simultané de toutes les caméras. Ce qui est fait! :white_check_mark: Ça a coûté cher, mais j’ai changé les 3 ordinateurs. J’avais pris le top du top en 2019, mais ce n’étais pas assez. On dirait bien que le top du top de 2023 fait la job! :partying_face:

Il me reste seulement 2 choses à automatiser:

  • Les standing desks
  • Les caméras

L’automation des standing desk

En automatisant les standing desk, ça va permettre aux gens d’ajuster la hauteur de la caméra principale automatiquement. Ça va aussi me permettre de remettre le studio dans son état « standard » automatiquement une fois par jour à minuit.

Pour y arriver, j’ai investis dans un logic analyzer:

Cet outil va me permettre de me brancher en série entre le contrôleur de mon bureau et la boîte du moteur pour décoder comment ils communiquent ensemble. Par la suite, je vais pouvoir me faire une petite boîte entre les deux qui se connecte à mon Wi-Fi et me permet de contrôler le bureau à l’aide de ma plateforme d’automation.

We’ll see how it goes! Je dois avouer que je n’ai jamais fait ça de ma vie! Je n’ai pas encore commencé, mais ça va pas mal être dans les prochaines étapes…

L’automation des caméras

Ce n’est pas parce que je ne vous en ai pas parlé que je n’ai pas travaillé! :stuck_out_tongue: En fait, je viens tout juste d’installer ma première caméra robotisé à Québec.

Bon, il me reste quelques tune-ups à faire (le contre-poids n’est pas tout à fait assez lourd, d’où le petit cube de tungsten par dessus), mais c’est presque terminé!

J’ai tellement modifié, re-modifié et re-re-modifier mon design vs ce que je vous ai montré il y a 7 mois…

Une des grosse différence est que j’ai décidé d’investir dans une imprimante à résine pour faire mes engrenages!

Voici le modèle que j’ai pris:

Les engrenages imprimés par mon autre machine manquaient de précision et j’avais un jeu entre mes engrenages. Maintenant, tout est vraiment thight, ce qui fait en sorte que les mouvements sont beaucoup plus fluides.

Une autre grosse amélioration vs ce que j’avais fait pour le studio de Sherbrooke. Maintenant, les gens peuvent contrôler les caméras à la même place que l’endroit où on contrôle les lumières:

D’ailleurs, les caméras automatisés du studio de Sherbrooke ne fonctionnaient pas très bien. Il y avait 2 gros problèmes:

Les contrôleurs que j’ai pris (les Arduino Nano IoT) ne sont pas super fiable côté wifi… Ils n’arrêtaient pas de perdre leur connexion, ce qui faisait en sorte que les gens devaient parfois les débrancher/rebrancher. Pas génial…

Ensuite, le senseur de hauteur ne fonctionnaient pas toujours, ce qui a causé la tête robotisé de sortir de son socle et la caméra est tombée par terre! :smiling_face_with_tear: J’ai été chanceux, aucun dégât n’a été fait à la caméra, mais ça aurait pu être une catastrophe.

Bref, le nouveau design adresse ces deux problèmes. J’utilise le nouveau Arduino Uno R4 et, après l’avoir laissé fonctionné pendant plus d’un mois, je n’ai jamais eue d’interruption!

Pour ce qui est du problème de la caméra qui sort de son socle, le nouveau système rend ce genre d’erreur impossible.

Bref, je vais bientôt faire une vidéo pour vous montrer tout ça en action! Stay tuned. :slight_smile:

Après la hauteur, l’angle et l’orientation, il va me rester à ajouter un moteur pour contrôler le zoom de la caméra. J’en suis à 70% là dessus!

Pour la suite des choses…

Une fois que tous les studios seront à jour avec le système de caméra, la prochaine étape est d’intégrer un peu d’IA dans tout ça!

Je compte utiliser l’algorithme PoseNet de TensorFlow:

Cet algorithme va me permettre d’obtenir la position des différents membres de la personne en temps réel.

L’objectif va donc être d’ajouter du face/body tracking aux caméras!

2 « J'aime »

OMG! C’est fou ton affaire! Et tellement cool! Quel travail!

Mais j’ai une question pour toi. Quelle sera la courbe d’apprentissage de l’utilisateur qui arrive dans ton studio pour utiliser tout ça? Ce n’est pas une question piège, mais même si tout cela va apporter des précisions très utiles dans l’utilisation de tout ce matériel, et forcément une plus grande facilité d’utilisation, je me demande en combien de temps, la personne sera en mesure de lancer son enregistrement? En fait, si je me prends comme exemple, je devais présenter des diapos et m’enregistrer en même temps. Donc, quel est ton objectif sur ce point?

En tout cas, c’est un travail extraordinaire que tu fais.

Idéalement, aucune. Pour le studio qu’on a présentement, je n’activerais que le face tracking et ce serait activé par défaut. Donc lorsque tu vas derrière le bureau, les deux caméras de côté vont se positionner correctement sans que tu ais besoin d’intervenir.

Je vais ajouter un petit bouton pour activer/désactiver la fonction dans l’interface où on gère les lumières (et maintenant les caméras).

L’idée est d’enlever le 10 minutes de gossage pour positionner les 2 caméras de chaque côté. C’est mon studio et je me sers même pas des caméras de côté parce que ça me gosse trop d’arranger les trépieds. :stuck_out_tongue:

  1. Ouvrir ton PowerPoint sur l’ordinateur et le mettre en plein écran sur la télévision (il y a une télévision sous le téléprompteur dans les studios de MTL et Québec).

  2. Cliquer sur la source « télévision » sur vMix de façon à ce que la télé soit dans l’output (la section en haut à droite sur vMix).

  3. Enregistrer.

Par défaut, ça enregistre maintenant les 4 caméras + l’output alors tu aurais la caméra de gauche, droite, dessus, face + ton PowerPoint.

Pour revenir au tracking du reste du corps, ça va être pour faire des studios qui s’adressent aux gens en fitness/yoga/etc.


Petit update! Je suis en train de travailler sur le module de Zoom!

Ça va être installé sur le prochain robot à Québec. Éventuellement, j’aimerais vraiment ajouter un petit script qui permet de simuler un cameraman et faire des punch-in/punch-out comme dans The Office! :stuck_out_tongue:

Ça va prendre l’IA pour faire ça par contre. Il faut zoomer à la bonne place. :stuck_out_tongue:

1 « J'aime »

Wow! Je suis impressionnée!

J’ai fait un petit update sur le studio ici:

En gros, je viens d’installer la 2e caméra intelligente à Québec. Ce modèle intègre le zoom.

Voici la caméra de gauche (le premier modèle que j’ai installé):

Et voici la caméra de droite (avec le zoom et quelques modifications pour simplifier l’assemblage):

Il me reste quelques enjeux à améliorer. Entre-autre, la caméra n’est pas parfaitement au niveau. C’est mineur, mais ça me gosse! Ensuite, le contrepoids n’est pas assez lourd d’environ 2 ou 3 lbs. Il y a un peu de friction sur la raille pour monter et descendre la caméra alors je vais devoir ajouter un petit espace.

En somme, ce sont des tune-ups assez simples. La prochaine version risque d’être pas mal celle que je vais installer partout!

Ensuite, le reste va se faire au niveau « software »: ajouter plus de presets et éventuellement faire le cadrage automatique via IA.

Ça avance… Un pas à la fois. :slight_smile: J’ai hâte de voir à quoi vont ressembler mes studios dans 2-3 ans!