Author: Antoine M.

Tutoriels

utiliser les microcontroleurs arduino

Les microcontrôleurs ont un potentiel de création quasiment illimité que ce sois pour automatiser, collecter des données, ou interagir avec d’autres machines, découvrez grâce a ce tutoriel les bases pour faire vos premiers projets arduino.

Qu’est ce qu’une carte arduino ?

Les cartes arduino sont des cartes de prototypage basées sur des microcontroleurs (circuit intégré qui rassemble les éléments essentiels d’un ordinateur) dans lesquels on téléverse un programme informatique pour interragir avec des composants electroniques ou avec d’autres ordinateurs. Elles servent généralement à automatiser des processus trop spécifiques pour lesquels il n’existe pas (ou trop chers) de produit sur le marché ou servent de base pour beaucoup de prototypes ou systèmes embarqués. Avoir les compétences pour utiliser ou au moins une idée de ce qui est possible le de faire grâce a ces cartes ouvre donc un champ de création et de réponse a des problèmes techniques énorme aussi bien dans la vie personnelle que professionnelle.

ex : ici un système d’arrosage automatisé et un drone tout deux faits grâce à une carte arduino.

Présentation matérielle de la carte

Il existe plusieures cartes arduino officielles différentes mais la plus répandue et la plus simple d’utilisation est la arduino uno comme si dessous

*par souci de clarté et pour faciliter la compréhension tout les spécificités de la carte ne sont pas libellées

Les principaux éléments à noter sur la carte sont donc

  • Le port USB qui permet la communication avec un ordinateur et l’alimentation parfois
  • le bouton reset qui efface le programme présent dans la carte
  • les entrées sorties numériques (prennent pour valeur sois 0 sois 5v en entrée ou sortie, elles peuvent également être utilisées en PWM qui émule des signaux analogiques, il y aussi certaines entrées destinées à des normes de communication dont nous ne parlerons pas ici)
  • le microcontrôleur, ici un ATmega 328p, élément principal de la carte
  • les entrées sorties analogiques (prennent des valeurs entre 0 et 5v)
  • les entrées sorties d’alimentation (3.3v, 5v, gnd=terre, Vin = alimentation externe)
  • la prise d’alimentation externe (7v à 12v environs)

Intaller l’IDE arduino

La première étape pour installer le logiciel va être de vous rendre sur https://www.arduino.cc/en/software et choisir la version du logiciel adaptée a votre système d’exploitation.

Une fois cette étape réalisée, exécutez l’installer que vous avez téléchargé et configurez son installation celon vos préférences.

Presentation du logiciel

quand vous lancez le logiciel pour la première fois une fenetre comme celle ci se présente :

comme vous le voyez le logiciel est assez complet et rassemble tout ce dont vous avez besoin, un gestionnaire des fichiers liés au projet courant, un gestionnaire de cartes pour pouvoir prendre en charge le plus de cartes possibles, un gestionnaire de bibliothèques, un débogueur et une fonction de recherche dans le code tous rassemblés dans la barre d’outils. Pour téléverser un programme vous devez d’abord connecter votre carte physiquement à l’ordinateur puis la sélectionner avec son port dans le sélecteur de cartes, puis le vérifier et le téléverser avec les deux boutons en haut a gauche.

le moniteur série et le traceur série sont des fonctionnalités du logiciel qui permettent, une fois une connexion en série entre la carte et l’ordinateur établie, d’afficher simplement à la suite des valeurs envoyées par la carte avec le moniteur ou d’en tracer un graphique avec le traceur.

on peut voir ici la fréquence de la connexion qui est de 115200 baud et les différentes données suivies.

Programmation

Les cartes arduino se programment en C++ accompagné de la bibliothèque de développement arduino intégrée a l’IDE. Leur programmation est assez simple et grandement facilitée par le logiciel et les ressources accessibles en ligne, il serait insensé de vouloir tout expliquer ici c’est pourquoi nous ne ferons que survoler cet aspect.

on peut remarquer que lors de la création d’un nouveau programme, les lignes ci dessus sont écrites par défaut cela s’explique par le fait que la très grande majorité des programmes sur arduino seront structurés autour de ces lignes.

Comme écrit en anglais dans les commentaires (marqués par un double /) le code écrit dans la section setup ne sera exécuté qu’une fois et le code écrit dans la section loop sera exécuté a l’infini, de nombreuses fonctions, types de données et structures existent dans la bibliothèque de développement pour utiliser la carte.

En général la partie du programme avant le setup sert a initialiser les variables du projet et importer les librairies.

Certains projets nécessiterons l’importation de librairies, pour ce faire, après avoir installé la librairie dans le library manager, il faudra écrire au début du programme « #include <‘nom de votre librairie’.h>

La breadboard

Les montages électroniques sont plutôt longs et nécessitent normalement de souder ce qui est assez repoussant pour un débutant c’est pourquoi les breadboard existent, celles ci permettent de faire des connexions rapides et réversibles ce qui est pratique en cas d’erreur dans le montage.

Une breadboard se présente comme une plaque avec des trous dans lesquels on peut mettre les pattes d’un composant ou un fil, les lignes sur l’image de droite montrent les connexions électriques entre les trous.

Petit projet d’exemple

Afin d’illustrer concrètement toute la théorie vue précédemment, nous allons réaliser un petit projet simple qui consistera simplement a faire clignoter une led à un délai dépendant de la valeur d’un potentiomètre (composant dont on peut varier la résistance en le tournant).

pour cela on réalise le montage suivant :

*shema fait avec tinkercad.

(une résistance de 220 ohm est ajoutée pour ajuster l’intensité pour la led)

puis on téléverse le code suivant dans la carte :

const int ledPin = 13; // creer une constante pour stocker le pin de la led

void setup() {

  pinMode(A0, INPUT); // on définit le pin analog 0 comme pin d'entré
  pinMode(ledPin, OUTPUT);  // Configurer la broche 13 comme une sortie

}

void loop() {

  int valPot = analogRead(A0); // Lire la valeur du potentiomètre
  int delai = map(valPot, 0, 1023, 100, 1000); // Mapper la valeur qui est entre 0 et 1023 entre 100 ms et 1 s

  digitalWrite(ledPin, HIGH); // Allumer la LED
  delay(delai); // Attendre en fonction de la valeur du potentiometre

  digitalWrite(ledPin, LOW); // Éteindre la LED
  delay(delai); // Attendre en fonction de la valeur du potentiometre
}

ressources complémentaires

Il existe beaucoup de sites communautaires autour des cartes arduino comme le hub de projets officiel de arduino ou instructables où les communautés postent des projets avec le code et les informations pour les reproduire. Ca peut etre une bonne source d’inspiration pour vos propres projets et la communauté pourra vous aider.

Egalement pour se procurer des composants les sites comme aliexpress sont certes peu chers mais également peu fiables en général, c’est pourquoi je conseille plutôt farnell ou gotronic.

Tutoriels

Faire un montage vidéo simple sur DaVinci Resolve

L’objectif de cet article est de vous apprendre à utiliser certaines fonctionalités du logiciel DaVinci Resolve pour pouvoir faire un montage vidéo basique à travers quatres parties.

Présentation du logiciel

DaVinci Resolve est la seule solution qui associe le montage, l’étalonnage, les effets visuels, les animations graphiques et la post-production audio dans un seul logiciel. Son interface moderne et élégante est à la fois simple à utiliser pour les débutants et performante pour les professionnels. DaVinci Resolve vous permet de travailler plus rapidement et dans une meilleure qualité, car vous n’avez pas besoin de vous familiariser avec plusieurs applications ou de changer de logiciel selon la tâche à effectuer. Vous pouvez donc vous servir des images originales des caméras durant tout le workflow. C’est comme disposer de votre propre studio de post-production au sein d’une seule application.

L’interface du logiciel est séparée en plusieurs onglets qui correspondent a des groupes de tâches, de très nombreuses fonctionnalités existent dans le logiciel mais il serait très long et inutile de les expliquer, ce tutoriel vous servira a comprendre l’organisation et le fonctionnement basique du logiciel (pour pouvoir faire par exemple vos videos de nsi) et à l’issue d’un premier projet guidé par ce tutoriel vous serez probablement capable de decouvrir seuls des fonctionnalités plus avancées et spécifiques à vos besoins.

Télécharger DaVinci Resolve


Pour télécharger DaVinci Resolve, suivez ces étapes simples :

Rendez-vous sur le site officiel de Blackmagic Design, le développeur de DaVinci Resolve. Une fois là-bas, sélectionnez la version de DaVinci Resolve qui correspond à votre système d’exploitation (Windows ou macOS) et à vos besoins (il existe une version gratuite et une version Studio payante avec des fonctionnalités avancées). Cliquez sur le bouton de téléchargement et suivez les instructions à l’écran. Vous pourriez être invité à créer un compte Blackmagic Design pour télécharger le logiciel. Une fois le téléchargement terminé, ouvrez le fichier d’installation et suivez les étapes pour installer DaVinci Resolve sur votre ordinateur.

Importer des médias

Pour faire un montage, vous partez de fichiers de base (vidéo, audio, image…) que vous allez manipuler jusqu’à satisfaction. Ces fichiers doivent donc être importés dans le logiciel pour faire votre montage.

Lorsque vous lancez le logiciel, cliquez sur ‘new project’ en bas a droite pour créer un nouveau projet, nommez votre projet et appuyez sur entrer.

Vous vous retrouvez donc devant l’interface du logiciel et cherchez a importer vos médias, pour cela il vous faudra appuyer sur le bouton indiqué ci dessous puis sélectionner les fichiers dans l’explorateur de fichier et appuyer sur ‘ouvrir’.

vos médias sont à présent importés dans la media pool et vous allez devoir faire un glisser-déposer pour les mettre sur votre ‘timeline’ (espace dans lequel vous pouvez visualiser chronologiquement votre montage).

Créer des proxy

Un problème que vous allez très probablement rencontrer en tant que débutant surtout si vous n’avez pas un supercalculateur en pc sera que quand vous ferez votre montage le rendu aura un frame rate (images par seconde) très faible et peu exploitable. Ca peut paraitre peu important dit comme ca mais ca vous causera forcément des problèmes. Pour y remédier, les proxy existent. Un proxy est un fichier vidéo qui a une qualité moins élevée que son originale et qui permet d’avoir un rendu plus fluide lors du montage. voici une suite d’instruction pour créer des proxy :

Cliquez tout en bas a droite sur le logo d’engrenage pour accéder aux paramètres du projet, rendez vous à ‘Master Settings’, là il faudra descendre et vous rendre à ‘Optimized media and render cache’.

Dans ‘proxy media resolution’, sélectionnez au moins ‘Half’ ou plus bas selon la puissance de votre ordinateur, ensuite dans ‘proxy media format’ sélectionnez ‘DNxHR HQX’ (ProRes 422HQ pour macOs). Sélectionnez ensuite un chemin pour stocker votre proxy dans ‘proxy generation location’. Enfin, cliquez sur ‘Save’.

Rendez vous ensuite dans l’onglet ‘media’ en bas a gauche de l’interface, dans un premier temps je vous conseille d’afficher vos médias sous forme de liste (permet de voir entre autre si vos médias ont un proxy) pour ca cliquez sur le bouton indiqué ci-dessous. Malheureusement, Davinci resolve n’affiche pas par defaut les proxy dans cet espace, pour les voir faites un clic droit sur l’espace indiqué ci-dessous et cochez ‘Proxy’.

Enfin, il vous suffira de mettre votre souris sur vos vidéos et de faire clic droit> ‘Generate Proxy Media’ pour mettre un proxy sur vos vidéos.

Couper, assembler, gérer les pistes.

A présent, une des premières choses que vous voudriez faire serait d’enlever l’audio de vos vidéos pour laisser place a celui que vous avez choisi. Pour cela, vous allez simplement faire un clique droit sur vos pistes et cliquer sur ‘mute‘.

Dans le cas ou vous voulez afficher deux pistes en même temps a l’écran, le moyen le plus simple est d’ utiliser l’inspecteur (inspector) dans son onglet vidéo, vous pouvez y changer, la taille, la position et d’autres paramètres de votre piste.

A présent une dernière et indispensable compétence va vous être nécessaire: la coupe (cut). Pour faire un cut il suffit de faire un clic droit sur le curseur de votre projet a l’endroit où vous voulez couper et de cliquer sur les ciseaux (nous n’utiliserons pas cette fonctionnalité ici car on en a pas besoin mais notez bien que vous pouvez déplacer vos pistes par un simple glisser-déposer).

Vous pouvez maintenant enlever les parties ‘en trop’ de votre timeline en faisant clic droit->cut.

Exporter les rendus

Une fois que vous avez obtenu un résultat qui vous satisfait vous voudrez exporter votre montage sous forme de fichier mp4, pour cela il faudra aller dans la partie ‘deliver‘ (en bas a droite avec un logo de fusée). Dans l’onglet ‘render settings’, vous trouverez tous les paramètres pour créer votre rendu comme le format, la résolution, la compression, les fps, la qualité… Une fois que vous avez paramétré votre rendu il vous suffira d’appuyer sur ‘add to render queue’ puis sur ‘Render all’ pour créer votre vidéo.

Votre projet est maintenant enregistré sous sa forme finale a l’emplacement que vous avez spécifié dans les paramètres.

Art

L’engrenage du temps

Dans notre projet de NSI de Novembre 2023, nos enseignants nous ont demandé de créer un programme informatique qui génère une image , en se concentrant sur le concept d’art génératif.

Présentation du sujet:

Partant du tableau des 42 thèmes abordés en classe, notre attention s’est focalisée sur la pendule, symbole puissant du temps. À partir de là, l’idée centrale du projet a émergé : “L’engrenage du temps” visant à représenter à l’aide de turtle notre image du temps .

Sur la représentation que nous avons, on peut observer plusieurs composants tels qu’une pendule, un engrenage, un dégradé et un disque. Nous allons les examiner en détail au fil de la présentation.

Analyse du script:

Le fond : 

def degradé():
    turtle.colormode(255)
    turtle.speed(0)
    global compt
    global fr
    global fg
    global fb
    while compt != 350 :
        turtle.pendown()
        turtle.pencolor(fr, fg, fb)
        turtle.pensize(3)
        turtle.forward(510)
        turtle.penup()
        turtle.right(180)
        turtle.forward(510)
        turtle.right(90)
        turtle.forward(1)
        turtle.right(90)
        fr += 1
        fg += 1
        fb += 1
        compt += 1
        if compt > 200:
            fr -= 1
            fg -= 1
            fb -= 1           

Pour commencer, nous avons programmer le fond avec un dégradé allant du noir au gris.

Dans la fonction dégradé il y a une boucle qui se répète 350 fois dans laquelle la tortue dessine ligne après ligne le dégradé en indentant les variables r,g,b de 1 a chaque ligne sans jamais dépasser la valeur 200.

Engrenages:

def n_engrenage(trait):
    turtle.left(90)
    turtle.forward(trait * 2)
    turtle.right(45)
    turtle.pencolor(couleur)
    turtle.pensize(8)
    turtle.fillcolor(couleur)
    turtle.begin_fill() 
    for i in range(12):
        turtle.forward(trait)
        turtle.right(120)
        turtle.forward(trait)
        turtle.left(90)
    turtle.end_fill()

La fonction “n_engrenage” dessine l’ engrenage à l’aide du module turtle.

La boucle “for” fait répéter 12 fois une suite d’instructions qui dessinent l’engrenage puis la fonction “turtle.fillcolor” viens définir la couleur de remplissage de l’engrenage qui débute et se finit grâce aux fonctions  “turtle.begin_fill” et “turtle.end_fill”.

Pendule: 

def disque(rayon, x, y, couleur=(1, 1, 1)):
    penup()
    goto(x, y - rayon)
    pendown()
    pencolor(couleur)
    fillcolor(couleur)
    begin_fill()
    circle(rayon)
    end_fill()

x = 25  
y = 175
radius = 30
color = (255, 255, 0)  

disque(radius, x, y, color)

import turtle

pen = turtle
pen.penup()
pen.goto(65, 190)
pen.pendown()
pen.pencolor("black")
pen.goto(175, 350)

import turtle #fonction courbe

t = turtle

t.penup()
t.goto(90,173)
t.pendown()
t.right(50)
for i in range(55):
    t.forward(1)
    t.right(1)


import turtle #fonction courbe 2

t2 = turtle

t2.penup()
t2.goto(100,180)
t2.pendown()

t2.right(290)
for i in range(75):
    t2.forward(1)
    t2.right(1)


turtle.hideturtle()

Pour fabriquer la pendule, nous avons commencé avec un plan donné par nos professeurs de NSI. Il comportait plusieurs disques placés de façon aléatoire. Ensuite, nous l’avons simplifié en utilisant les instructions « begin_fill() » et « end_fill() » pour remplir les disques. Ensuite, nous avons ajouté une simple ligne en spécifiant un point de départ et un point d’arrivée. Enfin, nous avons inclus deux courbes pour donner l’impression que la pendule bougeait.

Les problèmes rencontrés:

Parmis les nombreux problèmes rencontrés il y avait que l’exécution de la fonction dégradé prenait très longtemps a finir de s’exécuter (env 1min), pour ne pas perdre temps à relancer tout le code a chaque modification on a trouvé la solution de mettre un “#” devant la ligne qui exécutait la fonction dégradé ce qui permettait de faire passer cette ligne pour un commentaire et de simplement enlever le  # quand on voulait exécuter le script complet.

L’image final: