Exposé

PROJET ROBOTIQUE

Nom de groupe:En cours de recherche...

Exposé

Fin de projet

D'abord,une carte microbit c'est quoi ??

La carte micro:bit est un ordinateur de poche que vous pouvez programmer en plusieurs langues (Bloc Editor, MicroPython, TouchDevelop , Javascript …)sur des interfaces de programmation en ligne. Vous pouvez la personnaliser et la contrôler afin de rendre concrets des jeux , des idées numériques et des applications du quotidien. La carte microbit est un dispositif de développement électronique à microcontrôleur, créé pour l'éducation en informatique.
Elle est équipée de capteurs intégrés tels que l'accéléromètre et la boussole magnétique,
de LED programmables...
La carte microbit est conçue pour enseigner les bases de la programmation et de l'électronique de manière ludique et pour débutants,
permettant aux utilisateurs de créer une variété de projets interactifs, des jeux aux appareils portables.


LES CAPTEURS MICROBIT

Un capteur est un dispositif qui détecte ou mesure un stimulus physique (comme la lumière, la température, la pression, le mouvement, etc.) et le transforme en un signal électrique, optique ou d'un autre type pouvant être interprété par un système électronique ou informatique. Les capteurs sont largement utilisés dans de nombreux domaines, y compris l'ingénierie, la robotique, l'automatisation industrielle, l'électronique...
Ils jouent un rôle essentiel dans la collecte de données sur le monde physique, ce qui permet aux systèmes de prendre des décisions, de contrôler des processus et d'interagir avec leur environnement. Ainsi, en plus d'être dotée de 25 broches et de 2 boutons-poussoirs, cette carte possède aussi 4 capteurs intégrés. Sa boussole, son accéléromètre, son capteur de lumière et de température permettent à nos robots de réagir à leur environnement.

Les voici en plus détaillés:

Capteur de temperature

Un capteur de température est un dispositif d'entrée qui mesure la température. Votre BBC micro:bit
a un capteur de température à l'intérieur du processeur qui peut vous donner une approximation de la température de l'air;


Capteur de luminosité

Un capteur de luminosité est un dispositif d'entrée qui mesure l'intensité de la lumière. Votre BBC micro:bit
utilise ses LEDs pour détecter les niveaux de lumière et vous permet de programmer votre micro:bit comme un capteur de lumière.


Boussole

Une boussole numérique est un capteur d'entrée qui détecte les champs magnétiques. Votre BBC micro:bit a une boussole intégrée qui peut détecter la direction dans laquelle il est orienté.


Accéléromètre

L' accéléromètre est un capteur qui mesure le mouvement. L'accéléromètre de votre BBC micro:bit détecte quand vous l'inclinez de gauche à droite, d'avant en arrière et de haut en bas.




Ensuite,robot CuteBot c'est quoi?

Cutebot est un robot éducatif destiné à l'apprentissage de la robotique et de la programmation, principalement pour les débutant Cutebot dispose de nombreux équipements intégrés, tels qu'un capteur à ultrasons,un capteur de distance, deux projecteurs LED RVB et des lumières de position sur la face inférieure, deux capteurs de suivi de ligne et un buzzer actif en guise de klaxon.


OBJECTIFS DE BASE NOTRE PROJECT

Notre but pour notre projet final si on n'y arrive et de programmer notre petite voiture CuteBot pour qu'elle se débrouille
seule,en automonie face à un labyrinthe.Pour cela nous allons nous servir des capteurs qui sont à notre disposition.
Plus précisement un capteur de détection d'obstacles qui permet à la voiture lorsque elle s'approche du mur du labyrinthe de changer de itinéraire.

Son code

Pour cela on a fait un code qui permet à la voiture d'éviter des obstacles, et grâce à ce programme, plus précisement grâce au bloc"[Cutebot]ditance(cm)" qui si son capteur capte un obsctale à moins de 10cm alors la voiture éxecute le programmme qui se trouve dans le bloc"sinon",soit,reculer,faire un 90° vers la droite et clignoter:






            from microbit import *
import cutebot
from machine import time_pulse_us
import utime
import neopixel
import math

""" Cutebot robot """

# Ultrasonic TRIG on pin8
# Ultrasonic ECHO on pin12
# Neopixel on pin15
npCutebot = neopixel.NeoPixel(pin15, 2)

def getUltrasonicData(trig, echo, data='distance', timeout_us=30000):
  trig.write_digital(0)
  utime.sleep_us(2)
  trig.write_digital(1)
  utime.sleep_us(10)
  trig.write_digital(0)
  echo.read_digital()
  duration = time_pulse_us(echo, 1, timeout_us)/1e6 # t_echo in seconds
  if duration > 0:
    if data == 'distance':
      #sound speed, round-trip/2, get in cm
      return 343 * duration/2 * 100
    elif data == 'duration':
      return duration
    else:
      raise ValueError("Data option '" + data + "' is not valid")
  else:
    return -1

def cutebot_blinkRobot():
  for count in range(2):
    for i in range(2):
      npCutebot[i] = (255, 0, 0)
    npCutebot.show()
    cutebot.set_right_rgb_led(255, 0, 0)
    cutebot.set_left_rgb_led(255, 0, 0)
    utime.sleep_ms(500)
    for i in range(2):
      npCutebot[i] = (0, 0, 0)
    npCutebot.show()
    cutebot.set_right_rgb_led(0, 0, 0)
    cutebot.set_left_rgb_led(0, 0, 0)
    utime.sleep_ms(500)

def convertSpeed_mps(speed, max_speed, max_rpm, wheels_diameter):
  # 2π * wheels_diameter / 2 * speed_rpm / 60
  return 2*math.pi*wheels_diameter/2*1e-2*(speed/max_speed*max_rpm)/60

def cutebot_moveWithSquare(x, direction, speed=100):
  speed_mps = convertSpeed_mps(speed, 100, 300, 3.4)
  for i in range(int(x)):
    if (direction == 'forward') :
      cutebot.set_motors_speed(speed,speed)
    else :
      cutebot.set_motors_speed(-speed,-speed)
    utime.sleep_ms(int(15e-2/speed_mps*1000))
    cutebot.stop()

def cutebot_turnAngle(angle, speed=100):
  speed_mps = convertSpeed_mps(speed, 100, 300, 3.4)
  # wheels_center_radius * degToRad(angle)
  angularDistance = 2.8*1e-2*angle/180*math.pi
  if (angle < 0) :
    cutebot.set_motors_speed(speed,-speed)
  else :
    cutebot.set_motors_speed(-speed,speed)
  utime.sleep_ms(int(math.fabs(angularDistance)/speed_mps*1000))
  cutebot.stop()

while True:
  if getUltrasonicData(pin8, pin12, 'distance') > 10:
    cutebot.set_motors_speed(40,40)
  else:
    cutebot_blinkRobot()
    cutebot_moveWithSquare(1, 'backward', 30)
    cutebot_turnAngle(-90, 20)
    cutebot_moveWithSquare(1, 'forward', 30)

Petite aparté sur les problémes rencontré:

D'abord,chaque robot lui est attribué des actions spécifiques,donc si on programme des actions qui appartiennent à un autre style de robots il ne les reconnaitra pas ces actions.On a confudu notre robot avec une MaQueen De plus même si nous avons le mode code qui permet de programmer plus facilement que Pyhton,lorsque il y a probléme,le probléme est indiqué dans le code python.