Nel mondo, ogni giorno sempre più popolare tra i robot pulitori. Grazie a questi piccoli aiutanti, la casa diventa molto più pulita e molto meno sforzi vengono fatti nella pulizia. Esistono molte diverse modifiche dei robot, tutte diverse per funzionalità, dimensioni e altri parametri.
Nello specifico, questo articolo prenderà in considerazione un esempio di come
fallo da solo Puoi creare un semplice robot, che a sua volta aspirerà la stanza quando necessario. Il controller viene utilizzato qui come "cervello"
Arduino.
Materiali e strumenti per la fabbricazione del robot:- scheda che controlla il funzionamento dei motori (protezione motore Arduino);
- scheda Arduino;
- due motori con ingranaggi (motori a 3 volt e una velocità di rotazione di circa 100 rpm.);
- ruote (possono essere realizzate in lattine di alluminio;
- un dispositivo di raffreddamento da un alimentatore per computer (possibile sia su 5V che 12V);
- Alimentazione 5V (batteria);
- fili e piastra per l'installazione di elementi radio;
- per rendere il caso necessario un contenitore di plastica;
- Un altro piccolo contenitore per la creazione di un cestino;
- colla a caldo;
- magneti;
- cartone.
Il processo di fabbricazione del robot:
Primo passo. Parte software del robot e schizzo:
Il cuore del robot è il controller Arduino. Per programmarlo avrai bisogno di un computer e di un software speciale.
Per scaricare lo schizzo sulla scheda, è necessario il programma IDE Arduino. Di seguito puoi prendere il codice del programma del robot e vedere il circuito principale.
/*
Programma per il controllo di un robot con due motori.
Il robot gira quando i motori cambiano la loro velocità e direzione.
I paraurti anteriori sui lati sinistro e destro rilevano ostacoli.
I sonar a ultrasuoni possono essere collegati agli ingressi analogici (testati su LV-MaxSonar-EZ1):
- metti i pin in array sonarPin nel seguente ordine: sinistra, destra, fronte, altri ..
Esempi:
1. solo sonar sinistro e destro collegati ai pin 2 e 3: sonarPins [] = {2,3}
2. ecoscandagli sinistro, destro e anteriore collegati ai pin 2, 3 e 5: sonarPins [] = {2,3,5}
3. solo il sonar anteriore collegato al pin 5: sonarPins [] = {-1, -1.5}
4. ha lasciato solo il sonar collegato al pin 2: sonarPins [] = {2}
5. solo il sonar destro collegato ai pin 3: sonarPins [] = {-1,3}
6.5 sonar collegati ai pin 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Lo schermo del motore viene utilizzato per far funzionare i motori.
*/
const int Baud = 9600; // Velocità della porta UART
// Proprietà del sonar
int sonarPins [] = {1, 2}; // Numeri pin analogici al pin AN del sensore sonar
const long MinLeftDistance = 20; // Distanza minima consentita
const long MinRightDistance = 20; // Distanza minima consentita
const long MinFrontDistance = 15; // Distanza frontale minima consentita
const int SamplesAmount = 15; // più campioni: misurazione più fluida e ritardo maggiore
const int SonarDisplayFrequency = 10; // visualizza solo una di queste righe, non tutte
int sonarDisplayFrequencyCount = 0;
fattore lungo const = 2,54 / 2;
campioni lunghi [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// lato destro
const int pinRightMotorDirection = 4; // questo può essere contrassegnato sulla protezione del motore come "DIR A"
const int pinRightMotorSpeed = 3; // questo può essere contrassegnato sulla protezione del motore come "PWM A"
const int pinRightBumper = 2; // dove è collegato il paraurti destro
// lato sinistro
const int pinLeftMotorDirection = 7; // questo può essere contrassegnato sulla protezione del motore come "DIR B"
const int pinLeftMotorSpeed = 6; // questo può essere contrassegnato sulla protezione del motore come "PWM B"
const int pinLeftBumper = 8; // dove è collegato il paraurti destro
// decommenta le 2 righe successive se Motor Shield presenta delle interruzioni
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // questo può essere contrassegnato sulla protezione del motore come "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // questo può essere contrassegnato sulla protezione del motore come "BREAKE B"
// campi
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// imposta in contro quanto tempo un motore sta tornando indietro: N / 10 (in millisecondi)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Inizializzazione
void setup () {
Serial.begin (Baud);
initPins ();
// decommenta le 4 righe successive se Motor Shield presenta delle interruzioni
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // disattiva le pause
// digitalWrite (pinRightMotorBreak, LOW); // disattiva le pause
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Ciclo principale
void loop () {
confirmAndSetRightSide ();
confirmAndSetLeftSide ();
processRightSide ();
processLeftSide ();
delay (10); // ripeti ogni 10 millisecondi
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
per (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
ritardo (20); // verifica ogni 20 millisecondi
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // controlla se la distanza frontale minima consentita non viene raggiunta
tornare;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // se il contatore non sta ancora eseguendo il conto alla rovescia
runLeftMotorBackward (); // esegue il motore destro all'indietro
countDownWhileMovingToLeft = turnLeftTimeout; // imposta il contatore sul valore massimo per iniziare il conto alla rovescia
}
bool checkCounterIsNotSet (int counter) {
return counter = SamplesAmount)
sampleIndex [pinIndex] = 0;
samples [pinIndex] [sampleIndex [pinIndex]] = valore;
ritorno vero;
}
long compareAvarageDistance (int pinIndex) {
media lunga = 0;
per (int i = 0; i media + = campioni [pinIndex] [i];
return return / SamplesAmount;
}
Secondo passo Preparazione degli elementi base del robot
Il cartone viene utilizzato come base per il fissaggio di tutti i componenti del robot, inclusi batteria, schede di controllo e motori.
La turbina deve essere correttamente incollata o altrimenti fissata su un piccolo contenitore di plastica, in cui deve essere praticato un foro per l'assorbimento dello sporco. Successivamente, questo disegno viene incollato alla base di cartone. Inoltre, il contenitore deve avere un foro aggiuntivo attraverso il quale uscirà l'aria. Dovrebbe esserci un filtro, l'autore ha deciso di utilizzare tessuti sintetici per questi scopi.
Nella fase successiva, il dispositivo di raffreddamento deve essere incollato con i servi, quindi questo design viene installato su una base di cartone.
Terzo passo Realizziamo ruote per il robot
Per realizzare le ruote devi prendere le lattine di alluminio e tagliare le parti superiore e inferiore da esse. Quindi questi elementi vengono incollati insieme. Ora non resta che attaccare correttamente le ruote ai servomotori con adesivo hot melt. È importante capire che le ruote devono essere fissate chiaramente al centro degli alberi dei servi. altrimenti il robot guiderà storto e consumerà energia.
Fase quattro Il processo di assemblaggio finale del robot
Dopo che la batteria è stata installata e tutti gli elementi del robot sono collegati, resta da posizionare la struttura in una custodia resistente. Un grande contenitore di plastica è ottimo per questi scopi. Prima di tutto, devono essere praticati dei fori nel naso del corpo del robot, attraverso i quali verranno emessi contatti che daranno un segnale elettronica quando il robot si scontra con un ostacolo.
Affinché il case possa essere rimosso rapidamente e facilmente, i magneti vengono utilizzati per ripararlo, in questo caso ce ne sono otto. I magneti sono incollati all'interno dell'aspirapolvere e sul contenitore stesso, 4 pezzi ciascuno.
Questo è tutto. Ora il robot è assemblato e può essere provato in pratica. Nonostante il fatto che il robot non sia in grado di ricaricare da solo e abbia una capacità piuttosto limitata in termini di navigazione, in mezz'ora sarà in grado di pulire i rifiuti in cucina o in una piccola stanza. Il vantaggio del robot è che tutti i componenti sono facilmente reperibili e non sono molto costosi. Senza dubbio fatto in casa Puoi perfezionare aggiungendo nuovi sensori e altri elementi.