Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hola creadores Hoy, vamos a poner en práctica lo que vimos en la serie "Learn Arduino" y
presentaremos la biblioteca Virtuino para controlar un rover Arduino con su teléfono
inteligente gracias a Bluetooth.
¡Fue durante la competencia para convertirme en embajador de Conrad con Make It With
Conrad, que tuve la oportunidad de desarrollar este proyecto! Encontrará el tutorial
completo para la realización de este proyecto en la publicación que realicé aquí . ¡No
dudes en ayudarme votando por este proyecto! ¡Encuentra cada etapa de la construcción
del móvil Arduino controlado por bluetooth hasta la realización del chasis en 3D!
Encuentre también los archivos .STL para el chasis impreso en 3D para un rover Joy-It
para Arduino / Raspberry Pi .
Todavía aprovecharé la oportunidad para aclarar las dificultades encontradas durante la
realización de este tutorial.
El tutorial completo: Rover Arduino
o 1. Montaje del chasis
o 2. Configuración de los blindajes del motor.
o 3. Conexión de la electrónica de control.
o 4. Conexión de la electrónica de potencia.
o 5. Terminando el cableado
o 6. Programación - Rover Arduino lado
o 7. Programación: lado del teléfono inteligente con Virtuino
o 8. Paso opcional: impresión 3D de la carcasa superior del chasis
Dificultades encontradas y preguntas
o Limitaciones actuales en los motores Arduino y Shields:
o Un punto crucial sobre la autonomía del Arduino Rover:
o Raspberry Pi / Arduino y Bluetooth / Wifi diferencias:
Conclusión
El tutorial completo: Rover Arduino
1. Montaje del chasis
- Suelde los cables del kit Joy-It en los terminales de soldadura de los motores. Respete
siempre la misma dirección con el código de color (siempre rojo y negro en el mismo lado
del motor)
. Monte los motores en la primera placa del kit Joy-It de acuerdo con las instrucciones del
kit.
- Monte la segunda placa del kit Joy-It.
- Localice las fijaciones disponibles para poder colocar su Arduino UNO en esta segunda
placa.
Sabías ?
Las entradas analógicas A0 a A5 se pueden usar como entradas digitales. En el último
caso, A0 a A5 se convierte en ENTRADAS de 14 a 19.
Para el cableado de los diferentes sensores al Arduino, seguí el siguiente diagrama (haga
clic para ampliar):
4. Conexión de la electrónica de potencia.
Luego, conecte los cables de los diferentes motores a los Shields. No importa la polaridad,
solo tendrá que verificar que sea igual para los 4 motores. Para la distribución, consulte la
distribución realizada en el paso 3.
Conecte una batería de 9V a los conectores PWR de los 2 blindajes del motor.
5. Terminando el cableado
Luego, asegure todo su cableado con bridas para que sus cables no corran por todas
partes.
#include <SoftwareSerial.h>
// VirtuinoBluetooth virtuino(Serial1);
int trigAv = 7;
int trigAr = 6;
int vitesseGauche = 0;
int vitesseDroite = 0;
int capteur = 0;
void setup() {
// put your setup code here, to run once:
//virtuino.DEBUG=true; // set this value TRUE to enable the serial monitor status
//Serial.begin(9600); // Set serial monitor baud rate
bluetoothSerial.begin(9600);
virtuino.vPinMode(buzzerPin,OUTPUT);
//Gauche
pinMode(PWMArG, OUTPUT);
pinMode(PWMAvG, OUTPUT);
pinMode(dirArG, OUTPUT);
pinMode(dirAvG, OUTPUT);
//Droite
pinMode(PWMArD, OUTPUT);
pinMode(PWMAvD, OUTPUT);
pinMode(dirArD, OUTPUT);
pinMode(dirAvD, OUTPUT);
//Récepteurs Ultrasons
pinMode(echoAvG, INPUT);
pinMode(echoAvD, INPUT);
pinMode(echoArD, INPUT);
pinMode(echoArC, INPUT);
pinMode(echoArG, INPUT);
void loop() {
// put your main code here, to run repeatedly:
virtuino.run();
vitesseGauche = (int)virtuino.vMemoryRead(0);
vitesseDroite = (int)virtuino.vMemoryRead(1);
//Une mesure est réalisée toutes les 100 boucles (100 cycles), à chaque fois sur un capteur différent pour éviter la
latence de la commande.
capteur++;
switch (capteur) {
case 100:{
Distance(trigAr,echoArD,4);
break;
}
case 200:{
Distance(trigAv,echoAvG,2);
break;
}
case 300:{
Distance(trigAr,echoArC,5);
break;
}
case 400:{
Distance(trigAv,echoAvD,3);
break;
}
case 500:{
Distance(trigAr,echoArG,6);
break;
}
}
if(capteur == 500){
capteur = 0;
}
}
// Permet de faire un bip tout les 2,5 cycle (sur VD1) et de constater la longueur des cycles, et donc la latence.
if(virtuino.vDigitalMemoryRead(1) == 1){
if(capteur == 400){
digitalWrite(buzzerPin,1);
}
if(capteur == 200){
digitalWrite(buzzerPin,0);
}
}
void RAZMot(){ // Fonction permettant de réinitialiser les moteurs à 0 pour s'arrêter proprement
virtuino.vMemoryWrite(0,0);
virtuino.vMemoryWrite(1,0);
}
// Fonction qui calcule la distance selon le pin de trigger et d'echo. Le MemoryWrite designe la valeur mémoire où
écrire dans Virtuino.
void Distance(int trigPin, int echoPin, int MemoryWrite) {
// Envoie de l'onde
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Réception de l'écho
duration = pulseIn(echoPin, HIGH);
// Calcul de la distance
distance = (duration/2) / 29.1;
delay(10);
}
Luego, una vez que se inicia el software, puede personalizar la interfaz. Debe saber que
Virtuino puede trabajar directamente con los valores de INPUT / OUTPUT de Arduino, pero
también tiene un sistema llamado "memoria virtual" que permite hacer enlaces con
variables en el programa Arduino.
Las memorias programadas (en el programa del paso anterior) son:
- DV0: apagado completo de los motores móviles Arduino.
- DV1: se utiliza para emitir un pitido cada 2.5 ciclos. Esto hace posible estimar los
tiempos de latencia.
- V0: Velocidad del motor a la izquierda que puede variar de -255 (reversa) a 255 (adelante).
- V1: Velocidad del motor a la derecha que puede variar de -255 (reversa) a 255 (adelante).
- V2: Distancia medida por el sensor ultrasónico delantero izquierdo en cm.
- V3: Distancia medida por el sensor ultrasónico delantero derecho en cm.
- V4: Distancia medida por el sensor ultrasónico trasero derecho en cm.
- V5: Distancia medida por el sensor ultrasónico del centro trasero en cm.
- V6: Distancia medida por el sensor ultrasónico trasero izquierdo en cm.
También puede obtener mi archivo de configuración disponible aquí .
Para recuperarlo, descomprima el archivo .vrt en su teléfono inteligente y ábralo con
Virtuino.
Para la impresión de esta parte, los soportes son necesarios. El relleno es del 20%.
Y como beneficio adicional, agregué soporte para un CAM deportivo.
Dificultades encontradas y preguntas
Limitaciones actuales en los motores Arduino y Shields:
La primera dificultad en este proyecto se refiere a las limitaciones actuales en los pines
del Arduino. De hecho, el Arduino puede suministrar un máximo de 50 mA por pin y el
regulador de 5 V en la tarjeta no admite más de 450 mA en el consumo total. Sabiendo que
la placa Arduino puede consumir hasta 80 mA, esto nos deja alrededor de 370 mA para la
potencia de los diversos sensores y Shield Arduino para agregar. Los transmisores /
receptores ultrasónicos consumen entre 10 y 40 mA cada uno. Calculo que consumen 10
mA en reposo y 40 mA durante la medición. En el programa, solo tomaré una medida a la
vez, lo que nos da 4 * 10 + 1 * 40 = 80 mA para los sensores ultrasónicos que redondeo a
100 mA (no creo que la corriente sea siempre 10 mA en reposo, esto es solo un valor de
bajo consumo).
Las personas que leyeron este artículo también leyeron: [7] Aprenda Arduino
- Operadores
Conclusión
Estaba feliz de participar en este concurso con Conrad. Me doy cuenta de que mi primer
Rover, que requirió mucho más tiempo y desarrollo, finalmente tiene más éxito. La ventaja
aquí es que ya tenía buenas ideas con respecto a la creación de rover. Así que pude
desarrollar este proyecto rápidamente, sin tener demasiadas limitaciones.