Robot humanoïde

Le robot humanoïde est un projet de sciences de l'ingénieur, qui dans un premier temps va permettre de diffuser des lectures de textes, en collaboration avec une professeure de français.

Le nom de ce projet est R.A.P.A.C.E. pour Robot Automatisé Programmé Avec Carte Electronique et est à but pédagogique. (uniquement pour le style :-) )

C'est un projet porté par: Maxence, Anatole et Noa (groupe MAN)

Le but premier de se projet est de pouvoir faire quelques mouvements, ainsi que de produire des sons. Mais, étant donné que le public visé est un jeune public dans le cadre scolaire, nous avons décidés de rajouter de petites fonctionnalités tels que des yeux animés (écran) et un visage pouvant être personnalisé par des enfants et facilement changé. 

Nos contraintes étaient les suivantes:


Nous avons donc commencés par faire des croquis en s'inspirant tout d'abord de Wall-E:

Mais, ce modèle étant trop complexe, nous avons commencés à nous orienter vers un projet un peu plus humanoïde:

Des modélisations déjà existantes nous ont ensuite étés fournies par notre professeur:

Nous avons ensuite commencés à faire un programme pour contrôler ces moteurs:


from machine import Pin, PWM

import time


PWM_Servo1 = PWM(Pin(37))# GPIO12 sur D2

PWM_Servo2 = PWM(Pin(35))# GPIO12 sur D1

PWM_Servo1.freq(50)

PWM_Servo2.freq(50)

def pgr1():

    for A in range(40, 130, 10) :

        PWM_Servo1.duty(A)  # On commande le servomoteur avec un rapport cyclique A/1024

        time.sleep_ms(500)  # On attend avant de changer de position


def pgr2():

    PWM_Servo1.duty(65)

    time.sleep_ms(100)

    

def pgr3(a):

    if a==1 :

        PWM_Servo2.duty(65)

        time.sleep_ms(1000)

        PWM_Servo2.duty(50)

        time.sleep_ms(1000)

        PWM_Servo2.duty(80)

        time.sleep_ms(1000)



Puis, nous avons modélisés le visage

Après, nous avons fait une première version du "corps" du robot:

Ainsi qu'un programme afin de faire un affichage au niveau des yeux:


from machine import Pin, SoftI2C

from lib import ssd1306

import time


i2c = SoftI2C(scl=Pin(35), sda=Pin(33), freq=400000)

display = ssd1306.SSD1306_I2C(128, 64, i2c)


pupille_x = 105

pupille_y = 32


def dessin_oeil(pupille_x, pupille_y):

    display.fill(0)

    # Grand contour Oeil

    display.ellipse(64, 32, 60, 30, 1)

    # Pupille pleine

    radius = 15

    for x in range(-radius, radius + 1):

        for y in range(-radius, radius + 1):

            if x * x + y * y <= radius * radius:

                display.pixel(pupille_x + x, pupille_y + y, 1)

    display.show()


while True:

    for x in range(105, 22, -1):

        dessin_oeil(x, pupille_y)

        time.sleep_ms(20)


    for x in range(22, 105):

        dessin_oeil(x, pupille_y)

        time.sleep_ms(20)



A suivre...

R.A.P.A.C.E., par le groupe M.A.N.

Rédacteur: RAULT Maxence