Al món, cada dia són més populars entre els netejadors robòtics. Gràcies a aquests ajudants tan petits, la casa es fa molt més neta i es fa molt menys esforç a la neteja. Hi ha moltes modificacions diferents de robots, totes difereixen en funció de la funcionalitat, la mida i la resta de paràmetres.
En concret, aquest article plantejarà un exemple de com
fes-ho tu mateix Podeu fer un robot senzill, que per si mateix, buidarà l’habitació quan sigui necessari. El controlador s'utilitza com a "cervell"
Arduino.
Materials i eines per a la fabricació del robot:- placa que controla el funcionament dels motors (blindatge del motor Arduino);
- Junta Arduino;
- dos motors amb engranatges (motors a 3 volts i velocitat de rotació d’uns 100 rpm.);
- rodes (poden ser de llaunes d'alumini;
- un refrigerador d'una font d'alimentació informàtica (possible tant a 5V com a 12 V);
- Alimentació 5V (bateria);
- cables i plaques per a la instal·lació d’elements de ràdio;
- per fer la maleta necessitareu un envàs de plàstic;
- Un altre petit contenidor per crear una paperera;
- cola calenta;
- imants;
- cartró.
El procés de fabricació del robot:
Primer pas. Programari part del robot i esbós:
El cor del robot és el controlador Arduino. Per programar-lo necessitareu un ordinador i un programari especial.
Per descarregar l'esbós al tauler, necessitareu el programa IDE Arduino. A continuació, podeu agafar el codi del programa del robot i veure el circuit principal.
/*
Programa de control d’un robot amb dos motors.
El robot gira quan els motors canvien la seva velocitat i direcció.
Els para-xocs davanters als costats esquerre i dret detecten els obstacles.
Els sonars d'ultrasons es poden connectar a entrades analògiques (provades amb LV-MaxSonar-EZ1):
- poseu els pins a la matriu de sonarPins en l'ordre següent: esquerre, dret, frontal, altres.
Exemples:
1. Només sonars esquerre i dret connectats als pins 2 i 3: sonarPins [] = {2,3}
2. Sonars esquerre, dret i frontal connectats als pins 2, 3 i 5: sonarPins [] = {2,3,5}
3. Només un sonar frontal connectat amb el pin 5: sonarPins [] = {-1, -1,5}
4. Només es queda el sonar connectat al pin 2: sonarPins [] = {2}
5. Només sonar dret connectat als pins 3: sonarPins [] = {-1,3}
6,5 sonars connectats als pins 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
El blindatge del motor s'utilitza per fer funcionar motors.
*/
const int Baud = 9600; // Velocitat del port UART
// Propietats del sonar
int sonarPins [] = {1, 2}; // Num. Pin Analògics al sensor sonar Pin AN
const long MinLeftDistance = 20; // Distància mínima permesa a l'esquerra
const long MinRightDistance = 20; // Distància mínima permesa
const long MinFrontDistance = 15; // Distància mínima permesa davant
const int SamplesAmount = 15; // més mostres: mesurament més suau i retard més gran
const int SonarDisplayFrequency = 10; // mostrar només una d’aquestes línies: no totes
int sonarDisplayFrequencyCount = 0;
const factor llarg = 2,54 / 2;
mostres llargues [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// costat dret
const int pinRightMotorDirection = 4; // es pot marcar a l'escut del motor com a "DIR A"
const int pinRightMotorSpeed = 3; // es pot marcar a l'escut del motor com a "PWM A"
const int pinRightBumper = 2; // on està connectat el para-xocs dret
// costat esquerre
const int pinLeftMotorDirection = 7; // es pot marcar a l'escut del motor com a "DIR B"
const int pinLeftMotorSpeed = 6; // es pot marcar a l'escut del motor com a "PWM B"
const int pinLeftBumper = 8; // on està connectat el para-xocs dret
// descompte les properes dues línies si el motor Shield té pauses
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // es pot marcar a l'escut del motor com a "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // es pot marcar a l'escut del motor com a "BREAKE B"
// camps
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// posa en marxa el temps en què un motor retrocedeix: N / 10 (en mil·lisegons)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Inicialització
void setup () {
Serial.begin (Baud);
initPins ();
// descompte les properes quatre línies si el motor Shield té pauses
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, BAIX); // desactiva els descansos
// digitalWrite (pinRightMotorBreak, BAIX); // desactiva els descansos
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Llaç principal
void loop () {
verificarAndSetRightSide ();
verificarAndSetLeftSide ();
processRightSide ();
processLeftSide ();
retard (10); // repeteix cada 10 mil·lisegons
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
for (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
retard (20); // revisar cada 20 milisegons
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // comprova si no s'arriba a la distància frontal mínima permesa
tornar
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // si el comptador encara no compta
runLeftMotorBackward (); // executar el motor dret enrere
countDownWhileMovingToLeft = turnLeftTimeout; // configureu el comptador al valor màxim per iniciar-lo al compte enrere
}
bool checkCounterIsNotSet (comptador d’int) {
comptador de devolució = Import de Samples)
sampleIndex [pinIndex] = 0;
sample [pinIndex] [sampleIndex [pinIndex]] = valor;
tornar veritat;
}
llarg calculaAvarageDistance (int pinIndex) {
mitjana llarga = 0;
de (int i = 0; i mitjana + = mostres [pinIndex] [i];
mitjana de retorn / SamplesAmount;
}
Pas Segon Preparació dels elements bàsics del robot
El cartró s'utilitza com a base per fixar tots els components del robot, incloses les bateries, taulers de control i motors.
La turbina ha d’estar enganxada o fixada correctament en un petit recipient de plàstic, en el qual s’ha de fer un forat per a l’absorció de brutícia. Posteriorment, aquest disseny s’enganxa a la base de cartró. A més, el contenidor ha de tenir un forat addicional per on sortirà l’aire. Hi hauria d’haver un filtre, l’autor va decidir utilitzar un teixit sintètic per a aquests propòsits.
A la següent etapa, el refrigerador ha d’estar enganxat amb servos, i aquest disseny s’instal·la sobre una base de cartró.
Tercer Pas Fem rodes per al robot
Per fer les rodes heu d’agafar llaunes d’alumini i tallar-ne les parts superiors i inferiors. A continuació, s’enganxen aquests elements. Ara només queda enganxar adequadament les rodes als servomotors amb adhesiu de fusió calenta. És important comprendre que les rodes s’han de fixar clarament al centre dels servidors. En cas contrari el robot conduirà malament i usarà energia.
Quatre pas El procés de muntatge del robot final
Després d’instal·lar la bateria i connectar tots els elements del robot, queda col·locar l’estructura en un cas durador. Un gran envàs de plàstic és ideal per a aquests propòsits. En primer lloc, s’han de fer forats al nas del cos del robot, a través dels quals sortiran contactes que donaran un senyal electrònica quan el robot xoca amb un obstacle.
Per tal de treure el cas ràpidament i fàcilment, s’utilitzen imants per arreglar-lo, en aquest cas n’hi ha vuit. Els imants estan enganxats a l’interior de l’aspirador i al contenidor mateix, de 4 peces cadascun.
Això és tot. Ara el robot està muntat i es pot provar a la pràctica. Tot i que el robot no es pot recarregar per si sol i té una capacitat bastant limitada en termes de navegació, en mitja hora podrà netejar les escombraries a la cuina o a l’habitació petita. Els avantatges del robot són que es poden trobar fàcilment tots els components i no són molt cars. Sens dubte casolans Podeu afinar afegint nous sensors i altres elements.