Robot Detector de Obstáculos con Arduino
Robot Detector de Obstáculos con Arduino
Encadré par:
Pr YOUNES ADNANI
2 SNAPPY ROS..............................................................................................................................25
2-1 Definición :.................................................................................................................................25
2
2-2 Rol :............................................................................................................................................25
Instalación 2-3 de la biblioteca Snappy-ros :.................................................................25
3-Instalación de Firebase en NodeRED:........................................................................................26
4 La conexión entre Firebase, Node Red y Topics:.......................................................................26
VI. Creación de aplicaciones, utilizando el sitio MIT App Inventor:..........................................27
VII. La aplicación está creada:...............................................................................................................28
VIII. Código Arduino................................................................................................................................28
3
Lista de figuras:
FFIGURA1:UNE CARTEARDUINOUNO..................................................................................7
FFIGURA2:CAPTEUR ULTRA-SONHC-SR04.............................................................................8
FFIGURA3:DDESCRIPCIÓN DEL SENSOR ULTRA-SONHC-SR04.....................................................8
FFIGURA4:ILLUSTRATION DU SIGNAL DISPARADORETECHO.........................................................9
FFIGURA5:MOTEURDC.....................................................................................................10
FIGURAR6:MÓDULOBLUETOOTHHC-05...............................................................................10
FFIGURA7: SYNOPTIQUE DU DRIVER MOTOR.........................................................................11
FFIGURA8:STRAMPAS............................................................................................................13
FIGURE9:: BBATTERIES DE3.7V..........................................................................................14
FFIGURA10:EL SOFTWAREARDUINO.......................................................................................16
4
Introducción general al proyecto:
Este informe detallará las diferentes fases del proyecto, desde el diseño del hardware hasta
la programación del comportamiento del robot a través de la implementación de
la infraestructura en la nube y del sistema ROS. También evaluaremos el rendimiento de
nuestra solución y discutiremos las perspectivas de mejora para el futuro
iteraciones del proyecto.
La idea es utilizar una tarjeta Arduino para leer los datos recibidos por uno o varios
sensor(es) ultrasónico(s).
Cuando el sensor detecta un obstáculo frente a él, el Arduino debe enviar instrucciones a
motores que impulsan las ruedas del robot para evitarlo. El robot estaría en parte constituido por
chasis y componentes electrónicos (Arduino, sensor ultrasónico, motores, …) sería
fixé au châssis simplement à l’aide d’une colle.
Los materiales que necesitamos para construir este robot son:
Arduino UNO.
Un sensor ultrasónico HC-SR04.
Dos motores de CC para controlar las ruedas del robot.
Una pila de 11V y conectores para alimentar los motores de CC.
Controlador de motor L298N
Dos ruedas
Módulo Bluetooth HC05
Cables jumper
1. La tarjeta Arduino
Una tarjeta Arduino es una pequeña placa electrónica equipada con un microcontrolador. El
El microcontrolador permite, a partir de eventos detectados por sensores, programar y
comandar actuadores; la placa Arduino es, por lo tanto, una interfaz programable.
Se puede programar para analizar y producir señales eléctricas, de manera que
realizar tareas muy diversas como el control de los aparatos domésticos, la iluminación,
calefacción, la maniobra de un robot, la informática integrada, etc.
Existen varios tipos de tarjetas Arduino, nos hemos orientado únicamente hacia el tipo el
más frecuente que es la tarjeta Arduino UNO Para realizar este montaje, se debe asegurar la
vínculo entre cada componente electrónico y nuestra placa Arduino.
En total, necesitaremos una placa Arduino que contenga al menos 9 pines digitales, y
también quien será capaz de ejecutar lo más rápido posible el algoritmo grabado en su memoria.
En cambio, la tarjeta Arduino UNO es la más adecuada para esta situación vista
que posee 14 pines digitales (de los cuales 6 con PWM) y 6 pines de entrada analógica.
2 Sensores ultrasónicos
7
2-1 Funcionamiento del sensor
8
3 Motor de CC
9
Figura 6: módulo Bluetooth HC-05
4-1Description :
Este módulo Bluetooth permite agregar una conexión serie inalámbrica Bluetooth en su
ARDUINO. Se comunica con el microcontrolador a través de un puerto serie.
Especificaciones
100 % compatible con
ARDUINO
Tension nominale : 3,3 V- 5
V MAX
Antena de 2,4 GHz
integrada
Controle tu
ARDUINO inalámbrico
10
Príncipe de funcionamiento
Descripción
El controlador de motor L298N es un circuito monolítico integrado en cajas Milliwatt y
PowerSO20 a 15 pines. Se trata de un controlador de puente completo doble de alta tensión y a
corriente alta diseñada para aceptar las cargas inductivas de entrenamiento de arena de nivel
lógica TTL estándar como relés, solenoides, motores de corriente continua y paso
a pasos. Se proporcionan dos entradas de validación para activar o desactivar el dispositivo
independientemente de las señales de entrada. Los emisores de los transistores inferiores de cada
puntos están conectados entre sí y la terminal externa correspondiente puede ser utilizada para la
connexion d'une résistance de détection externe. Une entrée d'alimentation supplémentaire
se proporciona para que la lógica funcione a un voltaje inferior.
11
Caractéristiqes :
El módulo L298N permite controlar por separado dos motores de corriente continua DC de
3 a 30V, o un motor paso a paso, este último fabricado en 1930, su verdadero desarrollo
está relacionado con el evento de la micro-informática (microprocesador). El motor paso a paso puede
llenar dos funciones :
- conversion d’énergie électrique en énergie mécanique (c’est le moteur classique).
conversión de información digital en un posicionamiento angular o lineal.
El controlador de motor L298N funciona con una interfaz de comando TTL de 5V (por lo tanto, compatible
con ARDUINO o con muchos otros microcontroladores de baja tensión). incluye
dos puentes en H para conmutar las corrientes (2A por puente en pico, 20W). Este módulo permite
de hacer variar la velocidad de rotación (en modulación PWM) y de invertir el sentido de rotación
de motores. Puede controlar cargas inductivas (bobinados, relés), las salidas de
Las potencias están protegidas por diodos de rueda libre anti-retorno.
Programación de controlador motor L298N:
El siguiente programa permite poner en movimiento el motor conectado al puente B en
pasando por el puerto serie. A través del monitor serie, se envía un entero entre -255
et 255 pour actionner le moteur, la valeur 0 signifiant « arrêt du moteur » [annexe 1]
Aplicación del controlador de motor L298N :
El circuito integrado del controlador de motor L298N tiene muchas aplicaciones en el campo
embarcado, en particular en el lado de la robótica. La mayoría de los microcontroladores
funcionan a una tensión y una corriente muy bajas (5v) mientras que los motores requieren
des tensiones y una corriente más altas. Así, los microcontroladores no pueden proporcionarles
12
un corriente también más alta. Para ello, utilizamos circuitos integrados de control de
motor. El controlador del motor es un pequeño amplificador de corriente o de tensión. Toma un
señal de corriente débil y emite una señal de corriente alta que puede impulsarse un motor. Él
también puede controlar la dirección del motor. Los accionamientos del motor son de
numerosos tipos según la tensión de alimentación máxima, la corriente de salida
máximo, de la disipaicón de potencia nominal, de la tensión de carga y del número de
salidas, etc. Aquí discutiremos el controlador de motor L298N. Se utiliza en el proyecto de
control de la velocidad del motor de corriente continua y puedes interfazarlo fácilmente
motor de corriente continua con el microcontrolador mediante este controlador de motor. Y también
en un robot controlado por Bluetooth que utiliza un microcontrolador PIC. Puede consultar
el robot seguidor de línea para saber más sobre sus aplicaciones.
Los hilos conectores
Los cables, hilos o conectores son elementos necesarios para establecer conexiones
entre diferentes componentes eléctricos.
Figura 8: Correas
13
Figura 9:: Baterías de 3.7V
1 2 3
14
4 5
15
Parte 2: Estudio de la parte Software
Esta parte está dedicada a la representación de las plataformas informáticas utilizadas en el
desarrollo del sistema robótico.
I. Plataforma de programación Arduino
La interfaz del IDE de Arduino es bastante simple, ofrece una interfaz mínima y limpia para
desarrollar un programa en las tarjetas Arduino. Tiene un editor de código con
sintaxis de coloración y una barra de herramientas rápida. Estos son los dos elementos más
importantes de la interfaz, son aquellos que utilizamos con mayor frecuencia. También encontramos una
barra de menús, más clásica que se utiliza para acceder a las funciones avanzadas del IDE.
Finalmente, una consola que muestra los resultados de la compilación del código fuente, de las operaciones sobre
la carta, etc.
16
a. Ecriture d’un programme Arduino
Un programa Arduino (Sketch) = 1 función setup() + 1 función loop() El lenguaje utilizado
C/C++
17
II. Ubuntu 2024 y VMWare WorkStation
Nodos: Un nodo es un ejecutable que utiliza ROS para comunicarse con otros.
nodos.
Mensajes: Tipo de datos ROS utilizados para suscribirse o publicar en un tema.
Los nodos pueden publicar mensajes en un tema así como suscribirse.
a un tema para recibir mensajes.
Maestro: Nombre del servicio para ROS (es decir, ayuda a los nodos a encontrarse mutuamente).
Los paquetes fuente no tienen una estructura jerárquica (o de un solo nivel cuando los
los depósitos contienen varios paquetes ROS).
18
2 Instalación de ROS :
Actualice la lista de paquetes disponibles e instale ROS con el siguiente comando:
19
4 Creación del Espacio de Trabajo:
Para crear un espacio de trabajo (workspace) en ROS, utilizamos los comandos
siguientes :
20
7 Creación de los nodos:
Una vez que hayas utilizado el comando "touch subscriber_node.py" para crear un
nuevo archivo llamado "subscriber_node.py", que podría servir de base para la creación
de un nodo ROS, este archivo se crea de manera no ejecutable por defecto. Para hacerlo ejecutable
ejecutable y así permitir su ejecución como programa o script, puede
utilizar el comando "chmod +x subscriber_node.py". Esto agregará el derecho de ejecución al
archivo, lo que le permitirá ejecutar el script directamente sin necesidad de especificar
el intérprete de comandos. Este paso facilita el proceso de desarrollo y prueba de
nodos ROS.
Al crear de la misma manera el nodo Publisher.
21
El código que asegura el control del robot:
9 le ROS Master:
Facilite el descubrimiento dinámico de nodos en una red ROS, permitiendo que
diferentes componentes del sistema para comunicarse entre sí de manera flexible. Él
simplifica la gestión del entorno ROS proporcionando un punto central de
coordinación e información para los nodos del sistema.
22
El comando rosrun en ROS permite iniciar un nodo específico especificando el nombre.
el paquete donde se encuentra el nodo así como el nombre del nodo mismo. Este comando es
utilizada para ejecutar nodos particulares. Para interactuar con los temas:
23
1 Lanzamiento de Node RED :
24
2 ROS RÁPIDOS:
2-1 Definición :
Snappy ROS es un módulo o una biblioteca que permite a Node-RED de
comunicar con sistemas robóticos utilizando el Sistema Operativo de Robots (ROS). Él
utiliza el protocolo 'Snappy' para intercambiar mensajes y datos con los nodos
ROS, permitiendo así una integración transparente entre Node-RED y el ecosistema ROS.
2-2 Rol :
Snappy ROS en Node-RED facilita la integración y la comunicación entre Node-RED
y el ecosistema ROS, que permite a los desarrolladores crear aplicaciones robóticas
más ricas y más interactivas al combinar las funcionalidades de estas dos plataformas
formas.
25
3-Instalación de Firebase en NodeRED:
V. FireBase
26
Firebase es una plataforma de desarrollo de aplicaciones móviles y web ofrecida por
Google. Ofrece una gama de servicios de backend listos para usar, SDK para
varias plataformas y herramientas de desarrollo y prueba para ayudar a los desarrolladores a
crear, mejorar y hacer evolucionar sus aplicaciones. Firebase es conocida por su facilidad
de integración, su alta disponibilidad y su alto rendimiento, lo que lo convierte en una opción
popular entre les développeurs cherchant à construire des applications modernes et
evolutivas.
27
VII. La aplicación está creada:
#include <ros.h>
#include <std_msgs/Int32.h>
int m1a = 9;
int m1b = 10;
int m2a = 11;
int m2b = 12;
int speedPinRight = 2;
int speedPinLeft = 3;
int demar = 0;
#define trigPin 6
#define echoPin 7
ros::NodeHandle nh;
28
{
Hacia atrás();
demar = 1;
}
else if(statue == 4)
{
girarIzquierda();
demar = 1;
}
else if(estatua == 1)
{
Adelante();
demar = 1;
}
else if(estatua == 3)
{
girarDerecha();
demar = 1;
}
else if(statue == 0)
{
detener();
demar = 1;
}
}
std_msgs::Int32 CapteurROS;
ros::Publisher CapteurROSPublisher("Capteur", &CapteurROS);
ros::Subscriber<std_msgs::Int32> EtatROSsubscriber("Etat", &callBackFunctionEtat);
29
void setup() {
[Link]()->setBaud(9600);
[Link]();
[Link](EtatROSsubscriber);
[Link](CapteurROSPublisher);
//______________________________SALIDA ENTRADA
pinMode(speedPinRight, SALIDA);
pinMode(speedPinLeft, SALIDA);
pinMode(m1a, SALIDA);
pinMode(m1b, SALIDA);
pinMode(m2a, SALIDA);
pinMode(m2b, SALIDA);
pinMode(trigPin, SALIDA);
pinMode(echoPin, ENTRADA);
}
void loop() {
[Link]();
retraso(5);
si (demar == 1) {
long duration, distance;
digitalWrite(trigPin, BAJO);
retrasarMicrosegundos(2);
digitalWrite(trigPin, ALTO);
delayMicroseconds(10);
digitalWrite(trigPin, BAJO);
duración = pulseIn(pinoEco, ALTO);
distancia = (duración/2) / 29.1;
si (distancia < 15) {
[Link] = 1 ;
}
30
else {
[Link] = 0 ;
}
[Link](&CapteurROS);
}
}
void Regresar(){
digitalWrite(m1a, ALTO);
digitalWrite(m2a, BAJO);
digitalWrite(m1b, BAJO);
digitalWrite(m2b, ALTO);
analogWrite(puertoVelocidadDerecho, 150);
analogWrite(speedPinLeft, 150);
}
void Adelante() {
digitalWrite(m1a, BAJO);
digitalWrite(m2a, ALTO);
digitalWrite(m1b, ALTO);
digitalWrite(m2b, BAJO);
analogWrite(speedPinRight, 150);
analogWrite(speedPinLeft, 150);
}
void girarIzquierda(){
digitalWrite(m1a, BAJO);
digitalWrite(m2a, BAJO);
digitalWrite(m1b, ALTO);
digitalWrite(m2b, BAJO);
analogWrite(puertoVelocidadIzquierdo, 150);
}
void girarDerecha(){}
31
digitalWrite(m1a, BAJO);
digitalWrite(m2a, ALTO);
digitalWrite(m1b, BAJO);
digitalWrite(m2b, BAJO);
analogWrite(pinDerechoVelocidad, 150);
}
void detener() {
digitalWrite(m1a, BAJO);
digitalWrite(m2a, BAJO);
digitalWrite(m1b, BAJO);
digitalWrite(m2b, BAJO);
}
32
Tema sensor
Datos '0' ausencia de obstáculo.
Data’1’ presencia de obstáculo
Tema estado :
33
X. Les étapes pour contrôler notre robot :
Conclusión general:
34
A lo largo de estos mini-proyectos, hemos explorado dos enfoques distintos para el
desarrollo de sistemas embebidos y robots inteligentes. El primer mini-proyecto se ha
concentrado en la creación de un robot detector de presencia equipado con sensores ultrasónicos,
mientras que el segundo mini-proyecto implementó una aplicación de robótica en la nube utilizando el
ROS (Sistema Operativo de Robots).
35