Robot evita ostacoli

Tesine 2015-18

Scritto da Zhou Massimo Weijun
Zhou Massimo - Classe 5^A IPAI - A.S. 2016/2017
Arduino robot evita ostacoli
 
Applicazione con Arduino

In questo progetto costruiremo una macchinina (Robot Car) in grado di rilevare ciò che la circonda ed evitare gli ostacoli, grazie al sensore ad ultrasuoni HC-SR04 al servo e ai motori controllati tramite il modulo ​L298N Dual H-Bridge (Controllo Motori).

Cattura
a) Arduino Uno (Sistema di sviluppo programmabile)
b) Modulo sensore HC-SR04 (sensore ad ultrasuoni)
c) Servo
d) Modulo L298N Dual H-Bridge (Controllo motori)
e) Arduino Sensor Shield
 

 

La robotica

La robotica è una scienza che studia i comportamenti degli esseri intelligenti e cerca di sviluppare delle metodologie che permettano ad una macchina, chiamata robot, dotata di opportuni dispositivi adatti a percepire l'ambiente circostante ed a interagire con esso, di eseguire dei compiti specifici.

Rappresenta la soluzione a vari problemi per gli umani, che possono liberarsi di compiti troppo noiosi, lunghi, pericolosi, faticosi, veloci o precisi.

La disciplina nasce dal desiderio degli uomini di realizzare dispositivi artificiali e autonomi dotati di una propria intelligenza.

La Robotica non è importante soltanto per imparare a costruire e ad usare i robot, ma anche per imparare un metodo di ragionamento e sperimentazione, infatti raccoglie molti studi interdisciplinari, quali ad esempio la meccanica, l'elettronica, l'informatica, la sensoristica, l'intelligenza artificiale e la matematica.

 
 Roboticsblangi 2 3
Robotics is the science of studying and creating robots for manufacturing.
The first industrial robot main task was to move objects from one place to another.
Robots are usually used for repetitive and dangerous works.
Robots can perform their tasks only if they are correctly programmed by a person, they can be programmed in many ways like the lead-through programming,the walk-through programming or by using a remote programming computer.
The CNC is the system which give instructions to robots.
They can also be used in the medical field since a robotic hand is most precise and is faster than a human hand.

 

 

Elementi principali

sdsdfsdf ertert htyjertjertergherh rtjue5tykjtedkdfhrtjhrtj      retuertuertu

a)Arduino uno

SPECIFICHE TECNICHE:A000066 Arduino Uno TH 2tri

 Microcontrollore: A Tmega328
 Tensione di funzionamento: 5V

 Tensione di Alimentazione (raccomandata): 7-12V
 Massima Tensione supportata (non raccomandata): 20V
 I/O digitali: 14 (6 dei quali con uscita PWM)
 Ingressi analogici: 6
 Corrente in uscita per I/O Pin: 40 mA
 Corrente in uscita per 3.3V Pin: 50 mA
 Memoria Flash: 32 KB (ATmega328) di cui 0.5 KB usata     
bootloader
 SRAM: 2 KB (ATmega328)
 EEPROM: 1 KB (ATmega328)
 Velocità di clock
16 MHz

 

 

Arduino è un sistema (framework) open source che permette la prototipazione rapida e l'apprendimento veloce dei principi fondamentali dell'elettronica e della programmazione. È composto da una piattaforma hardware per il physical computing sviluppata presso l'Interaction Design Institute, un istituto di formazione post- dottorale con sede a Ivrea, fondato da Olivetti e Telecom Italia.  Questa si basa su un circuito stampato che integra un microcontrollore con pin connessi alle porte I/O, un regolatore di tensione e un'interfaccia USB che permette la comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (Linux, Apple Macintosh e Windows). Questo software permette di scrivere programmi (sketch ) con un linguaggio semplice e intuitivo derivato da C/C++ chiamato Wiring (cablare, collegare con cavi).  Arduino può essere utilizzato per lo sviluppo di oggetti interattivi stand-alone (funzionare da solo)ma può anche interagire, tramite collegamento, con software residenti su computer. La particolarità del progetto è che le informazioni sull'hardware e soprattutto i progetti sono disponibili per chiunque: si tratta quindi di un hardware open source.

 

b) Modulo ad ultruasuoni hc-sr04

Modulo UltraduoniQuesto modulo, con tecnologia ad ultrasuoni, è capace di misurare una distanza compresa in un range tra 2-400 cm con una precisione di 3 mm.
E' solitamente usato in applicazioni di robotica, sistemi di sicurezza, misuratore di livello nei serbatoi o in sostituzione di unità ad infrarossi.
Il sensore HC-SR04 è costituito da una scheda, che presenta nella sua parte posteriore un circuito elettronico basato su un microcontrollore della ST, e nella parte anteriore sono presenti un quarzo e due cilindri metallici, i trasduttori ad ultrasuoni. Uno di questi invia ultrasuoni (TX) che rimbalzano contro ad un qualunque oggetto posto di fronte ad esso, ed entrano di ritorno nell'altro cilindro (RX).

Il modulo dispone di quattro terminali di collegamento, due di alimentazione (Vcc, GND) e due di controllo (Trigger, Echo).

Tabella

 

 cServo motore

Nella robotica per gli azionamenti, sono molto utilizzati i servomotori.

Struttura Servo

Di solito questi si presentano come piccoli contenitori di materiale plastico da cui fuoriesce un perno in grado di ruotare in un angolo compreso tra 0 e 180° mantenendo stabilmente la posizione raggiunta. Per ottenere la rotazione del perno è utilizzato un motore a corrente continua e un meccanismo di demoltiplica che consente di aumentare la coppia in fase di rotazione. La rotazione del motore è effettuata tramite un circuito di controllo interno in grado di rilevare l'angolo di rotazione raggiunto dal perno tramite un potenziometro resistivo e bloccare il motore sul punto desiderato.

I Servomotori sono concepiti per essere pilotati nel modo più semplice possibile, eseguendo la movimentazione senza l'ausilio di circuiterie troppo complesse o l'uso di sistemi a microprocessore.  

Conettore servo

 

Un servomotore dispone solitamente di soli tre fili attestati ad un connettore femmina per pin strip a passo 2.54mm.

 

 

dModulo L298N Dual H-bridge (Controllo motori)

L298N Dual H Bridge Motor Controller pin

 Tra i tanti moduli ora in commercio per pilotare dei motori elettrici in corrente continua c'è L298N Dual H-Bridge Motor 

Controller di piccole dimensioni ed estremamente compatta misura solo 4.3 cm x 4.3 cm x 2.7 cm e dal peso di soli 28 gr.
Si tratta di una scheda driver con finale L298, al suo interno troviamo due ponti H integrati,che supportano un elevato voltaggio (teoricamente sino a 46V) ed elevate correnti (2A per ponte) e

 che possono essere pilotati con livelli in logica TTL. Ciascun ponte può essere disabilitato o abilitato tramite il relativo piedino di enable per comandare un motore passo passo o due motori DC direttamente da Arduino o altri microcontrollori .

Descrizione
1 ENA -  ponticello di abilitazione motore a corrente continua A  Non rimuovere nel caso si  utilizzi un motore passo-passo. Connettersi a un'uscita PWM per il controllo della velocità del motore DC.
2 IN 1
3 IN 2
4 IN 3
5 IN 4
6 ENB -  ponticello di abilitazione motore a corrente continua B  Non rimuovere nel caso si  utilizzi un motore passo-passo. Connettersi a un'uscita PWM per il controllo della velocità del motore DC.
7 Collegare la tensione di alimentazione del motore, massima di 35V DC. Rimuovere il ponticello [10] se la tensione è > 12V DC
8 GND
9 uscita 5V se 12V ponticello in luogo, ideale per alimentare il vostro Arduino (etc)
10 jumper 12V  - rimuovere questo se si utilizza una tensione di alimentazione superiore a 12V DC. Ciò consente l'alimentazione tramite il regolatore 5V di bordo

 

 

 e)Arduino sensor shield

V5

Questa Shield di Espansione IO (Arduino compatibile) è stata progettata per facilitare la connessione fra una scheda Arduino (ad esempio Arduino UNO, Arduino DUE, Arduino Mega) ed altre periferiche quali sensori.
Questa scheda quindi espande i pin di I/O digitali e di input analogici delle schede Arduino UNO, Mega e Duemilanove.

Inoltre, on-board sono presenti i connettori e l'elettronica necessaria per poter utilizzare i moduli wireless semplicemente inserendoli nell'apposito spazio ricavato sulla shield stessa. La scheda supporta l'utilizzo delle SD card, supporta APC220 e comunicazione Bluetooth. Inoltre a bordo vi è un connettore per facilitare il collegamento del Servo motore.

 

 

 Software:
L'applicazione è stata sviluppata con il software ufficiale di Arduino. Ecco un'estratto del programma creato per il progetto:

#include <Servo.h> //Libreria standard del servo
#include <NewPing.h> //Libreria del sensore ad ultrasuoni

//Pin del l298n
const int LeftMotorForward = 7;
const int LeftMotorBackward = 6;
const int RightMotorForward = 4;
const int RightMotorBackward = 5;

//Pin del sensore ad ultrasuoni
#define trig_pin A1 //Ingresso analogico 1
#define echo_pin A2 //Ingresso analogico 2

#define maximum_distance 200
boolean goesForward = false;
int distance = 100;

NewPing sonar(trig_pin, echo_pin, maximum_distance);
Servo servo_motor; //Il nome del nostro servo


void setup(){

pinMode(RightMotorForward, OUTPUT);
pinMode(LeftMotorForward, OUTPUT);
pinMode(LeftMotorBackward, OUTPUT);
pinMode(RightMotorBackward, OUTPUT);

servo_motor.attach(3); //Pin del servo

servo_motor.write(115);
delay(2000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
}

void loop(){

int distanceRight = 0;
int distanceLeft = 0;
delay(50);

if (distance <= 40){
moveStop();
delay(300);
moveBackward();
delay(400);
moveStop();
delay(300);
distanceRight = lookRight();
delay(300);
distanceLeft = lookLeft();
delay(300);

if (distance >= distanceLeft){
turnRight();
moveStop();
}
else{
turnLeft();
moveStop();
}
}
else{
moveForward();
}
distance = readPing();
}

int lookRight(){
servo_motor.write(50);
delay(500);
int distance = readPing();
delay(100);
servo_motor.write(115);
return distance;
}

 

 

Bibliografia

-Arduino.cc

-Canale youtube "Mert arduino and tech"

-Appunti scolastici

-Adrirobot.it

-Eleego.com