Author: Camille C.

Tutoriels

Comment créer un mini tank avec Thinkercard

Tinkercad est un logiciel en ligne permettant de créer des modèles 3D, de programmer en utilisant un format bloc intuitif, et de concevoir des circuits électroniques avec un large choix de cartes et de composants. Grâce à cet outil, vous pouvez conceptualiser vos projets avant de les réaliser physiquement. Passer par ce logiciel vous permettra de gagner un temps précieux dans la phase de conception, car vous pourrez visualiser, tester et ajuster vos idées avant de passer à l’assemblage réel. Ce guide vous montrera comment utiliser Tinkercad pour créer un tank en Arduino, un projet qui mêle électronique, programmation et modélisation 3D vous permettant d’acquérir de bonnes bases pour vos futures projets.

Se connecter et démarrer son premier projet

Tout d’abord, rendez-vous sur Tinkercad et connectez vous à votre compte. Une fois sur votre tableau de bord, suivez ces étapes :

  1. Cliquez sur le bouton « Créer ».
  2. Sélectionnez « Circuit » pour ouvrir l’interface de conception de circuits.

Ensuite nous allons déposer tout les éléments dont nous avons besoins

Composants :

  • Arduino Uno
  • Deux moteurs DC
  • Driver moteur L293D
  • Châssis (que nous allons réaliser plus tard dans le tutoriel)
  • planche d’essai (qui permet de relier les composants entre eux)

Branchements

commencer par placer le driver au centre de la planche d’essai afin qu’il puisse interagir avec les deux côté de la planche

Ensuite relier les broche 5v et groundde l’arduino à la planche afin d’alimenter celle ci. ensuite reliez les moteurs sur les sorties du driver (vous avez les informations des pins que vous survoler avec la souris)
reliez les bornes plus et moins du haut de la planche au bas de la planche permettant une alimentation des deux côtés de la planche. puis relier les grounds du driver

Afin de contrôler les moteurs l’Arduino doit envoyer des signaux au driver, ces signaux passent par des câbles que nous allons poser (les couleurs des câbles n’influent pas sur le signal elle servent à se repérer dans le câblage car vous allez vite voir que cela se complique, par convention les câbles rouge et noir sont attribué au + et le -)

les bornes 6 et 5 sont reliée au bornes activées
les bornes 10 et 4 sont reliée au bornes d’entrées du bas et 11 et 3 à celles du haut

voilà vous avez votre circuit complété ! passons à l’étape suivante qui est le code.

le code

L’Arduino utilise le langage C++, il peut bien sûr être angoissant de se dire qu’il faut apprendre un tout nouveau langage de programmation surtout si on ne sait même pas coder en python. Mais pas de panique cliquez sur le bouton code

et vous verrez que thinkercard on pensé à tout!! en effet vous avez la possibilité de coder en blocs ce qui es beaucoup plus facile à comprendre.

enlevez le code existant et remplacer le par cela

compréhensible non?
laissez mois vous expliquer ce code et pourquoi nous avons fait ses branchements.

les broches 5 et 6 sont relié au pin d’activation, plus le signal sera grand plus la vitesse de rotation sera grande.

les broches 11 et 3 ainsi que les broches 10 et 4 fonctionnent sur le même principe.
chacune des broches sont reliée au pin d’entrée 1, 2 pour 4, 10 et 3, 4 pour 11, 3
ses entrées définissent le sens de rotation du moteur c’est pour ça que les broches 11 et 10 sont réglé sur élevé car dans cette configuration ce code permet de faire avancer le tank

ce code ci fait pivoter le tank à une vitesse plus réduite.

Conception 3d de notre char

revenez sur votre Dashboard puis commencer une conception 3d

vous disposez de plusieurs formes pour faire votre tank

en cliquant sur électronique vous pouvez insérer votre Arduino et vos moteurs

voici ce que j’ai pu réaliser

en effet il n’est pas très esthétique mais tout y est j’ai même utiliser un rectangle blanc pour simuler la planche d’essai.

si vous n’êtes pas un grand artiste la communauté de thinkercard propose un tas de modèle 3d

voici un modèle crée par kaderuss qui pourrait servir de bonne base

il vous suffit de cliquer sur copier et éditer et vous pourrez le remanier à votre sauce.

Conclusion

Félicitations ! Vous avez désormais les bases pour créer un tank fonctionnel avec Tinkercad et Arduino.

Grâce à Tinkercad, vous avez pu expérimenter dans un environnement virtuel sécurisé avant de passer à une réalisation physique. Cela vous permet d’éviter des erreurs coûteuses ou de simplifier les ajustements nécessaires.

Vous pouvez maintenant aller plus loin en personnalisant votre tank :

  • Ajouter des capteurs pour le rendre autonome.
  • Intégrer une télécommande pour un contrôle à distance.
  • Améliorer son design avec des outils de modélisation avancés.

La clé du succès dans ce genre de projet est la curiosité et la persévérance. Continuez à explorer, tester et apprendre !
Et maintenant que vous avez votre concept il ne vous reste plus qu’à le concrétiser, bon courage.

Si ce tutoriel vous a été utile, n’hésitez pas à le partager. Bon courage pour vos futurs projets !

Art

Miata: une route de nuit

Il s’agit d’un projet d’art génératif réalisé en utilisant principalement le module turtle de python . Nous avons décider de générer une Mazda mx-5 aussi appelée Miata sur une route de nuit avec des étoiles générées aléatoirement.

Le script

On commence par importer les modules dont on a besoin pour la suite tout en définissant la taille de l’image grâce au module pillow

from turtle import *
from random import randint
try:
    from PIL import *
    pillow_installed = True
except:
    print("Oops! - ModuleNotFoundError: No module named 'PIL' - RTFM :")
    print("https://nsi.xyz/py2png")
    pillow_installed = False
# Uniquement des lettres, des chiffres, un tiret. Rien d'autre.
titre = "MIATA"
# Définir le titre de la fenêtre de turtle + propagande ^^
title(titre+" | Au lycée, la meilleure spécialité, c'est la spé NSI")
# definir la taille de la fenêtre en 720p (Largeur, Hauteur)
# La tortue part du centre, au point de coordonnées (0,0)
setup(800, 700)
# La tortue va à la vitesse du lièvre et active sa cape d'invisibilité
speed(0)
hideturtle()

Image de fond

On génère ensuite l’image en commençant par le fond

On commence par le ciel de nuit et les étoiles

def star():

     pensize(3)
     seth(randint(0,360))
     e = randint(2,6)
     color("#F2F3CF")
     penup()
     goto(randint(-400,400),randint(85,350))
     pendown()
     for i in range(5):
        forward(e)
        right(142)

speed(0)
pensize(10000)
hideturtle()
color("#07073C")
forward(10)

for i in range(18):
    star()
penup()
goto(-250,300)
pendown()
pensize(2)
begin_fill()
seth(210)
color("#BFC298")
for i in range(

On commence par définir la fonction star() qui nous sert a générer une étoile d’une taille aléatoire a une position elle aussi aléatoire dans la zone qui sera le ciel pour éviter qu’elle finisse cachée par les autres éléments qui seront générés par la suite. Ensuite on fait un fond bleu nuit qui prend l’entièreté de l’écran en mettant une taille de crayon très grande et on génère 18 étoiles en utilisant une boucle qui répète la fonction star() puis on fait un croissant de lune en faisant des boucles donnant des arrondis . Ainsi on obtient cela:

on continue en ajoutant une forêt qui sera derrière la voiture

goto(-400,75)
pendown()
pensize(2)
color("#2C4D20")
begin_fill()
for i in range(3):
    seth(45)
    forward(77)
    right(90)
    forward(70)
    seth(45)
    forward(60)
    right(90)
    forward(80)
    seth(45)
    forward(50)
    right(90)
    forward(43)
right(45)
forward(460)
right(90)
forward(810)
right(90)
forward(455)
end_fill()

Ce code nous permet de générer des triangles de 3 tailles différentes que l’on va remplir fin de donner l’illusion d’une forêt dense en utilisant un vert foncé

On continue en réalisant la route

seth(0)
goto(-450,-125)
pensize(30)
color("#373639")
forward(900)
penup()

goto(-400,-175)
pendown()
pensize(2)
begin_fill()
color("#262527")
forward(800)
right(90)
forward(200)
right(90)
forward(800)
right(90)
forward(200)
end_fill()

goto(-400,-180)
pensize(7)
seth(0)
for i in range(4):
    color("white")
    forward(100)
    penup()
    forward(100)
    pendown()

Ce code nous permet de faire un grand trait de couleur grise pour représenter la barrière puis il génère un grand rectangle qui représente la route en y ajoutant des bandes blanches, créant ainsi une route.

La voiture

On passe ensuite à la partie la plus importante du script: la voiture

def phares():
    left(30)  
    fillcolor('gray')
    begin_fill()
    left(80)
    color('yellow')
    pensize(4)
    forward(25)
    pensize(1)
    color('gray')
    right(120)
    forward(30)
    right(130)
    forward(30)
    end_fill()
    forward(-31)
    color('red')
    pensize(4)
    right(50)
    forward(32)
    forward(-32)
    color('red')
    right(125)
    pensize(1)
    pendown()
def jantes():
    color('gray')
    begin_fill()
    fillcolor('black')
    circle(30)
    end_fill()
    forward(5)
    left(90)
    forward(10)
    pendown()
    begin_fill()
    fillcolor('silver')
jantes()

Cette partie nous permet de faire l’avant de la voiture en définissant la fonction pour faire une roue composée d’un pneu et d’une jante, inspiré des jantes BBS et ainsi que la fonction qui servira à faire le phare avant

pensize(1)
color('black')
fillcolor('red')
for i in range (35):
    forward(1)
    right(0.75)
right(75)

forward(50)
right(90)
for i in range(169):
    forward(0.5)
    left(1)
right(94)
forward(20)
end_fill()
right(85)
forward(52)
right(163)
penup()
forward(63)
pendown()
jantes()

Résultat final

Il s’agit de la fin du code pour l’image, terminant la Miata en faisant l’habitacle composé du toit de la voiture et d’une fenêtre puis l’arrière de la voiture en rappelant la fonction définie plus tôt afin de faire la seconde roue

Pour conclure on met la dernière partie de code pour exporter l’image en fichier.png

# ============== GENERER DES IMAGES AUTOMATIQUEMENT ==============

if flash:
    wn.update() 

image = getcanvas()
nom_du_fichier_sans_extension=titre+"_"+hex(randint(2**30+2**25,2**30+2**25+2**24-1))[2:]

# Génère un fichier .ps
image.postscript(file=nom_du_fichier_sans_extension+".ps", colormode='color')

# Ouvre le fichier .ps et génère le fichier .png


try:
    psimage = Image.open(nom_du_fichier_sans_extension+".ps")
    psimage.load(scale=2)
    psimage_resized = psimage.resize((1280, 720))
    psimage.save(nom_du_fichier_sans_extension+".png")
    print(nom_du_fichier_sans_extension+".png", psimage.size, "sauvegardé dans le dossier")    

except:
    if not pillow_installed:
        print("Oops! - ModuleNotFoundError: No module named 'PIL' - RTFM :")
        print("https://nsi.xyz/py2png")
    else:
        print("Oops! - 'ghostscript' not installed- RTFM :")
        print("https://nsi.xyz/py2png")

exitonclick()

Télécharger le projet