Dans le monde, chaque jour de plus en plus populaire parmi les nettoyeurs robotiques. Grâce à ces petites aides, la maison devient beaucoup plus propre et beaucoup moins d'efforts sont consacrés au nettoyage. Il existe de nombreuses modifications différentes des robots, elles diffèrent toutes par leur fonctionnalité, leur taille et d'autres paramètres.
Plus précisément, cet article examinera un exemple de la façon dont
fais-le toi-même Vous pouvez faire un robot simple, qui aspirera lui-même la pièce si nécessaire. Le contrôleur est utilisé comme «cerveau»
Arduino.
Matériaux et outils pour la fabrication du robot:- carte qui contrôle le fonctionnement des moteurs (blindage moteur Arduino);
- Carte Arduino;
- deux moteurs à engrenages (moteurs à 3 volts et une vitesse de rotation d'environ 100 tr / min.);
- roues (peuvent être faites de canettes en aluminium;
- un refroidisseur à partir d'une alimentation d'ordinateur (possible à la fois sur 5V et 12V);
- Alimentation 5V (batterie);
- fils et plaque pour l'installation des éléments radio;
- pour fabriquer l'étui, vous aurez besoin d'un récipient en plastique;
- Un autre petit conteneur pour créer une poubelle;
- colle chaude;
- aimants;
- carton.
Le processus de fabrication du robot:
Première étape. Partie logicielle du robot et croquis:
Le cœur du robot est le contrôleur Arduino. Pour le programmer, vous aurez besoin d'un ordinateur et d'un logiciel spécial.
Pour télécharger le croquis sur la carte, vous aurez besoin du programme Arduino IDE. Ci-dessous, vous pouvez prendre le code de programme du robot et voir le circuit principal.
/*
Programme de contrôle d'un robot à deux moteurs.
Le robot tourne lorsque les moteurs changent de vitesse et de direction.
Les pare-chocs avant sur les côtés gauche et droit détectent les obstacles.
Les sonars à ultrasons peuvent être connectés à des entrées analogiques (testés sur LV-MaxSonar-EZ1):
- placez les broches dans les sonarPins du tableau dans l'ordre suivant: gauche, droite, avant, autres ..
Exemples:
1. uniquement les sonars gauche et droit connectés aux broches 2 et 3: sonarPins [] = {2,3}
2. sondeurs gauche, droit et avant connectés aux broches 2, 3 et 5: sonarPins [] = {2,3,5}
3. seul sonar avant connecté à la broche 5: sonarPins [] = {-1, -1.5}
4. seul sonar gauche connecté à la broche 2: sonarPins [] = {2}
5. seul sonar droit connecté aux broches 3: sonarPins [] = {-1,3}
6,5 sonars connectés aux broches 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Le bouclier moteur est utilisé pour faire fonctionner les moteurs.
*/
const int Baud = 9600; // Vitesse du port UART
// Propriétés du sondeur
int sonarPins [] = {1, 2}; // Analog Pin Nums to sonar sensor Pin AN
const long MinLeftDistance = 20; // Distance gauche minimale autorisée
const long MinRightDistance = 20; // Distance droite minimale autorisée
const long MinFrontDistance = 15; // Distance frontale minimale autorisée
const int SamplesAmount = 15; // plus d'échantillons - mesure plus fluide et décalage plus important
const int SonarDisplayFrequency = 10; // affiche une seule de ces lignes - pas toutes
int sonarDisplayFrequencyCount = 0;
const long Factor = 2,54 / 2;
échantillons longs [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// côté droit
const int pinRightMotorDirection = 4; // ceci peut être marqué sur le bouclier du moteur comme "DIR A"
const int pinRightMotorSpeed = 3; // ceci peut être marqué sur le bouclier du moteur comme "PWM A"
const int pinRightBumper = 2; // où le pare-chocs droit est connecté
// côté gauche
const int pinLeftMotorDirection = 7; // ceci peut être marqué sur le bouclier du moteur comme "DIR B"
const int pinLeftMotorSpeed = 6; // ceci peut être marqué sur le bouclier du moteur comme "PWM B"
const int pinLeftBumper = 8; // où le pare-chocs droit est connecté
// décommenter les 2 lignes suivantes si le bouclier moteur est cassé
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // ceci peut être marqué sur le bouclier du moteur comme "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // cela peut être marqué sur le bouclier du moteur comme "BREAKE B"
// champs
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// définir dans le compteur pendant combien de temps un moteur recule: N / 10 (en millisecondes)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Initialisation
void setup () {
Serial.begin (Baud);
initPins ();
// décommenter les 4 lignes suivantes si le bouclier moteur est cassé
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // désactiver les pauses
// digitalWrite (pinRightMotorBreak, LOW); // désactiver les pauses
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Boucle principale
boucle vide () {
verifyAndSetRightSide ();
verifyAndSetLeftSide ();
processRightSide ();
processLeftSide ();
delay (10); // répéter toutes les 10 millisecondes
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
pour (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
delay (20); // contrôle toutes les 20 millisecondes
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // vérifie si la distance avant minimale autorisée n'est pas atteinte
retour
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // si le compteur n'est pas encore décompté
runLeftMotorBackward (); // exécuter le moteur droit vers l'arrière
countDownWhileMovingToLeft = turnLeftTimeout; // définir le compteur sur la valeur maximale pour démarrer le décompte
}
bool checkCounterIsNotSet (int counter) {
compteur de retour = SamplesAmount)
sampleIndex [pinIndex] = 0;
samples [pinIndex] [sampleIndex [pinIndex]] = valeur;
return true;
}
long CalculateAvarageDistance (int pinIndex) {
moyenne longue = 0;
pour (int i = 0; i moyenne + = échantillons [pinIndex] [i];
return average / SamplesAmount;
}
Deuxième étape Préparation des éléments de base du robot
Le carton est utilisé comme base pour fixer tous les composants du robot, y compris la batterie, les cartes de commande et les moteurs.
La turbine doit être correctement collée ou fixée sur un petit récipient en plastique dans lequel faire un trou pour l'absorption de la saleté. Par la suite, cette conception est collée à la base en carton. De plus, le conteneur doit avoir un trou supplémentaire à travers lequel l'air sortira. Il devrait y avoir un filtre, l'auteur a décidé d'utiliser un tissu synthétique à ces fins.
À l'étape suivante, le refroidisseur doit être collé avec des servos, puis cette conception est installée sur une base en carton.
Troisième étape Nous fabriquons des roues pour le robot
Pour fabriquer les roues, vous devez prendre des canettes en aluminium et en couper les parties supérieure et inférieure. Ensuite, ces éléments sont collés ensemble. Il ne reste plus qu'à fixer correctement les roues aux servomoteurs avec un adhésif thermofusible. Il est important de comprendre que les roues doivent être fixées clairement au centre des arbres des servos. Sinon le robot conduira de travers et consommera de l'énergie.
Quatrième étape Le processus d'assemblage final du robot
Une fois la batterie installée et tous les éléments du robot connectés, il reste à placer la structure dans un boîtier durable. Un grand récipient en plastique est idéal à ces fins. Tout d'abord, des trous doivent être pratiqués dans le nez du corps du robot, à travers lesquels seront sortis des contacts qui donneront un signal électronique lorsque le robot entre en collision avec un obstacle.
Afin que le boîtier puisse être retiré rapidement et facilement, des aimants sont utilisés pour le fixer, dans ce cas, il y en a huit. Des aimants sont collés à l'intérieur de l'aspirateur et au conteneur lui-même, 4 pièces chacun.
C’est tout. Le robot est maintenant assemblé et peut être essayé en pratique. Malgré le fait que le robot ne soit pas en mesure de se recharger seul et ait une capacité plutôt limitée en termes de navigation, il pourra en une demi-heure nettoyer les ordures dans la cuisine ou la petite pièce. Les avantages du robot sont que tous les composants sont faciles à trouver et qu'ils ne sont pas très chers. Sans doute fait maison Vous pouvez affiner en ajoutant de nouveaux capteurs et d'autres éléments.